Σημείωμα
Η πρόσβαση σε αυτήν τη σελίδα απαιτεί εξουσιοδότηση. Μπορείτε να δοκιμάσετε να εισέλθετε ή να αλλάξετε καταλόγους.
Η πρόσβαση σε αυτήν τη σελίδα απαιτεί εξουσιοδότηση. Μπορείτε να δοκιμάσετε να αλλάξετε καταλόγους.
Χρησιμοποιήστε τη βάση δεδομένων ειδώλου στο Microsoft Fabric για να υποβάλετε ερώτημα ένθετα δεδομένα JSON που προέρχονται από τη βάση δεδομένων Azure Cosmos για NoSQL.
Προαπαιτούμενα
- Μια υπάρχουσα βάση δεδομένων Azure Cosmos για λογαριασμό NoSQL.
- Εάν δεν έχετε συνδρομή Azure, δοκιμάστε το Azure Cosmos DB για NoSQL δωρεάν.
- Εάν έχετε μια υπάρχουσα συνδρομή Azure, δημιουργήστε μια νέα βάση δεδομένων Azure Cosmos για λογαριασμό NoSQL.
- Μια υπάρχουσα χωρητικότητα Fabric. Εάν δεν έχετε υπάρχοντες εκχωρημένους πόρους, ξεκινήστε μια δοκιμαστική έκδοση Fabric.
- Η βάση δεδομένων Azure Cosmos για λογαριασμό NoSQL πρέπει να ρυθμιστεί για κατοπτρισμό Fabric. Για περισσότερες πληροφορίες, ανατρέξτε στο θέμα Απαιτήσεις λογαριασμού.
Φιλοδώρημα
Συνιστάται να χρησιμοποιήσετε ένα αντίγραφο δοκιμής ή ανάπτυξης των υπαρχόντων δεδομένων Azure Cosmos DB που μπορούν να ανακτηθούν γρήγορα από ένα αντίγραφο ασφαλείας.
Δημιουργία ένθετων δεδομένων μέσα στη βάση δεδομένων προέλευσης
Δημιουργήστε στοιχεία JSON εντός του λογαριασμού σας Azure Cosmos DB για 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 για 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)όπουnθα μπορούσε να είναι οποιοσδήποτε αριθμός. Όσο χαμηλότερο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
Υποβολή ερωτήματος σε βασικά ένθετα δεδομένα με αυτόματη εξαγωγή συμπερασμάτων σχήματος
Ακολουθήστε τα βήματα 1-3 στο προηγούμενο παράδειγμα. Με το ίδιο σύνολο δεδομένων, μπορούμε να δημιουργήσουμε ένα ερώτημα για την ισοπέδωση των δεδομένων χωρίς να χρειάζεται να ορίσουμε ρητά το σχήμα.
Εκτελέστε αυτό το ερώτημα για να αναπτύξετε τον
itemsπίνακα χωρίςOPENJSONνα ορίσετε το σχήμα. Αυτό ισοπεδώνει τον πίνακα στοιχείων κατά ένα επίπεδο διαχωρίζοντας κάθε ένθετο αντικείμενο σε μια νέα γραμμή.SELECT t.name, t.id, t.country, p.* FROM OrdersDB_TestC as t CROSS APPLY OPENJSON(t.items) pΕκτελέστε αυτό το ερώτημα για να αναπτύξετε περαιτέρω τον
itemsπίνακα χωρίςOPENJSONνα ορίσετε το σχήμα. Αυτό ισοπεδώνει τον πίνακα στοιχείων δύο επίπεδα διαχωρίζοντας κάθε ιδιότητα σε κάθε ένθετο αντικείμενο σε μια νέα γραμμή.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
Δημιουργία βαθιά ένθετων δεδομένων
Για να βασιστούμε σε αυτό το παράδειγμα ένθετων δεδομένων, ας προσθέσουμε ένα παράδειγμα βαθιά ένθετων δεδομένων.
Μεταβείτε στον λογαριασμό σας 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 QNote
Κατά την επέκταση
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 QNote
Τα όρια ιδιοτήτων για ένθετα επίπεδα δεν επιβάλλονται σε αυτήν την εμπειρία ερωτήματος T-SQL.
Σχετικό περιεχόμενο
- Συνήθεις ερωτήσεις: Βάσεις δεδομένων κατοπτρισμού Microsoft Fabric από τη βάση δεδομένων Azure Cosmos
- Αντιμετώπιση προβλημάτων: Βάσεις δεδομένων κατοπτρισμού Microsoft Fabric από τη βάση δεδομένων Azure Cosmos
- Περιορισμοί σε βάσεις δεδομένων κατοπτρισμού Microsoft Fabric από τη βάση δεδομένων Azure Cosmos