Sådan forespørger du om indlejrede data i spejlede Microsoft Fabric-databaser fra Azure Cosmos DB (prøveversion)
Brug den spejlede database i Microsoft Fabric til at forespørge om indlejrede JSON-data fra Azure Cosmos DB til NoSQL.
Vigtigt
Spejling til Azure Cosmos DB er i øjeblikket en prøveversion. Produktionsarbejdsbelastninger understøttes ikke under prøveversionen. I øjeblikket understøttes kun Azure Cosmos DB for NoSQL-konti.
Forudsætninger
- En eksisterende Azure Cosmos DB til NoSQL-konto.
- Hvis du ikke har et Azure-abonnement, kan du prøve Azure Cosmos DB til NoSQL gratis.
- Hvis du har et eksisterende Azure-abonnement, skal du oprette en ny Azure Cosmos DB til NoSQL-konto.
- En eksisterende Fabric-kapacitet. Hvis du ikke har en eksisterende kapacitet, kan du starte en Fabric-prøveversion.
- Azure Cosmos DB for NoSQL-kontoen skal være konfigureret til Fabric-spejling. Du kan få flere oplysninger under Kontokrav.
Tip
I den offentlige prøveversion anbefales det at bruge en test- eller udviklingskopi af dine eksisterende Azure Cosmos DB-data, der hurtigt kan gendannes fra en sikkerhedskopi.
Opret indlejrede data i kildedatabasen
Opret JSON-elementer i din Azure Cosmos DB for NoSQL-konto, der indeholder forskellige niveauer af indlejrede JSON-data.
Vælg Data Explorer i ressourcemenuen.
Brug + Ny objektbeholder til at oprette en ny objektbeholder. I denne vejledning skal du navngive objektbeholderen
TestC
. Det tilsvarende databasenavn er vilkårligt.Brug indstillingen + Nyt element flere gange til at oprette og gemme disse fem JSON-elementer.
{ "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" }
Konfigurer spejling og forudsætninger
Konfigurer spejling for Azure Cosmos DB for NoSQL-databasen. Hvis du er usikker på, hvordan du konfigurerer spejling, skal du se selvstudiet konfigurer spejlvendt database.
Opret en ny forbindelse og en spejlet database ved hjælp af legitimationsoplysningerne til din Azure Cosmos DB-konto.
Vent på, at replikeringen afslutter det første snapshot af data.
Forespørg om grundlæggende indlejrede data
Brug nu SQL Analytics-slutpunktet til at oprette en forespørgsel, der kan håndtere enkle indlejrede JSON-data.
Gå til den spejlede database på Fabric-portalen.
Skift fra Mirrored Azure Cosmos DB til SQL Analytics-slutpunktet.
Åbn genvejsmenuen for testtabellen, og vælg Ny SQL-forespørgsel.
Kør denne forespørgsel for at udvide matrixen
items
medOPENJSON
. Denne forespørgsel brugerOUTER APPLY
til at inkludere ekstra elementer, der muligvis ikke har en elementmatrix.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
Tip
Når du vælger datatyperne i
OPENJSON
, kan brugen afvarchar(max)
til strengtyper forværre forespørgslens ydeevne.varchar(n)
Brug whern
kan i stedet være et vilkårligt tal. Jo laveren
er, jo mere sandsynligt er det, at du får vist en bedre ydeevne af forespørgsler.Bruges
CROSS APPLY
i den næste forespørgsel til kun at vise elementer med enitems
matrix.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
Opret dybt indlejrede data
Lad os tilføje et dybt indlejret dataeksempel for at bygge videre på dette indlejrede dataeksempel.
Vælg Data Explorer i ressourcemenuen.
Brug + Ny objektbeholder til at oprette en ny objektbeholder. I denne vejledning skal du navngive objektbeholderen
TestD
. Det tilsvarende databasenavn er vilkårligt.Brug indstillingen + Nyt element flere gange til at oprette og gemme dette JSON-element.
{ "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" } }
Forespørg om dybt indlejrede data
Endelig skal du oprette en T-SQL-forespørgsel, der kan finde data dybt indlejret i en JSON-streng.
Åbn genvejsmenuen for tabellen,
TestD
og vælg Ny SQL-forespørgsel igen.Kør denne forespørgsel for at udvide alle niveauer af indlejrede data ved hjælp af
OUTER APPLY
med 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
Bemærk
Når du udvider
packages
,items
vises som JSON, som eventuelt kan udvides. Egenskabenitems
har underegenskaber som JSOn, som også kan udvides.Til sidst skal du køre en forespørgsel, der vælger, hvornår bestemte indlejringsniveauer skal udvides.
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
Bemærk
Egenskabsgrænser for indlejrede niveauer gennemtvinges ikke i denne T-SQL-forespørgselsoplevelse.