Adatok Azure Cosmos DB lekérdezése kiszolgáló nélküli SQL a Azure Synapse Linkben

A kiszolgáló nélküli SQL-készlet lehetővé teszi, hogy közel valós időben elemezze a Azure Synapse Azure Cosmos DB Link használatával engedélyezett Azure Cosmos DB-tárolókban lévő adatokat anélkül, hogy ez hatással lenne a tranzakciós számítási feladatok teljesítményére. Ismerős T-SQL-szintaxist kínál az elemzési tárolóból történő adatlekérdezéshez, és integrált kapcsolódást biztosít számos üzletiintelligencia- (BI-) és alkalmi lekérdezési eszközhez a T-SQL felületén keresztül.

A lekérdezéshez Azure Cosmos DB OPENROWSET függvénnyel támogatott a teljes SELECT felület, amely a függvények és operátorok SQL is tartalmazza. A lekérdezés eredményeit is tárolhatja, amely adatokat olvas be az Azure Cosmos DB-ból, valamint az Azure Blob Storage-ben vagy az Azure Data Lake Storage-ben, ha külső táblát hoz létre kijelölésként (CETAS). Jelenleg nem tárolhat kiszolgáló nélküli lekérdezési SQL a tárolókészlet lekérdezési eredményeit, Azure Cosmos DB CETAS használatával.

Ebből a cikkből megtudhatja, hogyan írhat olyan kiszolgáló nélküli SQL-készletet tartalmazó lekérdezést, amely adatokat fog lekérdezni az Azure Cosmos DB Link használatával engedélyezett Azure Synapse-tárolókból. Ebben az oktatóanyagban további információt kaphat a kiszolgáló nélküli SQL-nézetek Azure Cosmos DB tárolókról való építéséről és azok Power BI modellekhez való csatlakoztatásával kapcsolatban. Ez az oktatóanyag egy jól meghatározott sémával Azure Cosmos DB tárolót használ. Emellett tekintse meg azt a learn-modult is, amely azt is bemutatja, hogyan lehet Azure Cosmos DB serverless SQL használatával Azure Synapse Analytics

Előfeltételek

  • Győződjön meg arról, hogy előkészítette az elemzési tárolót:
    • Elemzési tároló engedélyezése a Cosmos DB tárolókon.
    • Szerezze be a kapcsolati sztringet egy csak olvasható kulccsal, amely az elemzési tároló lekérdezéséhez használható.
    • A tároló eléréséhez használt csak olvasható kulcs Cosmos DB le
  • Győződjön meg arról, hogy alkalmazta az összes ajánlott gyakorlatot,például:
    • Győződjön meg arról Cosmos DB hogy az elemzési tár ugyanabban a régióban van, mint a kiszolgáló nélküli SQL készlet.
    • Győződjön meg arról, hogy az ügyfélalkalmazás (Power BI Analysis service) ugyanabban a régióban van, mint a kiszolgáló nélküli SQL készlet.
    • Ha nagy mennyiségű (nagyobb, mint 80 GB) adatot ad vissza, érdemes lehet gyorsítótárazó réteget használni, például az Analysis Servicest, és betölteni a 80 GB-nél kisebb partíciókat az Analysis Services-modellbe.
    • Ha sztringoszlopokkal szűri az adatokat, győződjön meg arról, hogy a függvényt a lehető legkisebb típusú explicit záradékkal használja (például ne használja a OPENROWSET VARCHAR(1000) karaktert, ha tudja, hogy a tulajdonság WITH legfeljebb 5 karakter hosszú lehet.

Áttekintés

A kiszolgáló nélküli SQL lehetővé teszi az elemzési Azure Cosmos DB lekérdezését a függvény OPENROWSET használatával.

  • OPENROWSET beágyazott kulccsal. Ezzel a szintaxissal hitelesítő adatok Azure Cosmos DB nélkül is lekérdezheti a gyűjteményeket.
  • OPENROWSET a hivatkozott hitelesítő adat, amely a Cosmos DB-fiókkulcsot tartalmazza. Ezzel a szintaxissal nézetek hozhatók létre Azure Cosmos DB gyűjteményen.

Az elemzési adattárban található adatok lekérdezésének és elemzésének támogatásához Azure Cosmos DB egy kiszolgáló nélküli SQL készletet használ. A kiszolgáló nélküli SQL a SQL szintaxist használja, ezért először konvertálja a Azure Cosmos DB kapcsolati OPENROWSET sztringet a következő formátumra:

OPENROWSET( 
       'CosmosDB',
       '<SQL connection string for Azure Cosmos DB>',
       <Container name>
    )  [ < with clause > ] AS alias

A SQL kapcsolati sztring Azure Cosmos DB a Azure Cosmos DB-fiók nevét, az adatbázis nevét, az adatbázisfiók főkulcsát és egy opcionális régiónevet ad meg a OPENROWSET függvénynek. Ezen információk egy része a kapcsolati sztring szabványos Azure Cosmos DB is lekért.

Konvertálás a szabványos Azure Cosmos DB sztringformátumból:

AccountEndpoint=https://<database account name>.documents.azure.com:443/;AccountKey=<database account master key>;

Az SQL kapcsolati sztring formátuma a következő:

'account=<database account name>;database=<database name>;region=<region name>;key=<database account master key>'

A régió megadása nem kötelező. Ha nincs megadva, a rendszer a tároló elsődleges régióját használja.

A Azure Cosmos DB tároló neve idézőjelek nélkül van megadva a OPENROWSET szintaxisban. Ha a tároló neve speciális karaktereket tartalmaz, például kötőjelet (-), akkor a nevet szögletes zárójelek () közé kell csomagolni a [] OPENROWSET szintaxisban.

Fontos

Győződjön meg arról, hogy UTF-8-as adatbázis-rendezést használ, például , mert az Azure Cosmos DB elemzési tárolóban található sztringértékek Latin1_General_100_CI_AS_SC_UTF8 UTF-8 szövegként vannak kódolva. A fájlban és a rendezésben található szövegkódolás eltérése váratlan szövegkonverziós hibákat okozhat. Az aktuális adatbázis alapértelmezett rendezése egyszerűen megváltoztatható a T-SQL alter database current collate Latin1_General_100_CI_AI_SC_UTF8 utasítással.

Megjegyzés

A kiszolgáló nélküli SQL nem támogatja a tranzakciós tárolók Azure Cosmos DB lekérdezését.

Mintaadatkészlet

A cikkben található példák az Európai Betegség-megelőzési és -ellenőrzési Központ (ECDC) COVID-19-esetek és a COVID-19 Open Research Dataset (CORD-19), doi:10.5281/zenodo.3715505adatain alapulnak.

Ezeken az oldalakon láthatja a licenceket és az adatok struktúráját. Az ECDC és a CORD-19 adatkészletek mintaadatát is letöltheti.

Ahhoz, hogy követni tudja ezt a cikket, amely bemutatja, hogyan lehet Azure Cosmos DB adatokat kiszolgáló nélküli SQL-készletben, győződjön meg arról, hogy a következő erőforrásokat hozza létre:

  • Egy Azure Cosmos DB-adatbázisfiók, amely engedélyezve Azure Synapse linket.
  • Egy Azure Cosmos DB nevű covid adatbázis.
  • Két Azure Cosmos DB nevű és betöltött tároló Ecdc Cord19 az előző mintaadatkészletekkel.

Tesztelési célokra a következő kapcsolati sztringet használhatja: Account=synapselink-cosmosdb-sqlsample;Database=covid;Key=s5zarR2pT0JWH9k8roipnWxUYBegOuFGjJpSjGlR36y86cW0GQ6RaaG8kGjsRAQoWMw1QKTkkX8HQtFpJjC8Hg== . Vegye figyelembe, hogy ez a kapcsolat nem garantálja a teljesítményt, mert előfordulhat, hogy a fiók távoli régióban található a Synapse-SQL végponthoz képest.

Az Azure Cosmos DB adatok feltárása automatikus séma-dedokencia alapján

Az adatok feltárására a Azure Cosmos DB az automatikus séma-következtetési képesség használatával van lehetőség. Ha kihagyja a záradékot a utasításból, utasíthatja a kiszolgáló nélküli SQL-készletet, hogy automatikusan kivezényelje a Azure Cosmos DB tároló elemzési WITH OPENROWSET Azure Cosmos DB sémáját.

SELECT TOP 10 *
FROM OPENROWSET( 
       'CosmosDB',
       'Account=synapselink-cosmosdb-sqlsample;Database=covid;Key=s5zarR2pT0JWH9k8roipnWxUYBegOuFGjJpSjGlR36y86cW0GQ6RaaG8kGjsRAQoWMw1QKTkkX8HQtFpJjC8Hg==',
       Ecdc) as documents

Az előző példában arra utasította a kiszolgáló nélküli SQL-készletet, hogy csatlakozzon az Azure Cosmos DB-fiókban található adatbázishoz a Azure Cosmos DB-kulccsal hitelesítve (az előző példában a covid MyCosmosDbAccount dummy). Ezután hozzáfértünk Ecdc a tároló elemzési tárolóhoz a West US 2 régióban. Mivel nincs konkrét tulajdonságok leképezve, a függvény az összes tulajdonságot visszaadja OPENROWSET a Azure Cosmos DB elemekből.

Feltételezve, hogy a Azure Cosmos DB tárolóban lévő elemek , és tulajdonsággal rendelkeznek, a lekérdezés eredményei az alábbi date_rep cases geo_id táblázatban láthatók:

date_rep Esetekben geo_id
2020-08-13 254 RS
2020-08-12 235 RS
2020-08-11 163 RS

Ha ugyanabban a Azure Cosmos DB-adatbázisban található másik tároló adatait kell felderítenie, használhatja ugyanazt a kapcsolati sztringet, és a harmadik paraméterként hivatkozhat a szükséges tárolóra:

SELECT TOP 10 *
FROM OPENROWSET( 
       'CosmosDB',
       'Account=synapselink-cosmosdb-sqlsample;Database=covid;Key=s5zarR2pT0JWH9k8roipnWxUYBegOuFGjJpSjGlR36y86cW0GQ6RaaG8kGjsRAQoWMw1QKTkkX8HQtFpJjC8Hg==',
       Cord19) as cord19

Séma explicit megadása

Bár a automatikus sémadedukencia képessége egyszerű, könnyen használható lekérdezést biztosít, az üzleti forgatókönyvekben előfordulhat, hogy explicit módon meg kell adnia a sémát, amely csak olvashatóan releváns tulajdonságokat tartalmaz a Azure Cosmos DB OPENROWSET adatokból.

A függvény lehetővé teszi annak explicit megadását, hogy milyen tulajdonságokat szeretne beolvasni a tárolóban található adatokból, és megadhatja OPENROWSET azok adattípusát.

Tegyük fel, hogy adatokat importáltunk az ECDC COVID-adatkészletből az alábbi struktúrával a Azure Cosmos DB:

{"date_rep":"2020-08-13","cases":254,"countries_and_territories":"Serbia","geo_id":"RS"}
{"date_rep":"2020-08-12","cases":235,"countries_and_territories":"Serbia","geo_id":"RS"}
{"date_rep":"2020-08-11","cases":163,"countries_and_territories":"Serbia","geo_id":"RS"}

Ezek az egyen Azure Cosmos DB JSON-dokumentumok sorok és oszlopok halmazaiként is ábrázolhatóak a Synapse-SQL. A függvény lehetővé teszi az olvasni kívánt tulajdonságok egy részkészletének és a záradék pontos OPENROWSET oszloptípusának WITH megadását:

SELECT TOP 10 *
FROM OPENROWSET(
      'CosmosDB',
      'Account=synapselink-cosmosdb-sqlsample;Database=covid;Key=s5zarR2pT0JWH9k8roipnWxUYBegOuFGjJpSjGlR36y86cW0GQ6RaaG8kGjsRAQoWMw1QKTkkX8HQtFpJjC8Hg==',
       Ecdc
    ) with ( date_rep varchar(20), cases bigint, geo_id varchar(6) ) as rows

A lekérdezés eredménye a következő táblázathoz hasonló lehet:

date_rep Esetekben geo_id
2020-08-13 254 RS
2020-08-12 235 RS
2020-08-11 163 RS

Az egyes SQL használható típusokkal kapcsolatos további Azure Cosmos DB a cikk végén, az SQL típusleképezések szabályaiban talál.

Nézet létrehozása

Nézetek létrehozása a főadatbázisban vagy az alapértelmezett adatbázisokban nem ajánlott vagy támogatott. Ezért létre kell hoznia egy felhasználói adatbázist a nézetek számára.

Miután azonosította a sémát, előkészíthet egy nézetet a Azure Cosmos DB adataira. A fiókkulcsot Azure Cosmos DB el egy külön hitelesítő adatban, és hivatkozni kell erre a hitelesítő adatra a OPENROWSET függvényből. Ne tartsa meg a fiókkulcsot a nézetdefinícióban.

CREATE CREDENTIAL MyCosmosDbAccountCredential
WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = 's5zarR2pT0JWH9k8roipnWxUYBegOuFGjJpSjGlR36y86cW0GQ6RaaG8kGjsRAQoWMw1QKTkkX8HQtFpJjC8Hg==';
GO
CREATE OR ALTER VIEW Ecdc
AS SELECT *
FROM OPENROWSET(
      PROVIDER = 'CosmosDB',
      CONNECTION = 'Account=synapselink-cosmosdb-sqlsample;Database=covid',
      OBJECT = 'Ecdc',
      SERVER_CREDENTIAL = 'MyCosmosDbAccountCredential'
    ) with ( date_rep varchar(20), cases bigint, geo_id varchar(6) ) as rows

Ne használja explicit OPENROWSET módon meghatározott séma nélkül, mert ez hatással lehet a teljesítményre. Győződjön meg arról, hogy az oszlopokhoz a lehető legkisebb méreteket használja (például VARCHAR(100) az alapértelmezett VARCHAR(8000)) helyett. Az UTF-8 átalakítási probléma elkerülése érdekében használjon utF-8rendezést alapértelmezett adatbázis-rendezésként, vagy állítsa be explicit oszlop-rendezésként. A rendezés Latin1_General_100_BIN2_UTF8 akkor a legjobb teljesítmény, ha a yu sztringoszlopok használatával szűri az adatokat.

Beágyazott objektumok és tömbök lekérdezése

A Azure Cosmos DB összetettebb adatmodelleket is képviselhet beágyazott objektumokként vagy tömbökként való írással. A Azure Synapse Link for Azure Cosmos DB automatikus szinkronizálási képessége használatra felügyeli a sémarezentációt az elemzési tárolóban, beleértve a beágyazott adattípusok kezelését, amelyek lehetővé teszik a kiszolgáló nélküli SQL lekérdezését.

A CORD-19 adatkészlet például az alábbi struktúrát követő JSON-dokumentumokkal rendelkezik:

{
    "paper_id": <str>,                   # 40-character sha1 of the PDF
    "metadata": {
        "title": <str>,
        "authors": <array of objects>    # list of author dicts, in order
        ...
     }
     ...
}

A függvényben lévő beágyazott objektumok és Azure Cosmos DB JSON-sztringekként vannak ábrázolva a lekérdezés eredményében, amikor a OPENROWSET függvény beolvassa őket. A záradék használata esetén megadhatja az objektumok beágyazott értékeinek elérési WITH útvonalát:

SELECT TOP 10 *
FROM OPENROWSET( 
       'CosmosDB',
       'Account=synapselink-cosmosdb-sqlsample;Database=covid;Key=s5zarR2pT0JWH9k8roipnWxUYBegOuFGjJpSjGlR36y86cW0GQ6RaaG8kGjsRAQoWMw1QKTkkX8HQtFpJjC8Hg==',
       Cord19)
WITH (  paper_id    varchar(8000),
        title        varchar(1000) '$.metadata.title',
        metadata     varchar(max),
        authors      varchar(max) '$.metadata.authors'
) AS docs;

A lekérdezés eredménye a következő táblázathoz hasonló lehet:

paper_id cím metaadatok Szerzők
11206963e831f... Kiegészítő információk Egy eco-emi... {"title":"Supplementary Informati… [{"first":"Julien","last":"Mélade","suffix":"","af…
1206963e831f1... A convalescent Sera használata az imm... {"title":"The Use of Convalescent… [{"first":"Antonio","last":"Lavazza","suffix":"", …
xis378eca9aac649... Tylosema yloselentum (Marama) Foger és B... {"title":"Tylosema esculentum (Ma… [{"first":"Walter","last":"Chingwaru","suffix":"",…

További információ az összetett adattípusok elemzésével kapcsolatban a Azure Synapse- és beágyazott struktúrák kiszolgáló nélküli SQL való elemzésével kapcsolatban.

Fontos

Ha nem várt karaktereket lát a szövegben, például a helyett, akkor az adatbázis rendezése nem Mélade Mélade UTF-8 rendezésre van beállítva. Módosítsa az adatbázis rendezését UTF-8 rendezésre egy olyan SQL utasítással, mint a ALTER DATABASE MyLdw COLLATE LATIN1_GENERAL_100_CI_AS_SC_UTF8 .

Beágyazott tömbök ellapítása

Azure Cosmos DB adatok beágyazott altömbök, például a szerző cord-19 adatkészletből származó tömbje lehet:

{
    "paper_id": <str>,                      # 40-character sha1 of the PDF
    "metadata": {
        "title": <str>,
        "authors": [                        # list of author dicts, in order
            {
                "first": <str>,
                "middle": <list of str>,
                "last": <str>,
                "suffix": <str>,
                "affiliation": <dict>,
                "email": <str>
            },
            ...
        ],
        ...
}

Bizonyos esetekben szükség lehet a tulajdonságok "illesztése" a felső elemből (metaadatok) a tömb összes elemével (szerzők). A kiszolgáló nélküli SQL lehetővé teszi a beágyazott struktúrák simítását a függvény beágyazott OPENJSON tömbre való alkalmazásával:

SELECT
    *
FROM
    OPENROWSET(
      'CosmosDB',
      'Account=synapselink-cosmosdb-sqlsample;Database=covid;Key=s5zarR2pT0JWH9k8roipnWxUYBegOuFGjJpSjGlR36y86cW0GQ6RaaG8kGjsRAQoWMw1QKTkkX8HQtFpJjC8Hg==',
       Cord19
    ) WITH ( title varchar(1000) '$.metadata.title',
             authors varchar(max) '$.metadata.authors' ) AS docs
      CROSS APPLY OPENJSON ( authors )
                  WITH (
                       first varchar(50),
                       last varchar(50),
                       affiliation nvarchar(max) as json
                  ) AS a

A lekérdezés eredménye a következő táblázathoz hasonló lehet:

cím Szerzők Első Utolsó Hovatartozás
Kiegészítő információk Egy eco-emi... [{"first":"Julien","last":"Mélade","suffix":"","affiliation":{"laboratory":"Centre de Recher… Julien Mélade {"laboratory":"Centre de Recher…
Kiegészítő információk Egy eco-emi... [{"first":"Nicolas","last":"4#","suffix":"","affiliation":{"laboratory":"","institution":"U… Nicolas 4 # {"laboratory":"","institution":"U…
Kiegészítő információk Egy eco-emi... [{"first":"Beza","last":"Ramazindrazana","suffix":"","affiliation":{"laboratory":"Centre de Recher… Beza Ramazindrazana {"laboratory":"Centre de Recher…
Kiegészítő információk Egy eco-emi... [{"first":"Olivier","last":"Flores","suffix":"","affiliation":{"laboratory":"UMR C53 CIRAD, … Olivier Flores {"laboratory":"UMR C53 CIRAD, …

Fontos

Ha nem várt karaktereket lát a szövegben, például a helyett, akkor az adatbázis rendezése nem Mélade Mélade UTF-8 rendezésre van beállítva. Módosítsa az adatbázis rendezését UTF-8 rendezésre egy olyan SQL utasítással, mint a ALTER DATABASE MyLdw COLLATE LATIN1_GENERAL_100_CI_AS_SC_UTF8 .

Azure Cosmos DB típusleképezések SQL való beállítása

Bár Azure Cosmos DB tranzakciós tároló sématől független, az elemzési tároló az elemzési lekérdezési teljesítményre való optimalizálás érdekében séma szerint van optimalizálva. A Azure Synapse Link automatikus szinkronizálási funkcióját használva a Azure Cosmos DB a séma-megjelenítést az elemzési tárolóban, beleértve a beágyazott adattípusok kezelését is. Mivel a kiszolgáló nélküli SQL lekérdezi az elemzési tárolót, fontos megérteni, hogyan lehet leképezni Azure Cosmos DB bemeneti adattípusokat az SQL adatokra.

Azure Cosmos DB API SQL fiókok támogatják a szám, sztring, logikai, null, beágyazott objektum vagy tömb JSON-tulajdonságtípusát. Ha a záradékot használja, SQL típusokat kell választania, amelyek megfelelnek ezeknek a WITH JSON-típusoknak. OPENROWSET Az alábbi táblázat a SQL különböző tulajdonságtípusokhoz használható oszloptípusokat Azure Cosmos DB.

Azure Cosmos DB tulajdonságtípus SQL oszloptípus
Logikai bit
Egész szám bigint
Tizedesjegy float
Sztring varchar (UTF-8 adatbázis rendezése)
Dátum és idő (ISO-formátumú sztring) varchar(30)
Dátum és idő (UNIX időbélyeg) bigint
Null any SQL type
Beágyazott objektum vagy tömb varchar(max) (UTF-8 adatbázis rendezése), JSON-szövegként szerializálva

Teljes hűségséma

Azure Cosmos DB teljes hűség séma a tároló minden tulajdonságának értékeit és azok legjobb egyezéstípusait is rögzíti. A teljes hűségsémát tartalmazó tárolón lévő függvény az egyes cellák típusát és tényleges OPENROWSET értékét is biztosítja. Tegyük fel, hogy a következő lekérdezés teljes hűségsémával olvassa be az elemeket egy tárolóból:

SELECT *
FROM OPENROWSET(
      'CosmosDB',
      'account=MyCosmosDbAccount;database=covid;region=westus2;key=C0Sm0sDbKey==',
       Ecdc
    ) as rows

A lekérdezés eredménye JSON-szövegként formázott típusokat és értékeket ad vissza:

date_rep Esetekben geo_id
{"date":"2020-08-13"} {"int32":"254"} {"string":"RS"}
{"date":"2020-08-12"} {"int32":"235"} {"string":"RS"}
{"date":"2020-08-11"} {"int32":"316"} {"string":"RS"}
{"date":"2020-08-10"} {"int32":"281"} {"string":"RS"}
{"date":"2020-08-09"} {"int32":"295"} {"string":"RS"}
{"string":"2020/08/08"} {"int32":"312"} {"string":"RS"}
{"date":"2020-08-07"} {"float64":"339.0"} {"string":"RS"}

Minden értéknél láthatja a típust, amely egy tárolóelemben Azure Cosmos DB azonosítva. A tulajdonság legtöbb értéke tartalmaz értékeket, de némelyik helytelenül sztringként van tárolva a date_rep date Azure Cosmos DB. A teljes hűségű séma helyesen gépelt és helytelenül date formázott értékeket is string visszaad. Az esetek száma egy értékként tárolt információ, de van egy érték, amely tizedes int32 törtként van megadva. Ennek az értéknek a float64 típusa. Ha vannak olyan értékek, amelyek meghaladják a legnagyobb int32 számot, típusként lesznek int64 tárolva. A geo_id példában minden érték típusként string van tárolva.

Fontos

A záradék nélküli függvény a várt típusokkal és helytelenül megadott típusokkal OPENROWSET WITH is elérhetővé teszi az értékeket. Ez a függvény adatfeltárásra lett tervezve, nem jelentéskészítésre. Ne elemezze a függvény által visszaadott JSON-értékeket a jelentések készítése érdekében. A jelentések létrehozásához használjon explicit WITH záradékot. A teljes fidelitási elemzési tárolóban Azure Cosmos DB megfelelő típusú értékeket érdemes megtisztítani.

Ha le kellkérdezni Azure Cosmos DB Mongo DB API-típusú fiókokat, többet is megtudhat az elemzési tárolóban található teljes hűségsémák ábrázolásáról, valamint a mi az elemzésitárban használható kibővített tulajdonságnevekről Azure Cosmos DB?.

Elemek lekérdezése teljes hűségsémával

A teljes hűségű séma lekérdezésekor explicit módon meg kell adnia a SQL típust és a várt Azure Cosmos DB tulajdonságtípust a WITH záradékban.

A következő példában feltételezzük, hogy a tulajdonsághoz a megfelelő típus, a tulajdonsághoz pedig a string geo_id megfelelő int32 cases típus:

SELECT geo_id, cases = SUM(cases)
FROM OPENROWSET(
      'CosmosDB'
      'account=MyCosmosDbAccount;database=covid;region=westus2;key=C0Sm0sDbKey==',
       Ecdc
    ) WITH ( geo_id VARCHAR(50) '$.geo_id.string',
             cases INT '$.cases.int32'
    ) as rows
GROUP BY geo_id

A és a más típusú értékei geo_id cases értékekként lesznek NULL visszaadva. Ez a lekérdezés csak a kifejezésben megadott típusra cases hivatkozik ( cases.int32 ).

Ha más típusú ( , ) értékeket tartalmaz, amelyek nem tisztíthatóak meg egy Azure Cosmos DB-tárolóban, explicit módon hivatkozni kell rájuk egy záradékban, és kombinálni kell cases.int64 cases.float64 az WITH eredményeket. A következő lekérdezés a , és oszlopban tárolt adatokat int32 int64 is float64 cases összesíti:

SELECT geo_id, cases = SUM(cases_int) + SUM(cases_bigint) + SUM(cases_float)
FROM OPENROWSET(
      'CosmosDB',
      'account=MyCosmosDbAccount;database=covid;region=westus2;key=C0Sm0sDbKey==',
       Ecdc
    ) WITH ( geo_id VARCHAR(50) '$.geo_id.string', 
             cases_int INT '$.cases.int32',
             cases_bigint BIGINT '$.cases.int64',
             cases_float FLOAT '$.cases.float64'
    ) as rows
GROUP BY geo_id

Ebben a példában az esetek száma , vagy értékként int32 int64 van float64 tárolva. Az országonkénti esetek számának kiszámításához minden értéket ki kellnyerni.

Hibaelhárítás

Tekintse át az önsegítő oldalt, és keresse meg az ismert problémákat vagy a hibaelhárítási lépéseket, amelyek segíthetnek a lekérdezésekkel kapcsolatos Cosmos DB megoldásában.

Következő lépések

További információért tekintse át a következő cikkeket: