Megosztás a következőn keresztül:


Útmutató: Beágyazott adatok lekérdezése a Microsoft Fabric tükrözött adatbázisaiban az Azure Cosmos DB-ből (előzetes verzió)

A Microsoft Fabric tükrözött adatbázisával lekérdezheti az Azure Cosmos DB for NoSQL-hez készült beágyazott JSON-adatokat.

Fontos

Az Azure Cosmos DB tükrözése jelenleg előzetes verzióban érhető el. Az éles számítási feladatok nem támogatottak az előzetes verzióban. Jelenleg csak a NoSQL-fiókokhoz készült Azure Cosmos DB támogatott.

Előfeltételek

Tipp.

A nyilvános előzetes verzióban ajánlott a meglévő Azure Cosmos DB-adatok tesztelési vagy fejlesztési másolatának használata, amely biztonsági másolatból gyorsan helyreállítható.

Beágyazott adatok létrehozása a forrásadatbázisban

Hozzon létre olyan JSON-elemeket az Azure Cosmos DB for NoSQL-fiókjában, amelyek különböző szintű beágyazott JSON-adatokat tartalmaznak.

  1. Lépjen az Azure Cosmos DB-fiókjára az Azure Portalon.

  2. Válassza az Adatkezelőt az erőforrásmenüben.

  3. Új tároló létrehozása az + Új tároló használatával. Ebben az útmutatóban nevezze el a tárolót TestC. A megfelelő adatbázisnév tetszőleges.

  4. Ezt az öt JSON-elemet többször is használhatja az + Új elem beállítással.

    {
      "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"
    }
    

A tükrözés beállítása és előfeltételei

Konfigurálja a tükrözést az Azure Cosmos DB for NoSQL-adatbázishoz. Ha nem tudja, hogyan konfigurálhatja a tükrözést, tekintse meg a tükrözött adatbázis konfigurálását ismertető oktatóanyagot.

  1. Lépjen a Háló portálra.

  2. Hozzon létre egy új kapcsolatot és tükrözött adatbázist az Azure Cosmos DB-fiók hitelesítő adataival.

  3. Várja meg, amíg a replikáció befejezi az adatok kezdeti pillanatképét.

Egyszerű beágyazott adatok lekérdezése

Most az SQL Analytics-végpont használatával hozzon létre egy lekérdezést, amely képes kezelni az egyszerű beágyazott JSON-adatokat.

  1. Lépjen a tükrözött adatbázisra a Háló portálon.

  2. Váltás tükrözött Azure Cosmos DB-ről SQL Analytics-végpontra.

    Képernyőkép a hálóportál elemei közötti váltáshoz használni kívánt választóról.

  3. Nyissa meg a teszttábla helyi menüjét, és válassza az Új SQL-lekérdezés lehetőséget.

  4. A lekérdezés futtatásával bontsa ki a tömböt a items következővel OPENJSON: . Ez a lekérdezés olyan további elemeket tartalmaz OUTER APPLY , amelyek nem rendelkeznek elemtömbbel.

    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
    

    Tipp.

    Az adattípusok OPENJSONkiválasztásakor a sztringtípusok használata varchar(max) ronthatja a lekérdezés teljesítményét. Ehelyett a wher n használata varchar(n) bármilyen szám lehet. Minél alacsonyabb n , annál valószínűbb, hogy jobb lekérdezési teljesítményt fog látni.

  5. A CROSS APPLY következő lekérdezésben csak tömböt tartalmazó items elemeket jeleníthet meg.

    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 
    

Mélyen beágyazott adatok létrehozása

Ha erre a beágyazott adat példára szeretne építeni, adjunk hozzá egy mélyen beágyazott adat példáját.

  1. Lépjen az Azure Cosmos DB-fiókjára az Azure Portalon.

  2. Válassza az Adatkezelőt az erőforrásmenüben.

  3. Új tároló létrehozása az + Új tároló használatával. Ebben az útmutatóban nevezze el a tárolót TestD. A megfelelő adatbázisnév tetszőleges.

  4. A JSON-elem létrehozásához és mentéséhez használja többször az + Új elem lehetőséget.

    {
      "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"
      }
    }
    

Mélyen beágyazott adatok lekérdezése

Végül hozzon létre egy T-SQL-lekérdezést, amely mélyen beágyazott adatokat talál egy JSON-sztringben.

  1. Nyissa meg a táblázat helyi menüjét, és válassza ismét az TestD Új SQL-lekérdezés lehetőséget.

  2. Futtassa ezt a lekérdezést a beágyazott adatok összes szintjének kibontásához a szállítmány használatával 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 
    

    Feljegyzés

    A kibontáskor packagesitems JSON-ként jelenik meg, amely opcionálisan kibontható. A items tulajdonság JSOn altulajdonságokkal rendelkezik, amelyek opcionálisan kibonthatók is.

  3. Végül futtasson egy lekérdezést, amely meghatározza, hogy mikor bontsa ki a beágyazás bizonyos szintjeit.

    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 
    

    Feljegyzés

    Ebben a T-SQL-lekérdezési felületen a beágyazott szintek tulajdonságkorlátai nem lesznek kényszerítve.