Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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.
Vereiste voorwaarden
- 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.
 
Aanbeveling
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
TestCde 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
itemsmatrix uit te breiden metOPENJSON. Deze query maakt gebruikOUTER APPLYvan 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 PAanbeveling
Wanneer u de gegevenstypen kiest
OPENJSON, kan het gebruikvarchar(max)voor tekenreekstypen de prestaties van query's verslechteren. Gebruik in plaats daarvanvarchar(n)whernkan een willekeurig getal zijn. Hoe lagernis de kans dat u betere queryprestaties ziet.Gebruik
CROSS APPLYin de volgende query om alleen items met eenitemsmatrix 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
Eenvoudige geneste gegevens opvragen met automatische schemadeductie
Volg stap 1-3 in het vorige voorbeeld. Met dezelfde gegevensset kunnen we een query maken om de gegevens plat te maken zonder het schema expliciet te hoeven definiëren.
Voer deze query uit om de
itemsmatrix uit te breiden metOPENJSONzonder het schema te definiëren. Hierdoor wordt de itemmatrix één niveau afgevlakt door elk genest object in een nieuwe rij te scheiden.SELECT t.name, t.id, t.country, p.* FROM OrdersDB_TestC as t CROSS APPLY OPENJSON(t.items) pVoer deze query uit om de
itemsmatrix verder uit te breiden zonderOPENJSONhet schema te definiëren. Hierdoor wordt de itemmatrix twee niveaus afgevlakt door elke eigenschap binnen elk geneste object in een nieuwe rij te scheiden.SELECT t.name, t.id, t.country, q.* FROM OrdersDB_TestC as t CROSS APPLY OPENJSON(t.items) q OUTER APPLY OPENJSON(t.items) 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
TestDde 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
TestDtabel en selecteer opnieuw Nieuwe SQL-query .Voer deze query uit om alle niveaus van geneste gegevens uit te breiden met behulp van
OUTER APPLYeen 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 QOpmerking
Wanneer u uitvouwt
packages,itemswordt deze weergegeven als JSON, die optioneel kan worden uitgebreid. Deitemseigenschap 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 QOpmerking
Eigenschapslimieten voor geneste niveaus worden niet afgedwongen in deze T-SQL-query-ervaring.