Κοινή χρήση μέσω


Τρόπος: Υποβολή ερωτήματος σε ένθετα δεδομένα στο Microsoft Fabric με κατοπτρικές βάσεις δεδομένων από το Azure Cosmos DB (Προεπισκόπηση)

Χρησιμοποιήστε τη βάση δεδομένων κατοπτρισμού στο Microsoft Fabric για να υποβάλετε ερωτήματα σε ένθετα δεδομένα JSON που προέρχονται από το Azure Cosmos DB για NoSQL.

Σημαντικό

Το κατοπτρικό αντίγραφο για το Azure Cosmos DB είναι αυτήν τη στιγμή σε προεπισκόπηση. Οι φόρτοι εργασίας παραγωγής δεν υποστηρίζονται κατά τη διάρκεια της προεπισκόπησης. Προς το παρόν, υποστηρίζονται μόνο οι λογαριασμοί Azure Cosmos DB για NoSQL.

Προαπαιτούμενα στοιχεία

Φιλοδώρημα

Κατά τη διάρκεια της δημόσιας προεπισκόπησης, συνιστάται να χρησιμοποιήσετε ένα αντίγραφο δοκιμής ή ανάπτυξης των υπαρχόντων δεδομένων σας Azure Cosmos DB που μπορούν να ανακτηθούν γρήγορα από ένα αντίγραφο ασφαλείας.

Δημιουργία ένθετης δεδομένων στη βάση δεδομένων προέλευσης

Δημιουργήστε στοιχεία JSON στον λογαριασμό σας Azure Cosmos DB for NoSQL που περιέχουν διάφορα επίπεδα ένθετα δεδομένων JSON.

  1. Μεταβείτε στον λογαριασμό σας Azure Cosmos DB στην πύλη Azure.

  2. Επιλέξτε Εξερεύνηση δεδομένων από το μενού πόρου.

  3. Χρησιμοποιήστε το + Νέο κοντέινερ για να δημιουργήσετε ένα νέο κοντέινερ. Για αυτόν τον οδηγό, ονομάστε το κοντέινερ TestC. Το αντίστοιχο όνομα βάσης δεδομένων είναι αυθαίρετο.

  4. Χρησιμοποιήστε την επιλογή + Νέο στοιχείο πολλές φορές για να δημιουργήσετε και να αποθηκεύσετε αυτά τα πέντε στοιχεία 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. Εάν δεν είστε βέβαιοι για τον τρόπο ρύθμισης παραμέτρων κατοπτρισμού, ανατρέξτε στο εκπαιδευτικό βοήθημα ρύθμισης παραμέτρων βάσης δεδομένων κατοπτρισμού.

  1. Μεταβείτε στην πύλη Fabric.

  2. Δημιουργήστε μια νέα σύνδεση και κατοπτρικό βάση δεδομένων χρησιμοποιώντας τα διαπιστευτήρια του λογαριασμού σας Azure Cosmos DB.

  3. Περιμένετε μέχρι την αναπαραγωγή να ολοκληρωθεί το αρχικό στιγμιότυπο δεδομένων.

Υποβολή ερωτήματος σε βασικά ένθετα δεδομένα

Τώρα, χρησιμοποιήστε το τελικό σημείο ανάλυσης SQL για να δημιουργήσετε ένα ερώτημα που μπορεί να χειριστεί απλά ένθετα δεδομένα JSON.

  1. Μεταβείτε στη βάση δεδομένων κατοπτρισμού στην πύλη Fabric.

  2. Μεταβείτε από Κατοπτρικό Azure Cosmos DB σε τελικό σημείο ανάλυσης SQL.

    Στιγμιότυπο οθόνης του επιλογέα για εναλλαγή μεταξύ στοιχείων στην πύλη Fabric.

  3. Ανοίξτε το μενού περιβάλλοντος για τον πίνακα δοκιμής και επιλέξτε Νέο ερώτημα SQL.

  4. Εκτελέστε αυτό το ερώτημα για να αναπτύξετε τον 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) wher n μπορεί να είναι οποιοσδήποτε αριθμός. Όσο πιο χαμηλό n είναι, τόσο πιο πιθανό είναι να δείτε καλύτερες επιδόσεις ερωτημάτων.

  5. Χρησιμοποιήστε το στο επόμενο ερώτημα για να εμφανίσετε 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. Μεταβείτε στον λογαριασμό σας Azure Cosmos DB στην πύλη Azure.

  2. Επιλέξτε Εξερεύνηση δεδομένων από το μενού πόρου.

  3. Χρησιμοποιήστε το + Νέο κοντέινερ για να δημιουργήσετε ένα νέο κοντέινερ. Για αυτόν τον οδηγό, ονομάστε το κοντέινερ TestD. Το αντίστοιχο όνομα βάσης δεδομένων είναι αυθαίρετο.

  4. Χρησιμοποιήστε την επιλογή + Νέο στοιχείο πολλές φορές για να δημιουργήσετε και να αποθηκεύσετε αυτό το στοιχείο 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.

  1. Ανοίξτε το μενού περιβάλλοντος για τον TestD πίνακα και επιλέξτε ξανά Νέο ερώτημα SQL.

  2. Εκτελέστε αυτό το ερώτημα για να αναπτύξετε όλα τα επίπεδα ένθετών δεδομένων χρησιμοποιώντας το 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, οι οποίες μπορούν επίσης προαιρετικά να αναπτυχθούν.

  3. Τέλος, εκτελέστε ένα ερώτημα που επιλέγει πότε θα αναπτυχθούν συγκεκριμένα επίπεδα ένθεσης.

    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.