Procedure: Query's uitvoeren op geneste gegevens in gespiegelde Databases van Microsoft Fabric vanuit Azure Cosmos DB (preview)
Gebruik de gespiegelde database in Microsoft Fabric om een query uit te voeren op geneste JSON-gegevens uit Azure Cosmos DB for NoSQL.
Belangrijk
Spiegeling voor Azure Cosmos DB is momenteel beschikbaar als preview-versie. Productieworkloads worden niet ondersteund tijdens de preview-versie. Momenteel worden alleen Azure Cosmos DB for NoSQL-accounts ondersteund.
Vereisten
- Een bestaand Azure Cosmos DB for NoSQL-account.
- Als u geen Azure-abonnement hebt, kunt u Gratis Azure Cosmos DB voor NoSQL proberen.
- Als u een bestaand Azure-abonnement hebt, maakt u een nieuw Azure Cosmos DB for NoSQL-account.
- Een bestaande infrastructuurcapaciteit. Als u geen bestaande capaciteit hebt, start u een Fabric-proefversie.
- Het Azure Cosmos DB for NoSQL-account moet zijn geconfigureerd voor Fabric-spiegeling. Zie accountvereisten voor meer informatie.
Tip
Tijdens de openbare preview kunt u het beste een test- of ontwikkelingskopie van uw bestaande Azure Cosmos DB-gegevens gebruiken die snel vanuit een back-up kunnen worden hersteld.
Geneste gegevens maken in de brondatabase
Maak JSON-items in uw Azure Cosmos DB for NoSQL-account met verschillende niveaus van geneste JSON-gegevens.
Navigeer naar uw Azure Cosmos DB-account in Azure Portal.
Selecteer Data Explorer in het resourcemenu.
Gebruik + Nieuwe container om een nieuwe container te maken. Geef voor deze handleiding de container
TestC
de naam. De bijbehorende databasenaam is willekeurig.Gebruik de optie + Nieuw item meerdere keren om deze vijf JSON-items te maken en op te slaan .
{ "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" }
Spiegeling en vereisten instellen
Spiegeling configureren voor de Azure Cosmos DB for NoSQL-database. Als u niet zeker weet hoe u spiegeling configureert, raadpleegt u de zelfstudie gespiegelde database configureren.
Navigeer naar de Fabric-portal.
Maak een nieuwe verbinding en gespiegelde database met behulp van de referenties van uw Azure Cosmos DB-account.
Wacht tot de replicatie de eerste momentopname van gegevens heeft voltooid.
Query uitvoeren op basis van geneste gegevens
Gebruik nu het SQL Analytics-eindpunt om een query te maken waarmee eenvoudige geneste JSON-gegevens kunnen worden verwerkt.
Navigeer naar de gespiegelde database in de Fabric-portal.
Schakel over van gespiegelde Azure Cosmos DB naar sql-analyse-eindpunt.
Open het contextmenu voor de testtabel en selecteer Nieuwe SQL-query.
Voer deze query uit om de
items
matrix uit te breiden metOPENJSON
. Deze query maakt gebruikOUTER APPLY
van extra items die mogelijk geen itemsmatrix bevatten.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
Wanneer u de gegevenstypen kiest
OPENJSON
, kan het gebruikvarchar(max)
voor tekenreekstypen de prestaties van query's verslechteren. Gebruik in plaats daarvanvarchar(n)
whern
kan een willekeurig getal zijn. Hoe lagern
is de kans dat u betere queryprestaties ziet.Gebruik
CROSS APPLY
in de volgende query om alleen items met eenitems
matrix weer te geven.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
Diep geneste gegevens maken
Laten we een voorbeeld van geneste gegevens toevoegen om voort te bouwen op dit voorbeeld van geneste gegevens.
Navigeer naar uw Azure Cosmos DB-account in Azure Portal.
Selecteer Data Explorer in het resourcemenu.
Gebruik + Nieuwe container om een nieuwe container te maken. Geef voor deze handleiding de container
TestD
de naam. De bijbehorende databasenaam is willekeurig.Gebruik de optie + Nieuw item meerdere keren om dit JSON-item te maken en op te slaan .
{ "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" } }
Diep geneste gegevens opvragen
Maak ten slotte een T-SQL-query waarmee gegevens diep genest kunnen worden gevonden in een JSON-tekenreeks.
Open het contextmenu voor de
TestD
tabel en selecteer opnieuw Nieuwe SQL-query .Voer deze query uit om alle niveaus van geneste gegevens uit te breiden met behulp van
OUTER APPLY
een zending.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
Notitie
Wanneer u uitvouwt
packages
,items
wordt deze weergegeven als JSON, die optioneel kan worden uitgebreid. Deitems
eigenschap heeft subeigenschappen als JSOn, die eventueel ook kan worden uitgebreid.Voer ten slotte een query uit die bepaalt wanneer u specifieke geneste niveaus wilt uitbreiden.
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
Notitie
Eigenschapslimieten voor geneste niveaus worden niet afgedwongen in deze T-SQL-query-ervaring.