Informationen zur Abfrage verschachtelter Daten in gespiegelten Microsoft Fabric-Datenbanken aus Azure Cosmos DB (Vorschau)
Verwenden Sie die gespiegelte Datenbank in Microsoft Fabric, um verschachtelte JSON-Daten abzufragen, die von Azure Cosmos DB for NoSQL stammen.
Wichtig
Die Spiegelung für Azure Cosmos DB befindet sich derzeit in der Vorschau. Produktionsworkloads werden in der Vorschauversion nicht unterstützt. Derzeit werden nur Azure Cosmos DB for NoSQL-Konten unterstützt.
Voraussetzungen
- Ein vorhandenes Azure Cosmos DB for NoSQL-Konto.
- Wenn Sie kein Azure-Abonnement besitzen, testen Sie Azure Cosmos DB for NoSQL kostenlos.
- Wenn Sie über ein Azure-Abonnement verfügen, erstellen Sie einen neuen Azure Cosmos DB for NoSQL-Cluster.
- Eine vorhandene Fabric-Kapazität. Wenn Sie noch keine Kapazität haben, starten Sie einen Fabric-Test.
- Aktivieren Sie die Spiegelung in Ihrem Fabric-Mandanten oder -Arbeitsbereich. Wenn das Feature nicht bereits aktiviert ist, aktivieren Sie die Spiegelung in Ihrem Fabric-Mandanten.
- Das Azure Cosmos DB for NoSQL-Konto muss für die Fabric-Spiegelung konfiguriert sein. Weitere Informationen finden Sie unter Kontoanforderungen.
Tipp
Es wird empfohlen, während der öffentlichen Vorschau eine Test- oder Entwicklungskopie Ihrer bestehenden Azure Cosmos DB-Daten zu verwenden, die schnell aus einem Backup wiederhergestellt werden kann.
Erstellen geschachtelter Daten innerhalb der Quelldatenbank
Erstellen Sie JSON-Elemente innerhalb Ihres Azure Cosmos DB for NoSQL-Kontos, die verschiedene Ebenen von verschachtelten JSON-Daten enthalten.
Navigieren Sie im Azure-Portal zu Ihrem Azure Cosmos DB-Konto.
Wählen Sie im Ressourcenmenü Data Explorer aus.
Wählen Sie + neuer Container aus, um einen neuen Container zu erstellen. Benennen Sie für diese Anleitung den Container
TestC
. Der entsprechende Datenbankname ist beliebig.Verwenden Sie die Option + neues Element mehrmals, um diese fünf JSON-Elemente zu erstellen und zu speichern.
{ "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" }
Einrichten der Spiegelung und Voraussetzungen
Konfigurieren Sie die Spiegelung für die Azure Cosmos DB for NoSQL-Datenbank. Wenn Sie sich nicht sicher sind, wie Sie die Spiegelung konfigurieren, lesen Sie die Anleitung zur Konfiguration gespiegelter Datenbanken.
Navigieren Sie zum Fabric-Portal.
Erstellen Sie eine neue Verbindung und eine gespiegelte Datenbank mit den Anmeldedaten Ihres Azure Cosmos DB-Kontos.
Warten Sie, bis die Replikation die Anfangsmomentaufnahme der Daten abgeschlossen hat.
Abfragen grundlegender geschachtelter Daten
Verwenden Sie nun den SQL-Analyse-Endpunkt, um eine Abfrage zu erstellen, die einfache verschachtelte JSON-Daten verarbeiten kann.
Navigieren zur gespiegelten Datenbank im Fabric-Portal.
Wechseln Sie von Gespiegelte Azure Cosmos DB zum SQL-Analytics-Endpunkt.
Öffnen Sie das Kontextmenü für die Testtabelle, und wählen Sie Neue SQL-Abfrage aus.
Führen Sie diese Abfrage aus, um das
items
-Array mitOPENJSON
zu erweitern. Diese Abfrage verwendetOUTER APPLY
, um zusätzliche Elemente einzubeziehen, die möglicherweise kein Element-Array haben.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
Wenn Sie die Datentypen in
OPENJSON
auswählen, kann die Verwendung vonvarchar(max)
für Zeichenkettentypen die Abfrageleistung beeinträchtigen. Verwenden Sie stattdessenvarchar(n)
überall dort, won
eine beliebige Zahl sein kann. Je niedrigern
ist, desto wahrscheinlicher wird die Abfrageleistung verbessert.Verwenden Sie
CROSS APPLY
in der nächsten Abfrage, um nur Elemente mit einemitems
-Array anzuzeigen.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
Erstellen tief verschachtelter Daten
Lassen Sie uns auf diesem Beispiel für verschachtelte Daten aufbauen und ein Beispiel für tief verschachtelte Daten hinzufügen.
Navigieren Sie im Azure-Portal zu Ihrem Azure Cosmos DB-Konto.
Wählen Sie im Ressourcenmenü Data Explorer aus.
Wählen Sie + neuer Container aus, um einen neuen Container zu erstellen. Benennen Sie für diese Anleitung den Container
TestD
. Der entsprechende Datenbankname ist beliebig.Verwenden Sie die Option + neues Element mehrmals, um dieses JSON-Element zu erstellen und zu speichern.
{ "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" } }
Tief verschachtelte Daten abfragen
Erstellen Sie schließlich eine T-SQL-Abfrage, die tief in einer JSON-Zeichenkette verschachtelte Daten finden kann.
Öffnen Sie das Kontextmenü für die
TestD
-Tabelle und wählen Sie erneut Neue SQL-Abfrage.Führen Sie diese Abfrage aus, um alle Ebenen der verschachtelten Daten mit
OUTER APPLY
mit der Konsignation zu erweitern.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
Hinweis
Beim Erweitern von
packages
wirditems
als JSON dargestellt, das optional erweitert werden kann. Dieitems
-Eigenschaft hat Untereigenschaften wie JSON, die ebenfalls optional erweitert werden können.Führen Sie schließlich eine Abfrage aus, die festlegt, wann bestimmte Verschachtelungsebenen erweitert werden sollen.
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
Hinweis
Eigenschaftsgrenzen für verschachtelte Ebenen werden in dieser T-SQL-Abfrageerfahrung nicht erzwungen.