Slik gjør du det: Spørre nestede data i Microsoft Fabric speilede databaser fra Azure Cosmos DB (forhåndsvisning)
Bruk den speilede databasen i Microsoft Fabric til å spørre nestede JSON-data hentet fra Azure Cosmos DB for NoSQL.
Viktig
Speiling for Azure Cosmos DB er for øyeblikket i forhåndsversjon. Produksjonsarbeidsbelastninger støttes ikke under forhåndsvisning. For øyeblikket støttes bare Azure Cosmos DB for NoSQL-kontoer.
Forutsetning
- En eksisterende Azure Cosmos DB for NoSQL-konto.
- Hvis du ikke har et Azure-abonnement, kan du prøve Azure Cosmos DB for NoSQL gratis.
- Hvis du har et eksisterende Azure-abonnement, kan du opprette en ny Azure Cosmos DB for NoSQL-konto.
- En eksisterende stoffkapasitet. Hvis du ikke har en eksisterende kapasitet, kan du starte en fabric-prøveversjon.
- Azure Cosmos DB for NoSQL-kontoen må konfigureres for Stoffspeiling. Hvis du vil ha mer informasjon, kan du se kontokrav.
Tips
Under den offentlige forhåndsvisningen anbefales det å bruke en test- eller utviklingskopi av eksisterende Azure Cosmos DB-data som raskt kan gjenopprettes fra en sikkerhetskopi.
Opprette nestede data i kildedatabasen
Opprett JSON-elementer i Azure Cosmos DB for NoSQL-kontoen som inneholder ulike nivåer av nestede JSON-data.
Gå til Azure Cosmos DB-kontoen i Azure-portalen.
Velg Datautforsker fra ressursmenyen.
Bruk + Ny beholder til å opprette en ny beholder. Gi navn til beholderen
TestC
for denne veiledningen. Det tilsvarende databasenavnet er vilkårlig.Bruk alternativet + Nytt element flere ganger for å opprette og lagre disse fem JSON-elementene.
{ "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" }
Oppsett av speiling og forutsetninger
Konfigurer speiling for Azure Cosmos DB for NoSQL-databasen. Hvis du er usikker på hvordan du konfigurerer speiling, kan du se den konfigurer speilvendte databaseopplæringen.
Opprett en ny tilkobling og speilvendt database ved hjelp av Legitimasjonen for Azure Cosmos DB-kontoen.
Vent til replikering fullfører det første øyeblikksbildet av data.
Spørring av grunnleggende nestede data
Bruk nå SQL Analytics-endepunktet til å opprette en spørring som kan håndtere enkle nestede JSON-data.
Gå til den speilvendte databasen i Fabric-portalen.
Bytt fra Mirrored Azure Cosmos DB til SQL Analytics-endepunkt.
Åpne hurtigmenyen for testtabellen, og velg Ny SQL-spørring.
Kjør denne spørringen for å utvide matrisen
items
medOPENJSON
. Denne spørringen brukerOUTER APPLY
til å inkludere ekstra elementer som kanskje ikke har en elementmatrise.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
Tips
Når du velger datatypene i
OPENJSON
, kan det å brukevarchar(max)
for strengtyper forverre spørringsytelsen. Bruk whervarchar(n)
kan i stedetn
være et hvilket som helst tall. Jo laveren
er, jo mer sannsynlig vil du se bedre spørringsytelse.Bruk
CROSS APPLY
den neste spørringen til bare å vise elementer med en matriseitems
.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
Opprett dypt nestede data
Hvis du vil bygge videre på dette nestede dataeksemplet, kan vi legge til et dypt nestet dataeksempel.
Gå til Azure Cosmos DB-kontoen i Azure-portalen.
Velg Datautforsker fra ressursmenyen.
Bruk + Ny beholder til å opprette en ny beholder. Gi navn til beholderen
TestD
for denne veiledningen. Det tilsvarende databasenavnet er vilkårlig.Bruk alternativet + Nytt element flere ganger for å opprette og lagre dette JSON-elementet.
{ "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" } }
Spør dypt nestede data
Til slutt kan du opprette en T-SQL-spørring som kan finne data dypt nestet i en JSON-streng.
Åpne hurtigmenyen for
TestD
tabellen, og velg Ny SQL-spørring på nytt.Kjør denne spørringen for å utvide alle nivåer av nestede data ved hjelp av
OUTER APPLY
forsendelse.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
Merk
Når du utvider
packages
,items
representeres som JSON, som eventuelt kan utvides. Egenskapenitems
har delegenskaper som JSOn, som også kan utvides.Til slutt kjører du en spørring som velger når du vil utvide bestemte nestenivåer.
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
Merk
Egenskapsgrenser for nestede nivåer håndheves ikke i denne T-SQL-spørringsopplevelsen.