Τρόπος: Υποβολή ερωτήματος σε ένθετα δεδομένα στο Microsoft Fabric με κατοπτρικές βάσεις δεδομένων από το Azure Cosmos DB (Προεπισκόπηση)
Χρησιμοποιήστε τη βάση δεδομένων κατοπτρισμού στο Microsoft Fabric για να υποβάλετε ερωτήματα σε ένθετα δεδομένα JSON που προέρχονται από το Azure Cosmos DB για NoSQL.
Σημαντικό
Το κατοπτρικό αντίγραφο για το Azure Cosmos DB είναι αυτήν τη στιγμή σε προεπισκόπηση. Οι φόρτοι εργασίας παραγωγής δεν υποστηρίζονται κατά τη διάρκεια της προεπισκόπησης. Προς το παρόν, υποστηρίζονται μόνο οι λογαριασμοί Azure Cosmos DB για NoSQL.
Προαπαιτούμενα στοιχεία
- Ένας υπάρχων λογαριασμός Azure Cosmos DB για NoSQL.
- Εάν δεν έχετε μια συνδρομή Azure, δοκιμάστε το Azure Cosmos DB για δωρεάν NoSQL.
- Εάν έχετε μια υπάρχουσα συνδρομή Azure, δημιουργήστε έναν νέο λογαριασμό Azure Cosmos DB για λογαριασμό NoSQL.
- Ένα υπάρχον σύνολο εκχωρημένων πόρων Fabric. Εάν δεν έχετε ένα υπάρχον σύνολο εκχωρημένων πόρων, ξεκινήστε μια δοκιμαστική έκδοση Fabric.
- Ο λογαριασμός Azure Cosmos DB for NoSQL πρέπει να ρυθμιστεί για κατοπτρικά Fabric. Για περισσότερες πληροφορίες, ανατρέξτε στις απαιτήσεις λογαριασμού.
Φιλοδώρημα
Κατά τη διάρκεια της δημόσιας προεπισκόπησης, συνιστάται να χρησιμοποιήσετε ένα αντίγραφο δοκιμής ή ανάπτυξης των υπαρχόντων δεδομένων σας Azure Cosmos DB που μπορούν να ανακτηθούν γρήγορα από ένα αντίγραφο ασφαλείας.
Δημιουργία ένθετης δεδομένων στη βάση δεδομένων προέλευσης
Δημιουργήστε στοιχεία JSON στον λογαριασμό σας Azure Cosmos DB for NoSQL που περιέχουν διάφορα επίπεδα ένθετα δεδομένων JSON.
Μεταβείτε στον λογαριασμό σας Azure Cosmos DB στην πύλη Azure.
Επιλέξτε Εξερεύνηση δεδομένων από το μενού πόρου.
Χρησιμοποιήστε το + Νέο κοντέινερ για να δημιουργήσετε ένα νέο κοντέινερ. Για αυτόν τον οδηγό, ονομάστε το κοντέινερ
TestC
. Το αντίστοιχο όνομα βάσης δεδομένων είναι αυθαίρετο.Χρησιμοποιήστε την επιλογή + Νέο στοιχείο πολλές φορές για να δημιουργήσετε και να αποθηκεύσετε αυτά τα πέντε στοιχεία JSON.
{ "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" }
Ρύθμιση κατοπτρισμού και προαπαιτούμενων
Ρυθμίστε τις παραμέτρους κατοπτρισμού για τη βάση δεδομένων Azure Cosmos DB for NoSQL. Εάν δεν είστε βέβαιοι για τον τρόπο ρύθμισης παραμέτρων κατοπτρισμού, ανατρέξτε στο εκπαιδευτικό βοήθημα ρύθμισης παραμέτρων βάσης δεδομένων κατοπτρισμού.
Μεταβείτε στην πύλη Fabric.
Δημιουργήστε μια νέα σύνδεση και κατοπτρικό βάση δεδομένων χρησιμοποιώντας τα διαπιστευτήρια του λογαριασμού σας Azure Cosmos DB.
Περιμένετε μέχρι την αναπαραγωγή να ολοκληρωθεί το αρχικό στιγμιότυπο δεδομένων.
Υποβολή ερωτήματος σε βασικά ένθετα δεδομένα
Τώρα, χρησιμοποιήστε το τελικό σημείο ανάλυσης SQL για να δημιουργήσετε ένα ερώτημα που μπορεί να χειριστεί απλά ένθετα δεδομένα JSON.
Μεταβείτε στη βάση δεδομένων κατοπτρισμού στην πύλη Fabric.
Μεταβείτε από Κατοπτρικό Azure Cosmos DB σε τελικό σημείο ανάλυσης SQL.
Ανοίξτε το μενού περιβάλλοντος για τον πίνακα δοκιμής και επιλέξτε Νέο ερώτημα SQL.
Εκτελέστε αυτό το ερώτημα για να αναπτύξετε τον
items
πίνακα μεOPENJSON
. Αυτό το ερώτημαOUTER APPLY
χρησιμοποιείται για να συμπεριλάβει επιπλέον στοιχεία που ενδέχεται να μην έχουν πίνακα στοιχείων.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
Φιλοδώρημα
Όταν επιλέγετε τους τύπους δεδομένων στο
OPENJSON
, η χρήσηvarchar(max)
του για τύπους συμβολοσειρών μπορεί να επιδεινώσει την απόδοση των ερωτημάτων. Αντί για αυτό, χρησιμοποιήστε τη συνάρτησηvarchar(n)
whern
μπορεί να είναι οποιοσδήποτε αριθμός. Όσο πιο χαμηλόn
είναι, τόσο πιο πιθανό είναι να δείτε καλύτερες επιδόσεις ερωτημάτων.Χρησιμοποιήστε το στο επόμενο ερώτημα για να εμφανίσετε
CROSS APPLY
μόνο στοιχεία με ένανitems
πίνακα.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
Δημιουργία ένθετης εσωτερικά ένθετης δεδομένων
Για να βασιστείτε σε αυτό το παράδειγμα ένθετης δεδομένων, ας προσθέσουμε ένα παράδειγμα ένθετα δεδομένων σε βάθος.
Μεταβείτε στον λογαριασμό σας Azure Cosmos DB στην πύλη Azure.
Επιλέξτε Εξερεύνηση δεδομένων από το μενού πόρου.
Χρησιμοποιήστε το + Νέο κοντέινερ για να δημιουργήσετε ένα νέο κοντέινερ. Για αυτόν τον οδηγό, ονομάστε το κοντέινερ
TestD
. Το αντίστοιχο όνομα βάσης δεδομένων είναι αυθαίρετο.Χρησιμοποιήστε την επιλογή + Νέο στοιχείο πολλές φορές για να δημιουργήσετε και να αποθηκεύσετε αυτό το στοιχείο JSON.
{ "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" } }
Υποβολή ερωτήματος σε ένθετα δεδομένα με εσωτερικές ένθετες
Τέλος, δημιουργήστε ένα ερώτημα T-SQL που μπορεί να βρει δεδομένα σε βάθος ένθετα σε μια συμβολοσειρά JSON.
Ανοίξτε το μενού περιβάλλοντος για τον
TestD
πίνακα και επιλέξτε ξανά Νέο ερώτημα SQL.Εκτελέστε αυτό το ερώτημα για να αναπτύξετε όλα τα επίπεδα ένθετών δεδομένων χρησιμοποιώντας το
OUTER APPLY
με αποστολή.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
Σημείωμα
Κατά την ανάπτυξη του
packages
,items
αντιπροσωπεύεται ως JSON, το οποίο μπορεί προαιρετικά να επεκταθεί. Ηitems
ιδιότητα διαθέτει δευτερεύουσες ιδιότητες ως JSOn, οι οποίες μπορούν επίσης προαιρετικά να αναπτυχθούν.Τέλος, εκτελέστε ένα ερώτημα που επιλέγει πότε θα αναπτυχθούν συγκεκριμένα επίπεδα ένθεσης.
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
Σημείωμα
Τα όρια ιδιοτήτων για ένθεστα επίπεδα δεν επιβάλλονται σε αυτήν την εμπειρία ερωτήματος T-SQL.