Ingestování dat z Azure Cosmos DB do Azure Data Explorer
Azure Data Explorer podporuje příjem dat ze služby Azure Cosmos DB for NoSql pomocí kanálu změn. Datové připojení kanálu změn Cosmos DB je kanál příjmu dat, který naslouchá vašemu kanálu změn Cosmos DB a ingestuje data do tabulky Data Explorer. Kanál změn naslouchá novým a aktualizovaným dokumentům, ale protokoluje odstranění. Obecné informace o příjmu dat v Azure Data Explorer najdete v tématu Přehled příjmu dat v Azure Data Explorer.
Každé datové připojení naslouchá určitému kontejneru Cosmos DB a ingestuje data do zadané tabulky (v jedné tabulce může ingestovat více než jedno připojení). Metoda příjmu dat podporuje příjem dat streamování (pokud je povolený) a příjem dat ve frontě.
V tomto článku se dozvíte, jak nastavit datové připojení kanálu změn Cosmos DB pro ingestování dat do Azure Data Explorer se systémem spravovanou identitou. Než začnete, projděte si důležité informace .
K nastavení konektoru použijte následující postup:
Krok 1: Výběr tabulky Azure Data Explorer a konfigurace jejího mapování
Krok 2: Vytvoření datového připojení služby Cosmos DB
Krok 3: Testování datového připojení
Požadavky
- Předplatné Azure. Vytvořte si bezplatný účet Azure.
- Cluster a databáze Azure Data Explorer. Vytvořte cluster a databázi.
- Kontejner z účtu Cosmos DB pro NoSQL.
- Pokud váš účet Služby Cosmos DB blokuje přístup k síti, například pomocí privátního koncového bodu, musíte pro účet Cosmos DB vytvořit spravovaný privátní koncový bod . To se vyžaduje, aby váš cluster vyvolal rozhraní API kanálu změn.
Krok 1: Výběr tabulky Azure Data Explorer a konfigurace jejího mapování
Před vytvořením datového připojení vytvořte tabulku, do které uložíte ingestované data, a použijte mapování, které odpovídá schématu ve zdrojovém kontejneru Cosmos DB. Pokud váš scénář vyžaduje víc než jednoduché mapování polí, můžete pomocí zásad aktualizace transformovat a mapovat data ingestována z kanálu změn.
Následující příklad ukazuje ukázkové schéma položky v kontejneru Cosmos DB:
{
"id": "17313a67-362b-494f-b948-e2a8e95e237e",
"name": "Cousteau",
"_rid": "pL0MAJ0Plo0CAAAAAAAAAA==",
"_self": "dbs/pL0MAA==/colls/pL0MAJ0Plo0=/docs/pL0MAJ0Plo0CAAAAAAAAAA==/",
"_etag": "\"000037fc-0000-0700-0000-626a44110000\"",
"_attachments": "attachments/",
"_ts": 1651131409
}
Pomocí následujících kroků vytvořte tabulku a použijte mapování tabulky:
V webovém uživatelském rozhraní Azure Data Explorer v levé navigační nabídce vyberte Dotaz a pak vyberte databázi, ve které chcete tabulku vytvořit.
Spuštěním následujícího příkazu vytvořte tabulku s názvem TestTable.
.create table TestTable(Id:string, Name:string, _ts:long, _timestamp:datetime)
Spuštěním následujícího příkazu vytvořte mapování tabulky.
Příkaz mapuje vlastní vlastnosti z dokumentu JSON služby Cosmos DB na sloupce v tabulce TestTable následujícím způsobem:
Vlastnost Cosmos DB Sloupec tabulky Transformace id Id Žádné Jméno Name Žádné _Ts _ts Žádné _Ts _Časové razítko Používá DateTimeFromUnixSeconds
k transformaci_ts (v sekundách UNIXu) na _timestamp (datetime
))Poznámka
Doporučujeme použít následující sloupce časového razítka:
- _ts: Tento sloupec použijte k odsouhlasení dat se službou Cosmos DB.
- _timestamp: Tento sloupec použijte ke spouštění efektivních časových filtrů v dotazech Kusto. Další informace najdete v tématu Osvědčené postupy pro dotazy.
.create table TestTable ingestion json mapping "DocumentMapping" ``` [ {"column":"Id","path":"$.id"}, {"column":"Name","path":"$.name"}, {"column":"_ts","path":"$._ts"}, {"column":"_timestamp","path":"$._ts", "transform":"DateTimeFromUnixSeconds"} ] ```
Transformace a mapování dat pomocí zásad aktualizací
Pokud váš scénář vyžaduje víc než jednoduché mapování polí, můžete pomocí zásad aktualizace transformovat a mapovat data ingestována z kanálu změn.
Zásady aktualizací představují způsob, jak transformovat data při jejich ingestu do tabulky. Jsou napsané v dotazovací jazyk Kusto a spouští se v kanálu příjmu dat. Je možné je použít k transformaci dat z příjmu dat kanálu změn Cosmos DB, například v následujících scénářích:
- Vaše dokumenty obsahují pole, která by se snadněji dotazovala, pokud se transformují ve více řádcích pomocí operátoru
mv-expand
. - Chcete odfiltrovat dokumenty. Dokumenty můžete odfiltrovat například zadáním pomocí operátoru
where
. - Máte složitou logiku, kterou nelze reprezentovat v mapování tabulky.
Informace o tom, jak vytvářet a spravovat zásady aktualizací, najdete v tématu Přehled zásad aktualizace.
Krok 2: Vytvoření datového připojení služby Cosmos DB
K vytvoření datového konektoru můžete použít následující metody:
V Azure Portal přejděte na stránku přehledu clusteru a vyberte kartu Začínáme.
Na dlaždici Příjem dat vyberte Vytvořit datové připojení>Cosmos DB.
V podokně Vytvořit datové připojení služby Cosmos DB vyplňte formulář informacemi v tabulce:
Pole Description Název databáze Zvolte databázi Azure Data Explorer, do které chcete ingestovat data. Název datového připojení Zadejte název datového připojení. Předplatné Vyberte předplatné, které obsahuje váš účet NoSQL služby Cosmos DB. Účet Cosmos DB Zvolte účet Cosmos DB, ze kterého chcete ingestovat data. Databáze SQL Zvolte databázi Cosmos DB, ze které chcete ingestovat data. Kontejner SQL Zvolte kontejner Cosmos DB, ze kterého chcete ingestovat data. Název tabulky Zadejte název tabulky Azure Data Explorer, do které chcete ingestovat data. Název mapování Volitelně můžete zadat název mapování , který se má použít pro datové připojení. Volitelně můžete v části Upřesnit nastavení provést toto:
Zadejte počáteční datum načtení události. Toto je čas, od kterého konektor začne ingestovat data. Pokud nezadáte čas, konektor začne ingestovat data od okamžiku vytvoření datového připojení. Doporučený formát data je standard STANDARD UTC ISO 8601, který je zadaný takto:
yyyy-MM-ddTHH:mm:ss.fffffffZ
.Vyberte Přiřazené uživatelem a pak vyberte identitu. Ve výchozím nastavení připojení používá spravovanou identitu přiřazenou systémem . V případě potřeby můžete použít identitu přiřazenou uživatelem .
Výběrem možnosti Vytvořit datové připojení přeložíte.
Krok 3: Testování datového připojení
Do kontejneru Cosmos DB vložte následující dokument:
{ "name":"Cousteau" }
Ve webovém uživatelském rozhraní Azure Data Explorer spusťte následující dotaz:
TestTable
Sada výsledků by měla vypadat jako na následujícím obrázku:
Poznámka
Azure Data Explorer má zásadu agregace (dávkování) pro příjem dat ve frontě určenou k optimalizaci procesu příjmu dat. Výchozí zásady dávkování jsou nakonfigurované tak, aby zapečetily dávku, jakmile pro dávku platí jedna z následujících podmínek: maximální doba zpoždění 5 minut, celková velikost 1 GB nebo 1 000 objektů blob. Proto může docházet k latenci. Další informace najdete v tématu Zásady dávkování. Pokud chcete snížit latenci, nakonfigurujte tabulku tak, aby podporovala streamování. Viz zásady streamování.
Požadavky
Pro kanál změn služby Cosmos DB platí následující aspekty:
Kanál změn nezpřístupňuje události odstranění .
Kanál změn Cosmos DB obsahuje jenom nové a aktualizované dokumenty. Pokud potřebujete vědět o odstraněných dokumentech, můžete nakonfigurovat informační kanál pomocí měkké značky a označit dokument Cosmos DB jako odstraněný. Je přidána vlastnost pro události aktualizace, které označují, zda byl dokument odstraněn. Pak je můžete pomocí operátoru
where
v dotazech vyfiltrovat.Pokud například namapujete odstraněnou vlastnost na sloupec tabulky s názvem IsDeleted, můžete odstraněné dokumenty filtrovat pomocí následujícího dotazu:
TestTable | where not(IsDeleted)
Kanál změn zveřejňuje jenom nejnovější aktualizaci dokumentu.
Pokud chcete pochopit důsledky druhé úvahy, projděte si následující scénář:
Kontejner Cosmos DB obsahuje dokumenty A a B. Změny vlastnosti s názvem foo jsou uvedeny v následující tabulce:
ID dokumentu Vlastnost foo Událost Časové razítko dokumentu (_ts) A Červený Vytvoření 10 B Blue Vytvoření 20 A Oranžový Aktualizace 30 A Růžové Aktualizace 40 B Fialová Aktualizace 50 A Carmine Aktualizace 50 B NeonBlue Aktualizace 70 Rozhraní API kanálu změn se datovým konektorem dotazuje v pravidelných intervalech, obvykle každých několik sekund. Každé hlasování obsahuje změny, ke kterým došlo v kontejneru mezi voláními, ale pouze nejnovější verzi změn na dokument.
Pro ilustraci problému zvažte posloupnost volání rozhraní API s časovými razítky 15, 35, 55 a 75 , jak je znázorněno v následující tabulce:
Časové razítko volání rozhraní API ID dokumentu Vlastnost foo Časové razítko dokumentu (_ts) 15 A Červený 10 35 B Blue 20 35 A Oranžový 30 55 B Fialová 50 55 A Carmine 60 75 B NeonBlue 70 Při porovnání výsledků rozhraní API se seznamem změn provedených v dokumentu Služby Cosmos DB si všimnete, že se neshodují. Událost aktualizace dokumentu A zvýrazněná v tabulce změn v časovém razítku 40 se ve výsledcích volání rozhraní API nezobrazí.
Abychom pochopili, proč se událost nezobrazuje, prozkoumáme změny dokumentu A mezi voláními rozhraní API v časových razítek 35 a 55. Mezi těmito dvěma voláními se dokument A změnil dvakrát následujícím způsobem:
ID dokumentu Vlastnost foo Událost Časové razítko dokumentu (_ts) A Růžové Aktualizace 40 A Carmine Aktualizace 50 Při volání rozhraní API v časovém razítku 55 vrátí rozhraní API kanálu změn nejnovější verzi dokumentu. V tomto případě je nejnovější verzí dokumentu A aktualizace v časovém razítku 50, což je aktualizace vlastnosti foo z Růžové na Carmine.
Kvůli tomuto scénáři můžou datovému konektoru chybět některé přechodné změny dokumentu. Některé události můžou například zmeškat, pokud je služba datového připojení několik minut mimo provoz nebo pokud je frekvence změn dokumentů vyšší než frekvence dotazování rozhraní API. Je však zaznamenán nejnovější stav každého dokumentu.
Odstranění a opětovné vytvoření kontejneru Cosmos DB se nepodporuje.
Azure Data Explorer udržuje přehled o kanálu změn tak, že do informačního kanálu umístí kontrolní bod na jeho pozici. K tomu se používá token pro pokračování v každém fyzickém oddílu kontejneru. Při odstranění nebo opětovném vytvoření kontejneru jsou tyto tokeny pro pokračování neplatné a nejsou resetovány: musíte odstranit a znovu vytvořit datové připojení.
Odhad nákladů
Jaký vliv má použití datového připojení Ke službě Cosmos DB využití jednotek žádostí (RU) kontejneru Cosmos DB?
Konektor vyvolá rozhraní API kanálu změn služby Cosmos DB na každém fyzickém oddílu kontejneru, a to až jednou za sekundu. S těmito voláními jsou spojené následující náklady:
Náklady | Description |
---|---|
Pevné náklady | Pevné náklady jsou přibližně 2 RU na fyzický oddíl každou sekundu. |
Proměnlivé náklady | Proměnlivé náklady představují přibližně 2 % jednotek RU používaných k psaní dokumentů, i když se to může lišit v závislosti na vašem scénáři. Pokud například do kontejneru Cosmos DB zapíšete 100 dokumentů, náklady na zápis těchto dokumentů jsou 1 000 RU. Odpovídající náklady na použití konektoru ke čtení těchto dokumentů jsou přibližně 2 % nákladů na jejich zápis, přibližně 20 RU. |
Související obsah
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro