Jaa


Ohjeet: Kyselyn tekeminen sisäkkäisistä tiedoista Microsoft Fabricissa peilatut tietokannat Azure Cosmos DB:stä (esikatselu)

Käytä Microsoft Fabricin peilattua tietokantaa sisäkkäisten JSON-tietojen kyselyyn, jotka ovat peräisin Azure Cosmos DB for NoSQL:stä.

Tärkeä

Azure Cosmos DB:n peilaus on tällä hetkellä esikatselussa. Tuotannon kuormituksia ei tueta esikatselun aikana. Tällä hetkellä tuetaan vain Azure Cosmos DB for NoSQL -tilejä.

Edellytykset

Vihje

Julkisen esikatselun aikana on suositeltavaa käyttää olemassa olevien Azure Cosmos DB -tietojen testi- tai kehityskopiota, joka voidaan palauttaa nopeasti varmuuskopiosta.

Sisäkkäisiä tietoja luodaan lähdetietokannassa

Luo Azure Cosmos DB for NoSQL -tilillesi JSON-kohteita, jotka sisältävät erilaisia sisäkkäisten JSON-tietojen tasoja.

  1. Siirry Azure Cosmos DB -tilillesi Azure-portaali.

  2. Valitse Resurssienhallinta resurssivalikosta.

  3. Luo uusi säilö käyttämällä + Uusi säilö -komentoa. Anna tälle oppaalle nimi säilölle TestC. Vastaava tietokannan nimi on mielivaltainen.

  4. Käytä + Uusi kohde -asetusta useita kertoja näiden viiden JSON-kohteen luomiseen ja tallentamiseen.

    {
      "id": "123-abc-xyz",
      "name": "A 13",
      "country": "USA",
      "items": [
        {
          "purchased": "11/23/2022",
          "order_id": "3432-2333-2234-3434",
          "item_description": "item1"
        },
        {
          "purchased": "01/20/2023",
          "order_id": "3431-3454-1231-8080",
          "item_description": "item2"
        },
        {
          "purchased": "02/20/2023",
          "order_id": "2322-2435-4354-2324",
          "item_description": "item3"
        }
      ]
    }
    
    {
      "id": "343-abc-def",
      "name": "B 22",
      "country": "USA",
      "items": [
        {
          "purchased": "01/20/2023",
          "order_id": "2431-2322-1545-2322",
          "item_description": "book1"
        },
        {
          "purchased": "01/21/2023",
          "order_id": "3498-3433-2322-2320",
          "item_description": "book2"
        },
        {
          "purchased": "01/24/2023",
          "order_id": "9794-8858-7578-9899",
          "item_description": "book3"
        }
      ]
    }
    
    {
      "id": "232-abc-x43",
      "name": "C 13",
      "country": "USA",
      "items": [
        {
          "purchased": "04/03/2023",
          "order_id": "9982-2322-4545-3546",
          "item_description": "clothing1"
        },
        {
          "purchased": "05/20/2023",
          "order_id": "7989-9989-8688-3446",
          "item_description": "clothing2"
        },
        {
          "purchased": "05/27/2023",
          "order_id": "9898-2322-1134-2322",
          "item_description": "clothing3"
        }
      ]
    }
    
    {
      "id": "677-abc-yuu",
      "name": "D 78",
      "country": "USA"
    }
    
    {
      "id": "979-abc-dfd",
      "name": "E 45",
      "country": "USA"
    }
    

Määritä peilaus ja edellytykset

Määritä peilaus Azure Cosmos DB for NoSQL -tietokannalle. Jos et ole varma peilauksen määrittämisestä, katso opit määrittämään peilatun tietokannan opetusohjelman.

  1. Siirry Fabric-portaaliin.

  2. Luo uusi yhteys ja peilattu tietokanta Azure Cosmos DB -tilisi tunnistetiedoilla.

  3. Odota, että replikointi viimeistelee tietojen ensimmäisen tilannevedoksen.

Kyselyn perussijaintitiedot

Luo nyt SQL-analytiikan päätepisteen avulla kysely, joka pystyy käsittelemään yksinkertaisia sisäkkäisiä JSON-tietoja.

  1. Siirry peilattuun tietokantaan Fabric-portaalissa.

  2. Vaihda Mirrored Azure Cosmos DB:stä SQL-analytiikan päätepisteeseen.

    Näyttökuvassa on Fabric-portaalin kohteiden välillä vaihtamiseen käytettävissä oleva valitsin.

  3. Avaa testitaulukon pikavalikko ja valitse Uusi SQL-kysely.

  4. Laajenna matriisi suorittamalla items OPENJSONtämä kysely käyttämällä . Tämän kyselyn avulla OUTER APPLY se sisältää ylimääräisiä kohteita, joilla ei välttämättä ole kohdematriisia.

    SELECT 
        t.name, 
        t.id, 
        t.country, 
        P.purchased, 
        P.order_id, 
        P.item_description 
    FROM OrdersDB_TestC AS t
    OUTER APPLY OPENJSON(t.items) WITH
    (
        purchased datetime '$.purchased',
        order_id varchar(100) '$.order_id',
        item_description varchar(200) '$.item_description'
    ) as P
    

    Vihje

    Kun valitset tietotyyppejä kohteessa OPENJSON, -menetelmän käyttäminen varchar(max) merkkijonotyypeille voi heikentää kyselyn suorituskykyä. Käytä sen sijaan merkkiä varchar(n) wher n mikä tahansa luku. Mitä pienempi n on, sitä todennäköisempää on, että näet paremman kyselyn suorituskyvyn.

  5. Käytä CROSS APPLY kohdetta seuraavassa kyselyssä näyttämään vain kohteet, joilla on items matriisi.

    SELECT
        t.name,
        t.id,
        t.country,
        P.purchased,
        P.order_id,
        P.item_description 
    FROM
        OrdersDB_TestC as t CROSS APPLY OPENJSON(t.items) WITH (
            purchased datetime '$.purchased',
            order_id varchar(100) '$.order_id',
            item_description varchar(200) '$.item_description' 
        ) as P 
    

Syvyksien sisäkkäisiä tietoja luominen

Tämän sisäkkäisen tietoesimerkin pohjalta lisäämme syvemmin sisäkkäisen tietoesimerkin.

  1. Siirry Azure Cosmos DB -tilillesi Azure-portaali.

  2. Valitse Resurssienhallinta resurssivalikosta.

  3. Luo uusi säilö käyttämällä + Uusi säilö -komentoa. Anna tälle oppaalle nimi säilölle TestD. Vastaava tietokannan nimi on mielivaltainen.

  4. Luo ja tallenna tämä JSON-kohde usean kerran +Uusi kohde -toiminnolla.

    {
      "id": "eadca09b-e618-4090-a25d-b424a26c2361",
      "entityType": "Package",
      "packages": [
        {
          "packageid": "fiwewsb-f342-jofd-a231-c2321",
          "storageTemperature": "69",
          "highValue": true,
          "items": [
            {
              "id": "1",
              "name": "Item1",
              "properties": {
                "weight": "2",
                "isFragile": "no"
              }
            },
            {
              "id": "2",
              "name": "Item2",
              "properties": {
                "weight": "4",
                "isFragile": "yes"
              }
            }
          ]
        },
        {
          "packageid": "d24343-dfdw-retd-x414-f34345",
          "storageTemperature": "78",
          "highValue": false,
          "items": [
            {
              "id": "3",
              "name": "Item3",
              "properties": {
                "weight": "12",
                "isFragile": "no"
              }
            },
            {
              "id": "4",
              "name": "Item4",
              "properties": {
                "weight": "12",
                "isFragile": "no"
              }
            }
          ]
        }
      ],
      "consignment": {
        "consignmentId": "ae21ebc2-8cfc-4566-bf07-b71cdfb37fb2",
        "customer": "Humongous Insurance",
        "deliveryDueDate": "2020-11-08T23:38:50.875258Z"
      }
    }
    

Kyselyn syvemmin sisäkkäisiä tietoja

Luo lopuksi T-SQL-kysely, joka löytää JSON-merkkijonoon syvällä sisäkkäin olevia tietoja.

  1. Avaa taulukon pikavalikko TestD ja valitse uudelleen Uusi SQL-kysely .

  2. Suorita tämä kysely, jos haluat laajentaa sisäkkäisten tietojen kaikki tasot lähetystä käyttämällä OUTER APPLY .

    SELECT
        P.id,
        R.packageId,
        R.storageTemperature,
        R.highValue,
        G.id,
        G.name,
        H.weight,
        H.isFragile,
        Q.consignmentId,
        Q.customer,
        Q.deliveryDueDate 
    FROM
        OrdersDB_TestD as P CROSS APPLY OPENJSON(P.packages) WITH ( packageId varchar(100) '$.packageid',
        storageTemperature INT '$.storageTemperature',
        highValue varchar(100) '$.highValue',
        items nvarchar(MAX) AS JSON ) as R 
    OUTER APPLY OPENJSON (R.items) WITH (
        id varchar(100) '$.id',
        name varchar(100) '$.name',
        properties nvarchar(MAX) as JSON 
    ) as G OUTER APPLY OPENJSON(G.properties) WITH  (
        weight INT '$.weight',
        isFragile varchar(100) '$.isFragile'
    ) as H OUTER APPLY OPENJSON(P.consignment) WITH  (
        consignmentId varchar(200) '$.consignmentId',
        customer varchar(100) '$.customer',
        deliveryDueDate Date '$.deliveryDueDate'
    ) as Q 
    

    Muistiinpano

    Kun laajennetaan packages, items se esitetään JSON-muodossa, jota voidaan valinnaisesti laajentaa. - items ominaisuuden aliominaisuudet ovat JSOn, ja ne voidaan myös halutessaan laajentaa.

  3. Suorita lopuksi kysely, joka valitsee milloin voit laajentaa tiettyjä sisäkkäisten tasojen tasoja.

    SELECT
        P.id,
        R.packageId,
        R.storageTemperature,
        R.highValue,
        R.items,
        Q.consignmentId,
        Q.customer,
        Q.deliveryDueDate 
    FROM
        OrdersDB_TestD as P CROSS APPLY OPENJSON(P.packages) WITH (
            packageId varchar(100) '$.packageid',
            storageTemperature INT '$.storageTemperature',
            highValue varchar(100) '$.highValue',
            items nvarchar(MAX) AS JSON
        ) as R 
    OUTER APPLY OPENJSON(P.consignment) WITH  (
        consignmentId varchar(200) '$.consignmentId',
        customer varchar(100) '$.customer',
        deliveryDueDate Date '$.deliveryDueDate'
    ) as Q 
    

    Muistiinpano

    Sisäkkäisten tasojen ominaisuusrajoituksia ei pakoteta tässä T-SQL-kyselykokemuksessa.