Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Bezserverový fond SQL umožňuje analyzovat data v kontejnerech Služby Azure Cosmos DB, které jsou povoleny pomocí služby Azure Synapse Link téměř v reálném čase, aniž by to ovlivnilo výkon transakčních úloh. Nabízí známou syntaxi jazyka Transact-SQL (T-SQL) pro dotazování dat z analytického úložiště a integrované připojení k široké škále nástrojů pro business intelligence (BI) a ad hoc dotazování prostřednictvím rozhraní T-SQL.
Pro dotazování služby Azure Cosmos DB je úplná plocha SELECT podporovaná prostřednictvím funkce OPENROWSET , která zahrnuje většinu funkcí a operátorů SQL. Výsledky dotazu, který čte data ze služby Azure Cosmos DB, můžete také uložit spolu s daty ve službě Azure Blob Storage nebo Azure Data Lake Storage pomocí vytvořit externí tabulku jako select (CETAS). V současné době nemůžete ukládat výsledky dotazů ze serverless SQL poolu do služby Azure Cosmos DB pomocí CETAS.
Tento článek vysvětluje, jak napsat dotaz s bezserverovým fondem SQL, který se dotazuje na data z kontejnerů Azure Cosmos DB, které jsou povolené pomocí Azure Synapse Linku. V tomto kurzu se pak můžete dozvědět více o vytváření zobrazení bezserverového fondu SQL v kontejnerech Azure Cosmos DB a jejich připojení k modelům Power BI. Tento kurz používá kontejner s jasně definovaným schématem služby Azure Cosmos DB. Můžete se také podívat na výukový modul Learn o dotazování služby Azure Cosmos DB pomocí SQL Serverless pro Azure Synapse Analytics.
Požadavky
- Ujistěte se, že jste připravili analytické úložiště:
- Povolte analytické úložiště v kontejnerech Azure Cosmos DB.
- Získejte připojovací řetězec klíčem jen pro čtení, který můžete použít k dotazování analytického úložiště.
- Získejte klíč jen pro čtení, který se použije pro přístup ke kontejneru Azure Cosmos DB.
- Ujistěte se, že jste použili všechny osvědčené postupy, například:
- Ujistěte se, že vaše analytické úložiště Azure Cosmos DB je ve stejné oblasti jako bezserverový fond SQL.
- Ujistěte se, že klientská aplikace (Power BI, Analytická služba) je ve stejné oblasti jako serverless SQL pool.
- Pokud vracíte velké množství dat (více než 80 GB), zvažte použití vrstvy mezipaměti, jako je Analysis Services, a ujistěte se, aby oddíly menší než 80 GB byly načteny v modelu Analysis Services.
- Pokud filtrujete data pomocí řetězců sloupců, ujistěte se, že používáte
OPENROWSETfunkci s explicitníWITHklauzulí, která má nejmenší možné typy. NepoužívejteVARCHAR(1000)například, pokud víte, že vlastnost má až pět znaků.
Přehled
Bezserverový fond SQL umožňuje dotazovat analytické úložiště Azure Cosmos DB pomocí OPENROWSET funkce.
OPENROWSET(
'CosmosDB',
'<SQL connection string for Azure Cosmos DB>',
<other parameters>
) [ < with clause > ] AS alias
Připojovací řetězec SQL pro Azure Cosmos DB obsahuje následující komponenty:
- account – název účtu služby Azure Cosmos DB, na který cílíte.
- database – Název kontejneru zadaný bez uvozovek v syntaxi OPENROWSET. Pokud název kontejneru obsahuje speciální znaky (například pomlčku -), měl by být uzavřen v hranatých závorkách ([]).
- region (volitelné) – Oblast analytického úložiště Cosmos DB. Pokud tuto možnost vynecháte, použije se primární oblast kontejneru.
-
koncový bod (volitelné) – Identifikátor URI koncového bodu služby Cosmos DB (například
https://<account name>.documents.azure.us), který je vyžadován, pokud váš účet služby Cosmos DB nedodržuje standardní*.documents.azure.comformát.
Důležité
Parametr endpoint je nutný pro účty, které neodpovídají standardnímu *.documents.azure.com formátu. Pokud například váš účet služby Azure Cosmos DB končí .documents.azure.us, ujistěte se, že jste přidali připojovací řetězec endpoint=https://<account name>.documents.azure.us. Ujistěte se, že jste zahrnuli https:// předponu.
Tyto vlastnosti lze identifikovat ze standardního připojovacího řetězce Cosmos DB, například:
AccountEndpoint=https://<database account name>.documents.azure.com:443/;AccountKey=<database account master key>;
Připojovací řetězec SQL lze formátovat takto:
account=<database account name>;database=<database name>;region=<region name>
Tento připojovací řetězec neobsahuje ověřovací informace potřebné pro připojení k analytickému úložišti Cosmos DB. V závislosti na použitém typu ověření jsou potřeba další informace:
- Pokud
OPENROWSETpro přístup k analytickému úložišti používá spravovanou identitu pracovního prostoru, měli byste vlastnost přidatAuthType. - Pokud
OPENROWSETpoužíváte vložený klíč účtu, měli byste vlastnost přidatkey. To vám umožní dotazovat se na kolekce Azure Cosmos DB, aniž byste museli připravovat přihlašovací údaje. - Místo zahrnutí ověřovacích informací do připojovacího řetězce může odkazovat na přihlašovací údaje,
OPENROWSETkteré obsahují klíč účtu Azure Cosmos DB. Tento přístup lze použít k vytváření zobrazení v kolekcích Azure Cosmos DB.
Tyto možnosti jsou popsány níže.
Bezserverový fond SQL umožňuje dotazovat se na analytické úložiště Cosmos DB a ověřit se pomocí původního klíče účtu Cosmos DB nebo povolit spravované identitě Synapse přístup k analytickému úložišti Cosmos DB. V tomto scénáři můžete použít následující syntaxi:
OPENROWSET(
'CosmosDB',
'<SQL connection string for Azure Cosmos DB>',
<Container name>
) [ < with clause > ] AS alias
Kromě běžných vlastností v připojovacím řetězci SQL, které jsou popsány výše (účet, databáze, oblast a koncový bod), je třeba přidat jednu z následujících možností:
-
AuthType – tuto možnost nastavte na
ManagedIdentityPokud přistupujete ke Cosmos DB pomocí spravované identity pracovního prostoru Synapse. - key – hlavní klíč pro přístup k datům Cosmos DB, který se používá, pokud nepoužíváte spravovanou identitu pracovního prostoru Synapse.
Příklady připojovacích řetězců jsou uvedeny v následující tabulce:
| Typ autentizace | Připojovací řetězec |
|---|---|
| Spravovaná identita pracovního prostoru Synapse | account=<account name>;database=<db name>;region=<region name>;AuthType=ManagedIdentity |
| Hlavní klíč účtu služby Cosmos DB | account=<account name>;database=<db name>;region=<region name>;key=<account master key> |
Důležité
Ujistěte se, že používáte určitou kolaci databáze UTF-8, Latin1_General_100_CI_AS_SC_UTF8například, protože řetězcové hodnoty v analytickém úložišti Azure Cosmos DB jsou kódované jako text UTF-8.
Neshoda mezi kódováním textu v souboru a kolací může způsobit neočekávané chyby převodu textu.
Výchozí kolaci aktuální databáze můžete snadno změnit pomocí příkazu alter database current collate Latin1_General_100_CI_AI_SC_UTF8T-SQL .
Poznámka:
Bezserverový fond SQL nepodporuje dotazování do transakčního úložiště Azure Cosmos DB.
Ukázková datová sada
Příklady v tomto článku vycházejí z údajů Evropského střediska pro prevenci a kontrolu nemocí (ECDC) Případy COVID-19 a soubor dat otevřeného výzkumu COVID-19 (CORD-19) Evropského střediska pro prevenci a kontrolu nemocí (ECDC).
Na těchto stránkách můžete zobrazit licenci a strukturu dat. Můžete si také stáhnout ukázková data pro datové sady ECDC a CORD-19.
Pokud chcete pokračovat spolu s tímto článkem, který předvádí, jak dotazovat data z Azure Cosmos DB pomocí serverless SQL fondu, ujistěte se, že vytvoříte následující prostředky:
- Účet databáze Azure Cosmos DB s povolenou službou Azure Synapse Link
- Databáze Azure Cosmos DB s názvem
covid - Dva kontejnery Azure Cosmos DB, pojmenované
EcdcaCord19, jsou načteny předchozími vzorky dat.
Upozorňujeme, že toto připojení nezaručuje výkon, protože tento účet může být ve vzdálené oblasti ve srovnání s koncovým bodem Synapse SQL.
Prozkoumání dat služby Azure Cosmos DB pomocí automatického odvozování schématu
Nejjednodušší způsob, jak prozkoumat data ve službě Azure Cosmos DB, je použití funkce automatického odvozování schématu. Vynecháním WITH klauzule z OPENROWSET příkazu můžete instruovat bezserverový fond SQL, aby automaticky rozpoznal schéma analytického úložiště kontejneru Azure Cosmos DB.
Důležité
Ve skriptu nahraďte tyto hodnoty vlastními hodnotami:
- your-cosmosdb – název účtu cosmos DB
- yourcosmosdbkey – klíč účtu služby Cosmos DB
SELECT TOP 10 *
FROM OPENROWSET(
'CosmosDB',
'Account=your-cosmosdb;Database=covid;Key=yourcosmosdbkey',
Ecdc) as documents
V předchozím příkladu jsme instruovali bezserverový fond SQL, aby se připojil k covid databázi v účtu MyCosmosDbAccount azure Cosmos DB ověřeném pomocí klíče služby Azure Cosmos DB (fiktivní v předchozím příkladu). Poté jsme přistoupili k analytickému úložišti kontejneru Ecdc v oblasti West US 2. Vzhledem k tomu, že neexistuje projekce konkrétních vlastností, OPENROWSET vrátí funkce všechny vlastnosti z položek Azure Cosmos DB.
Za předpokladu, že položky v kontejneru Azure Cosmos DB mají date_repa casesgeo_id vlastnosti, zobrazí se výsledky tohoto dotazu v následující tabulce:
| datum_reprezentace | případy | geo_id |
|---|---|---|
| 2020-08-13 | 254 | RS |
| 2020-08-12 | 235 | RS |
| 2020-08-11 | 163 | RS |
Pokud potřebujete prozkoumat data z druhého kontejneru ve stejné databázi Azure Cosmos DB, můžete použít stejný připojovací řetězec a odkazovat na požadovaný kontejner jako třetí parametr:
SELECT TOP 10 *
FROM OPENROWSET(
'CosmosDB',
'Account=your-cosmosdb;Database=covid;Key=yourcosmosdbkey',
Cord19) as cord19
Explicitní zadání schématu
I když funkce automatického odvozování schématu OPENROWSET poskytuje jednoduché a snadno použitelné prostředí, vaše obchodní scénáře můžou vyžadovat, abyste explicitně zadali schéma pro načtení pouze relevantních vlastností z dat Azure Cosmos DB.
Funkce OPENROWSET umožňuje explicitně určit, které vlastnosti chcete číst z dat v kontejneru, a určit jejich datové typy.
Představme si, že jsme do služby Azure Cosmos DB naimportovali nějaká data z datové sady ECDC COVID s následující strukturou:
{"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"}
Tyto ploché dokumenty JSON ve službě Azure Cosmos DB je možné reprezentovat jako sadu řádků a sloupců ve službě Synapse SQL. Funkce OPENROWSET umožňuje zadat podmnožinu vlastností, které chcete číst, a přesné typy sloupců v WITH klauzuli:
SELECT TOP 10 *
FROM OPENROWSET(
'CosmosDB',
'Account=your-cosmosdb;Database=covid;Key=yourcosmosdbkey',
Ecdc
) with ( date_rep varchar(20), cases bigint, geo_id varchar(6) ) as rows
Výsledek tohoto dotazu může vypadat jako v následující tabulce:
| datum_reprezentace | případy | geo_id |
|---|---|---|
| 2020-08-13 | 254 | RS |
| 2020-08-12 | 235 | RS |
| 2020-08-11 | 163 | RS |
Další informace o typech SQL, které se mají použít pro hodnoty služby Azure Cosmos DB, najdete v tématu Mapování typů SQL ve službě Azure Cosmos DB na konci tohoto článku.
Vytvořit zobrazení
Vytváření zobrazení v master nebo výchozích databázích se nedoporučuje ani nepodporuje. Proto potřebujete vytvořit uživatelskou databázi pro svá zobrazení.
Jakmile schéma identifikujete, můžete připravit zobrazení nad daty Azure Cosmos DB. Klíč účtu služby Azure Cosmos DB byste měli umístit do samostatného pověření a odkazovat na toto pověření z funkce OPENROWSET. Neuchovávejte klíč účtu v definici zobrazení.
CREATE CREDENTIAL MyCosmosDbAccountCredential
WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = 'yourcosmosdbkey';
GO
CREATE OR ALTER VIEW Ecdc
AS SELECT *
FROM OPENROWSET(
PROVIDER = 'CosmosDB',
CONNECTION = 'Account=your-cosmosdb;Database=covid',
OBJECT = 'Ecdc',
SERVER_CREDENTIAL = 'MyCosmosDbAccountCredential'
) with ( date_rep varchar(20), cases bigint, geo_id varchar(6) ) as rows
Nepoužívejte OPENROWSET bez explicitně definovaného schématu, protože může mít vliv na výkon. Ujistěte se, že pro sloupce používáte nejmenší možné velikosti (například VARCHAR(100) místo výchozího nastavení VARCHAR(8000)). Jako výchozí kolaci databáze byste měli použít určitou kolaci UTF-8 nebo ji nastavit jako explicitní kolaci sloupců, abyste se vyhnuli problému s převodem UTF-8. Kolace Latin1_General_100_BIN2_UTF8 poskytuje nejlepší výkon při filtrování dat pomocí některých sloupcových řetězců.
Při dotazování zobrazení může dojít k chybám nebo neočekávaným výsledkům. Odkazy na pohled, sloupce nebo objekty byly pravděpodobně změněny nebo již neexistují. Definici zobrazení je potřeba upravit ručně tak, aby odpovídala změnám základního schématu. Mějte na paměti, že k tomu může dojít jak při použití automatického odvozování schématu v zobrazení, tak při explicitní specifikaci schématu.
Dotazování vnořených objektů
Se službou Azure Cosmos DB můžete reprezentovat složitější datové modely tím, že je vytvoříte jako vnořené objekty nebo pole. Funkce automatické synchronizace služby Azure Synapse Link pro Azure Cosmos DB spravuje reprezentaci schématu v analytickém úložišti, která zahrnuje zpracování vnořených datových typů, které umožňují bohaté dotazování z bezserverového fondu SQL.
Například datová sada CORD-19 obsahuje dokumenty JSON, které se řídí touto strukturou:
{
"paper_id": <str>, # 40-character sha1 of the PDF
"metadata": {
"title": <str>,
"authors": <array of objects> # list of author dicts, in order
...
}
...
}
Vnořené objekty a pole ve službě Azure Cosmos DB jsou ve výsledku dotazu reprezentovány jako řetězce JSON, když je OPENROWSET funkce přečte. Při použití WITH klauzule můžete zadat cesty k vnořeným hodnotám v objektech:
SELECT TOP 10 *
FROM OPENROWSET(
'CosmosDB',
'Account=your-cosmosdb;Database=covid;Key=yourcosmosdbkey',
Cord19)
WITH ( paper_id varchar(8000),
title varchar(1000) '$.metadata.title',
metadata varchar(max),
authors varchar(max) '$.metadata.authors'
) AS docs;
Výsledek tohoto dotazu může vypadat jako v následující tabulce:
| identifikátor dokumentu | název | metadatové informace | autoři |
|---|---|---|---|
| bb11206963e831f... | Doplňkové informace Eko-epidemie... | {"title":"Supplementary Informati… |
[{"first":"Julien","last":"Mélade","suffix":"","af… |
| bb1206963e831f1... | Použití rekonvalescentního séra v imunitním e... | {"title":"The Use of Convalescent… |
[{"first":"Antonio","last":"Lavazza","suffix":"", … |
| bb378eca9aac649... | Tylosema esculentum (Marama) hlízy a semena… | {"title":"Tylosema esculentum (Ma… |
[{"first":"Walter","last":"Chingwaru","suffix":"",… |
Další informace najdete v tématu Analýza složitých datových typů ve službě Azure Synapse Analytics nebo Dotazování vnořených typů v souborech Parquet a JSON pomocí bezserverového fondu SQL.
Důležité
Pokud ve svém textu vidíte neočekávané znaky jako Mélade místo Mélade, pak není kolace vaší databáze nastavena na kolaci UTF-8. Kolaci databáze můžete změnit na kolaci UTF-8 pomocí příkazu SQL, jako je ALTER DATABASE MyLdw COLLATE LATIN1_GENERAL_100_CI_AS_SC_UTF8.
Zploštit vnořená pole
Data služby Azure Cosmos DB můžou mít vnořená podpole, jako je pole autora z datové sady CORD-19:
{
"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>
},
...
],
...
}
V některých případech může být potřeba spojit vlastnosti z horní položky (metadata) se všemi prvky pole (autory). Bezserverový fond SQL umožňuje zploštit vnořené struktury používáním funkce OPENJSON na vnořené pole:
SELECT
*
FROM
OPENROWSET(
'CosmosDB',
'Account=your-cosmosdb;Database=covid;Key=yourcosmosdbkey',
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
Výsledek tohoto dotazu může vypadat jako v následující tabulce:
| název | autoři | první | Poslední | příslušnost |
|---|---|---|---|---|
| Doplňkové informace Eko-epidemie... | [{"first":"Julien","last":"Mélade","suffix":"","affiliation":{"laboratory":"Centre de Recher… |
Julien | Mélade | {"laboratory":"Centre de Recher… |
| Doplňkové informace Eko-epidemie... | [{"first":"Nicolas","last":"4#","suffix":"","affiliation":{"laboratory":"","institution":"U… |
Nicolas | 4 | {"laboratory":"","institution":"U… |
| Doplňkové informace Eko-epidemie... | [{"first":"Beza","last":"Ramazindrazana","suffix":"","affiliation":{"laboratory":"Centre de Recher… |
Beza | Ramazindrazana | {"laboratory":"Centre de Recher… |
| Doplňkové informace Eko-epidemie... | [{"first":"Olivier","last":"Flores","suffix":"","affiliation":{"laboratory":"UMR C53 CIRAD, … |
Olivier | Flores | {"laboratory":"UMR C53 CIRAD, … |
Důležité
Pokud ve svém textu vidíte neočekávané znaky jako Mélade místo Mélade, pak není kolace vaší databáze nastavena na kolaci UTF-8. Kolaci databáze můžete změnit na kolaci UTF-8 pomocí příkazu SQL, jako je ALTER DATABASE MyLdw COLLATE LATIN1_GENERAL_100_CI_AS_SC_UTF8.
Mapování typů Azure Cosmos DB na SQL
I když je transakční úložiště Azure Cosmos DB nezávislé na schématu, analytické úložiště je schematizované pro optimalizaci výkonu analytických dotazů. Díky funkci automatické synchronizace služby Azure Synapse Link spravuje služba Azure Cosmos DB reprezentaci schématu v analytickém úložišti, která zahrnuje zpracování vnořených datových typů. Vzhledem k tomu, že bezserverová skupina SQL provádí dotazy na analytické úložiště, je důležité pochopit, jak mapovat vstupní datové typy Azure Cosmos DB na typy dat SQL.
Účty Azure Cosmos DB rozhraní SQL (Core) API podporují typy vlastností JSON: číslo, řetězec, logická hodnota, null, vnořený objekt, nebo pole. Pokud používáte WITH klauzuli v OPENROWSET, musíte zvolit typy SQL, které odpovídají těmto typům JSON. Následující tabulka ukazuje typy sloupců SQL, které by se měly používat pro různé typy vlastností ve službě Azure Cosmos DB.
| Typ vlastnosti služby Azure Cosmos DB | Typ sloupce SQL |
|---|---|
| Boolovská logika | trochu |
| Celé číslo | bigint |
| Desetinné číslo | plout |
| Struna | varchar (UTF-8 kolace databáze) |
| Datum a čas (řetězec formátovaný iso) | varchar(30) |
| Datum a čas (časové razítko SYSTÉMU UNIX) | bigint |
| Nula | any SQL type |
| Vnořený objekt nebo pole | varchar(max) (s kolací databáze UTF-8), serializovaný jako JSON text |
Schéma úplné věrnosti
Schéma úplné věrnosti ve službě Azure Cosmos DB zaznamenává hodnoty i jejich nejlepší typy shody pro každou vlastnost v kontejneru. Funkce OPENROWSET v kontejneru s úplným schématem přesnosti poskytuje typ i skutečnou hodnotu v každé buňce. Předpokládejme, že následující dotaz čte položky z kontejneru s úplným schématem věrnosti:
SELECT *
FROM OPENROWSET(
'CosmosDB',
'account=MyCosmosDbAccount;database=covid;region=westus2;key=C0Sm0sDbKey==',
Ecdc
) as rows
Výsledkem tohoto dotazu jsou typy a hodnoty formátované jako text JSON:
| datum_reprezentace | případy | geo_id |
|---|---|---|
| {"datum":"2020-08-13"} | {"int32":"254"} | {"string":"RS"} |
| {"datum":"2020-08-12"} | {"int32":"235"} | {"string":"RS"} |
| {"date":"2020-08-11"} | {"int32":"316"} | {"string":"RS"} |
| {"datum":"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"} |
Pro každou hodnotu uvidíte typ identifikovaný v položce kontejneru Azure Cosmos DB. Většina hodnot vlastnosti date_rep obsahuje date hodnoty, ale některé z nich jsou nesprávně uložené jako řetězce ve službě Azure Cosmos DB. Schéma úplné věrnosti vrací správně zadané date hodnoty i nesprávně formátované string hodnoty.
Počet případů je uložen jako int32 hodnota, ale existuje jedna hodnota, která je zadaná jako desetinné číslo. Tato hodnota má float64 typ. Pokud existují nějaké hodnoty, které překračují největší int32 číslo, budou uloženy jako int64 typ. Všechny geo_id hodnoty v tomto příkladu jsou uloženy jako string typy.
Důležité
Funkce OPENROWSET bez WITH klauzule zveřejňuje obě hodnoty s očekávanými typy a hodnoty s nesprávně zadanými typy. Tato funkce je určená pro zkoumání dat a ne pro vytváření reportů. Neanalybujte hodnoty JSON vrácené z této funkce za účelem vytváření sestav. K vytváření sestav použijte explicitní klauzuli WITH. Abyste mohli provést opravy v úplně věrném analytickém úložišti, měli byste vyčistit hodnoty s nesprávnými typy v kontejneru Azure Cosmos DB.
Pokud chcete dotazovat účty Azure Cosmos DB pro MongoDB, můžete se dozvědět více o úplném vyjádření schématu věrnosti v analytickém úložišti a o rozšířených názvech vlastností, které se mají použít v analytickém úložišti Azure Cosmos DB?.
Dotazování položek podle plného věrnostního schématu
Při dotazování schématu úplné věrnosti je nutné explicitně zadat typ SQL a očekávaný typ vlastnosti služby Azure Cosmos DB v klauzuli WITH .
V následujícím příkladu předpokládáme, že string je správný typ vlastnosti geo_id a int32 je správným typem cases vlastnosti:
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
Hodnoty pro geo_id a cases které mají jiné typy jsou vráceny jako NULL hodnoty. Tento dotaz odkazuje pouze na cases se zadaným typem ve výrazu (cases.int32).
Pokud máte hodnoty s jinými typy (cases.int64, cases.float64), které nelze vyčistit v kontejneru Azure Cosmos DB, budete je muset explicitně odkazovat v WITH klauzuli a kombinovat výsledky. Následující dotaz agreguje int32, int64 a float64 uložené ve sloupci cases:
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
V tomto příkladu je počet případů uložen jako int32, int64nebo float64 hodnoty. Všechny hodnoty musí být extrahovány, aby se vypočítal počet případů na zemi nebo oblast.
Řešení problému
Na stránce samoobslužné pomoci najdete známé problémy nebo kroky pro řešení potíží, které vám můžou pomoct při řešení potenciálních problémů s dotazy azure Cosmos DB.
Související obsah
- Analýza dat Azure Cosmos DB pomocí Power BI a bezserverového fondu Synapse SQL
- Vytváření a používání zobrazení pomocí bezserverového fondu SQL
- Kurz: Zkoumání a analýza datových jezer pomocí bezserverového fondu SQL
- Pokud dochází k chybám nebo dochází k problémům s výkonem, přečtěte si téma Řešení potíží s bezserverovým fondem SQL.
- Modul: Implementace Azure Synapse Link se službou Azure Cosmos DB