Muistiinpano
Tälle sivulle pääsy edellyttää valtuutusta. Voit yrittää kirjautua sisään tai vaihtaa hakemistoja.
Tälle sivulle pääsy edellyttää valtuutusta. Voit yrittää vaihtaa hakemistoja.
Microsoft Fabricin peilatun tietokannan avulla voit tehdä kyselyjä sisäkkäisistä JSON-tiedoista, jotka on peräisin Azure Cosmos DB for NoSQL:stä.
Prerequisites
- Aiemmin luotu Azure Cosmos DB for NoSQL -tili.
- Jos sinulla ei ole Azure-tilausta, kokeile Azure Cosmos DB for NoSQL:ää maksutta.
- Jos sinulla on aiemmin luotu Azure-tilaus, luo uusi Azure Cosmos DB for NoSQL -tili.
- Olemassa oleva Fabric-kapasiteetti. Jos sinulla ei ole aiemmin luotua kapasiteettia, aloita Fabric-kokeilu.
- Azure Cosmos DB for NoSQL -tili on määritettävä Fabric-peilausta varten. Lisätietoja on kohdassa Tilin vaatimukset.
Juomaraha
On suositeltavaa käyttää testi- tai kehityskopiota olemassa olevasta Azure Cosmos DB -datastasi, joka voidaan palauttaa nopeasti varmuuskopiosta.
Sisäkkäisten tietojen luominen lähdetietokantaan
Luo Azure Cosmos DB for NoSQL -tilillesi JSON-kohteita, jotka sisältävät eritasoisia sisäkkäisiä JSON-tietoja.
Siirry Azure Cosmos DB -tilillesi Azure-portaalissa.
Valitse resurssivalikosta Resurssienhallinta .
Käytä + Uusi säilö luodaksesi uuden säilön. Nimeä tätä opasta varten säilö
TestC. Vastaava tietokannan nimi on mielivaltainen.Käytä + Uusi kohde -vaihtoehtoa useita kertoja näiden viiden JSON-kohteen luomiseen ja tallentamiseen .
{ "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" }
Määritä peilaus ja edellytykset
Määritä Azure Cosmos DB for NoSQL -tietokannan peilaus. Jos et ole varma, miten peilaus määritetään, katso peilatun tietokannan määrittämisen opetusohjelma.
Siirry Fabric-portaaliin.
Luo uusi yhteys ja peilattu tietokanta käyttämällä Azure Cosmos DB -tilisi tunnistetietoja.
Odota, että replikointi viimeistelee tietojen alkuperäisen tilannevedoksen.
Sisäkkäisten perustietojen kysely
Luo nyt SQL-analytiikan päätepisteen avulla kysely, joka pystyy käsittelemään yksinkertaisia sisäkkäisiä JSON-tietoja.
Siirry peilattuun tietokantaan Fabric-portaalissa.
Vaihda peilatusta Azure Cosmos DB:stäSQL-analytiikan päätepisteeseen.
Avaa testitaulukon pikavalikko ja valitse Uusi SQL-kysely.
Suorita tämä kysely laajentaaksesi taulukkoa
itemskomennollaOPENJSON. Tämä kyselyOUTER APPLYkäyttää ylimääräisten kohteiden sisällyttämistä, joissa ei ehkä ole items-matriisia.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 PJuomaraha
Kun valitset tietotyyppejä kohdassa
OPENJSON, merkkijonotyyppien käyttäminenvarchar(max)voi heikentää kyselyn suorituskykyä. Käytä sen sijaanvarchar(n)sitä, mikänvoi olla mikä tahansa numero. Mitä pienempinon, sitä todennäköisemmin näet paremman kyselyn suorituskyvyn.Käytä
CROSS APPLYseuraavassa kyselyssä, jos haluat näyttää vain kohteet, joissa onitemsmatriisi.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
Sisäkkäisten perustietojen kysely automaattisen rakenteen päättelyn avulla
Noudata edellisen esimerkin vaiheita 1–3. Samalla tietojoukolla voimme luoda kyselyn tietojen yhdistämiseksi ilman, että rakennetta tarvitsee määrittää eksplisiittisesti.
Suorita tämä kysely, jos haluat laajentaa matriisia
itemsOPENJSONmäärittämättä rakennetta. Tämä tasoittaa alkiomatriyin yhden tason erottamalla jokaisen sisäkkäisen objektin uudelle riville.SELECT t.name, t.id, t.country, p.* FROM OrdersDB_TestC as t CROSS APPLY OPENJSON(t.items) pSuorita tämä kysely, jos haluat laajentaa taulukkoa
itemsOPENJSONedelleen määrittämättä rakennetta. Tämä tasoittaa alkiomatriyin kaksi tasoa erottamalla kunkin sisäkkäisen objektin jokaisen ominaisuuden uudelle riville.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
Syvästi sisäkkäisten tietojen luominen
Jos haluat rakentaa tämän sisäkkäisen dataesimerkin, lisätään syvästi sisäkkäinen tietoesimerkki.
Siirry Azure Cosmos DB -tilillesi Azure-portaalissa.
Valitse resurssivalikosta Resurssienhallinta .
Käytä + Uusi säilö luodaksesi uuden säilön. Nimeä tätä opasta varten säilö
TestD. Vastaava tietokannan nimi on mielivaltainen.Käytä + Uusi kohde -vaihtoehtoa useita kertoja tämän JSON-kohteen luomiseen ja tallentamiseen .
{ "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" } }
Syvästi sisäkkäisten tietojen kysely
Luo lopuksi T-SQL-kysely, joka voi löytää syvästi JSON-merkkijonoon sisäkkäin olevia tietoja.
Avaa
TestDtaulukon pikavalikko ja valitse Uusi SQL-kysely uudelleen.Suorita tämä kysely, jos haluat laajentaa sisäkkäisten tietojen kaikki tasot käyttämällä
OUTER APPLYlähetystä.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
Laajennettaessa
packages,itemsesitetään JSON-muodossa, joka voidaan valinnaisesti laajentaa. Kiinteistölläitemson JSOn-aliominaisuuksia, joita voidaan myös valinnaisesti laajentaa.Suorita lopuksi kysely, joka valitsee, milloin tietyt sisäkkäiset tasot laajennetaan.
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
Sisäkkäisten tasojen ominaisuusrajoituksia ei pakoteta tässä T-SQL-kyselykokemuksessa.