Použití referenčních dat pro vyhledávání ve Stream Analytics

Referenční data jsou konečná datová sada, která se statická nebo pomalu mění v přírodě. Slouží k vyhledávání nebo rozšiřování datových proudů. Referenční data se také označují jako vyhledávací tabulka.

Jako příklad vezměte scénář IoT. V referenčních datech můžete ukládat metadata o senzorech, které se často nemění. Pak ho můžete spojit s datovými proudy IoT v reálném čase.

Azure Stream Analytics načítá referenční data do paměti, aby bylo dosaženo zpracování datových proudů s nízkou latencí. Pokud chcete použít referenční data v úloze Stream Analytics, obecně použijete v dotazu spojení referenčních dat.

Příklad

Můžete mít stream událostí v reálném čase vygenerovaný, když auta projdou placenou linkou. Placená linka může zachytit licenční značky v reálném čase. Tato data se můžou spojit se statickou datovou sadou, která obsahuje podrobnosti registrace k identifikaci licenčních plátů, jejichž platnost vypršela.

SELECT I1.EntryTime, I1.LicensePlate, I1.TollId, R.RegistrationId  
FROM Input1 I1 TIMESTAMP BY EntryTime  
JOIN Registration R  
ON I1.LicensePlate = R.LicensePlate  
WHERE R.Expired = '1'

Stream Analytics podporuje Azure Blob Storage, Azure Data Lake Storage Gen2 a Azure SQL Database jako vrstvu úložiště pro referenční data. Pokud máte referenční data v jiných úložištích dat, zkuste pomocí služby Azure Data Factory extrahovat, transformovat a načíst data do jednoho z podporovaných úložišť dat. Další informace najdete v tématu Aktivita kopírování ve službě Azure Data Factory – přehled.

Azure Blob Storage nebo Azure Data Lake Storage Gen2

Referenční data se modelují jako posloupnost objektů blob ve vzestupném pořadí data a času zadaného v názvu objektu blob. Objekty blob je možné přidat pouze na konec sekvence pomocí data a času , který je větší než ten, který určuje poslední objekt blob v sekvenci. Objekty blob jsou definovány ve vstupní konfiguraci.

Další informace najdete v tématu Použití referenčních dat ze služby Blob Storage pro úlohu Stream Analytics.

Konfigurace referenčních dat objektů blob

Pokud chcete nakonfigurovat referenční data, musíte nejprve vytvořit vstup, který je typu referenčních dat. Následující tabulka vysvětluje každou vlastnost, kterou potřebujete zadat při vytváření vstupu referenčních dat s popisem.

Název vlastnosti Popis
Alias vstupu Popisný název použitý v dotazu úlohy k odkazování na tento vstup.
Účet úložiště Název účtu úložiště, ve kterém se nacházejí objekty blob. Pokud je ve stejném předplatném jako vaše úloha Stream Analytics, vyberte ji z rozevíracího seznamu.
Klíč účtu úložiště Tajný klíč přidružený k účtu úložiště. Tento klíč se vyplní automaticky, pokud je účet úložiště ve stejném předplatném jako vaše úloha Stream Analytics.
Kontejner úložiště Kontejnery poskytují logické seskupení objektů blob uložených ve službě Blob Storage. Když nahrajete objekt blob do služby Blob Storage, musíte pro tento objekt blob zadat kontejner.
Vzor cesty Tato požadovaná vlastnost slouží k vyhledání objektů blob v zadaném kontejneru. V rámci cesty se můžete rozhodnout zadat jednu nebo více instancí proměnných {date} a {time}.
Příklad 1: products/{date}/{time}/product-list.csv
Příklad 2: products/{date}/product-list.csv
Příklad 3: product-list.csv

Pokud objekt blob v zadané cestě neexistuje, úloha Stream Analytics počká na zpřístupnění objektu blob neomezeně dlouho.
Formát data [volitelné] Pokud jste v zadaném vzoru cesty použili {date}, vyberte formát data, ve kterém jsou objekty blob uspořádané z rozevíracího seznamu podporovaných formátů.
Příklad: YYYY/MM/DD nebo MM/DD/YYYY
Formát času [volitelné] Pokud jste v zadaném vzoru cesty použili {time}, vyberte formát času, ve kterém jsou objekty blob uspořádané z rozevíracího seznamu podporovaných formátů.
Příklad: HH, HH/mm nebo HH-mm
Formát serializace události Aby vaše dotazy fungovaly očekávaným způsobem, musí Stream Analytics vědět, jaký formát serializace používáte pro příchozí datové proudy. Pro referenční data jsou podporované formáty CSV a JSON.
Kódování UTF-8 je v tuto chvíli jediným podporovaným formátem kódování.

Statická referenční data

U referenčních dat se nemusí očekávat, že se změní. Pokud chcete povolit podporu statických referenčních dat, zadejte statickou cestu ve vstupní konfiguraci.

Stream Analytics vybere objekt blob ze zadané cesty. Náhradní tokeny {date} a {time} nejsou povinné. Vzhledem k tomu, že referenční data jsou v Stream Analytics neměnná, nedoporučuje se přepisovat objekt blob statických referenčních dat.

Generování referenčních dat podle plánu

Referenční data můžou být pomalu se měnící datovou sadou. Chcete-li aktualizovat referenční data, zadejte vzor cesty ve vstupní konfiguraci pomocí tokenů nahrazení {date} a {time}. Stream Analytics vybere aktualizované definice referenčních dat na základě tohoto vzoru cesty.

Například vzor sample/{date}/{time}/products.csv s formátem data RRRR-MM-DD a časovým formátem HH-mm dává Stream Analytics pokyn k vyzvednutí aktualizovaného objektu blob sample/2015-04-16/17-30/products.csv 16. dubna 2015 v 17:30 UTC.

Stream Analytics automaticky vyhledá aktualizované objekty blob referenčních dat v jednom minutovém intervalu. Objekt blob s časovým razítkem 10:30:00 se může nahrát s malým zpožděním, například 10:30:30. Všimněte si malého zpoždění v úloze Stream Analytics odkazující na tento objekt blob.

Pokud se chcete takovým scénářům vyhnout, nahrajte objekt blob dříve než cílový efektivní čas, což je v tomto příkladu 10:30:00. Úloha Stream Analytics teď má dostatek času ke zjištění a načtení objektu blob v paměti a provádění operací.

Poznámka:

V současné době úlohy Stream Analytics hledají aktualizaci objektu blob pouze v případě, že čas počítače přejde na čas kódovaný v názvu objektu blob. Například úloha hledá sample/2015-04-16/17-30/products.csv co nejdříve, ale ne dříve než 16. dubna 2015 v 16:30 UTC. Nikdy nebude hledat objekt blob s kódovaným časem dřívějším než poslední zjištěný objekt blob.

Například po nalezení objektu blob sample/2015-04-16/17-30/products.csvúloha ignoruje všechny soubory s zakódovaným datem dřívějším než 16. dubna 2015 v 17:30. Pokud se později přicházející sample/2015-04-16/17-25/products.csv objekt blob vytvoří ve stejném kontejneru, úloha ho nepoužije.

V jiném příkladu sample/2015-04-16/17-30/products.csv se vytvoří pouze 16. dubna 2015 v 10:03, ale v kontejneru se nenachází žádný objekt blob s dřívějším datem. Úloha pak použije tento soubor od 16. dubna 2015 v 10:03 a použije do té doby předchozí referenční data.

Výjimkou tohoto chování je, když úloha potřebuje znovu zpracovat data v čase nebo při prvním spuštění úlohy.

Při spuštění úloha hledá poslední objekt blob vytvořený před zadaným časem spuštění úlohy. Toto chování zajišťuje, že při spuštění úlohy existuje neprázdná referenční datová sada. Pokud ji nenajdete, zobrazí se v úloze následující diagnostika: Initializing input without a valid reference data blob for UTC time <start time>.

Při aktualizaci referenční datové sady se vygeneruje diagnostický protokol: Loaded new reference data from <blob path>. Z mnoha důvodů může úloha potřebovat znovu načíst předchozí referenční datovou sadu. Nejčastěji je důvodem opětovné zpracování minulých dat. V tuto chvíli se vygeneruje stejný diagnostický protokol. Tato akce neznamená, že aktuální streamová data používají předchozí referenční data.

Azure Data Factory se dá použít k orchestraci úlohy vytváření aktualizovaných objektů blob, které stream Analytics vyžaduje k aktualizaci definic referenčních dat.

Data Factory je cloudová služba pro integraci dat, která orchestruje a automatizuje přesun a transformaci dat. Data Factory podporuje připojení k velkému počtu cloudových a místních úložišť dat. Data se dají snadno přesouvat podle běžného plánu, který zadáte.

Další informace o tom, jak nastavit kanál Data Factory pro generování referenčních dat pro Stream Analytics, která se aktualizují podle předdefinovaného plánu, najdete v této ukázce GitHubu.

Tipy při aktualizaci referenčních dat objektů blob

  • Nepřepisujte referenční objekty blob dat, protože jsou neměnné.
  • Doporučeným způsobem aktualizace referenčních dat je:
    • V vzoru cesty použijte {date}/{time}.
    • Přidejte nový objekt blob pomocí stejného vzoru kontejneru a cesty definovaného ve vstupu úlohy.
    • Použijte datum a čas větší než datum a čas určený posledním objektem blob v sekvenci.
  • Objekty blob referenčních dat nejsou* seřazené časem poslední změny objektu blob. Jsou seřazené pouze podle data a času zadaného v názvu objektu blob pomocí nahrazení {date} a {time}.
  • Abyste se vyhnuli výpisu velkého počtu objektů blob, odstraňte staré objekty blob, pro které už nebude zpracování provedeno. Stream Analytics může v některých scénářích, jako je restartování, přepracovat malé množství.

Azure SQL Database

Vaše úloha Stream Analytics načte referenční data služby SQL Database a uloží je jako snímek do paměti pro zpracování. Snímek referenčních dat je také uložený v kontejneru v účtu úložiště. V nastavení konfigurace zadáte účet úložiště.

Kontejner se automaticky vytvoří při spuštění úlohy. Pokud se úloha zastaví nebo přejde do stavu selhání, automaticky vytvořené kontejnery se po restartování úlohy odstraní.

Pokud se referenční data pomalu mění, musíte pravidelně aktualizovat snímek, který se používá ve vaší úloze.

Pomocí Stream Analytics můžete nastavit obnovovací frekvenci při konfiguraci vstupního připojení ke službě SQL Database. Modul runtime Stream Analytics dotazuje instanci služby SQL Database v intervalu určeném obnovovací rychlostí. Podporovaná rychlost aktualizace je jednou za minutu. Pro každou aktualizaci ukládá Stream Analytics nový snímek do zadaného účtu úložiště.

Stream Analytics nabízí dvě možnosti pro dotazování instance služby SQL Database. Dotaz na snímek je povinný a musí být součástí každé úlohy. Stream Analytics pravidelně spouští dotaz na snímky na základě intervalu aktualizace. Jako referenční datovou sadu používá výsledek dotazu (snímek).

Dotaz snímku by měl vyhovovat většině scénářů. Pokud narazíte na problémy s výkonem u velkých datových sad a rychlostí rychlé aktualizace, použijte možnost rozdílového dotazu. Dotazy, které zabírají více než 60 sekund, vrátí výsledek referenční datové sady kvůli vypršení časového limitu.

S možností rozdílového dotazu Stream Analytics spustí nejprve dotaz snímku, aby získal základní referenční datovou sadu. Stream Analytics pak spustí rozdílový dotaz pravidelně na základě intervalu aktualizace, aby načetl přírůstkové změny. Tyto přírůstkové změny se průběžně aplikují na referenční datovou sadu, aby se aktualizovala. Použití možnosti rozdílového dotazu může pomoct snížit náklady na úložiště a vstupně-výstupní operace sítě.

Konfigurace referenčních dat služby SQL Database

Pokud chcete nakonfigurovat referenční data služby SQL Database, musíte nejprve vytvořit vstup referenčních dat. Následující tabulka vysvětluje každou vlastnost, kterou potřebujete zadat při vytváření vstupu referenčních dat s popisem. Další informace najdete v tématu Použití referenčních dat ze služby SQL Database pro úlohu Stream Analytics.

Azure SQL Managed Instance můžete použít jako vstup referenčních dat. Ve službě SQL Managed Instance musíte nakonfigurovat veřejný koncový bod. Pak v Stream Analytics ručně nakonfigurujete následující nastavení. Virtuální počítač Azure, na kterém běží SQL Server s připojenou databází, je podporován také ruční konfigurací těchto nastavení.

Název vlastnosti Popis
Alias vstupu Popisný název použitý v dotazu úlohy k odkazování na tento vstup.
Předplatné Vaše předplatné.
Databáze Instance SLUŽBY SQL Database, která obsahuje vaše referenční data. Pro službu SQL Managed Instance musíte zadat port 3342. Příklad: sampleserver.public.database.windows.net,3342.
Username Uživatelské jméno přidružené k vaší instanci služby SQL Database.
Heslo Heslo přidružené k vaší instanci služby SQL Database.
Pravidelně aktualizovat Tato možnost umožňuje vybrat obnovovací frekvenci. Výběrem možnosti Zapnuto určíte obnovovací frekvenci v DD:HH:MM.
Dotaz na snímek Tato výchozí možnost dotazu načte referenční data z vaší instance služby SQL Database.
Rozdílový dotaz V případě pokročilých scénářů s velkými datovými sadami a krátkou obnovovací rychlostí přidejte rozdílový dotaz.

Omezení velikosti

Pro zajištění nejlepšího výkonu používejte referenční datové sady, které jsou menší než 300 MB. Referenční datové sady 5 GB nebo nižší jsou podporovány v úlohách se šesti jednotkami streamování nebo více. Použití velké referenční datové sady může mít vliv na komplexní latenci vaší úlohy.

Složitost dotazů se může zvýšit, aby zahrnovalo stavové zpracování, jako jsou agregace s časovými okny, dočasné spojení a dočasné analytické funkce. Při zvýšení složitosti se zmenší maximální podporovaná velikost referenčních dat.

Pokud Stream Analytics nemůže načíst referenční data a provádět složité operace, úloha vyčerpá paměť a selže. V takových případech metrika využití jednotky streamování dosáhne 100 %.

Počet jednotek streamování Doporučená velikost
0 50 MB nebo nižší
3 150 MB nebo nižší
6 a více 5 GB nebo nižší

Podpora komprese není dostupná pro referenční data. U referenčních datových sad větších než 300 MB použijte jako zdroj službu SQL Database s možností rozdílového dotazu optimální výkon. Pokud se možnost rozdílového dotazu v takových scénářích nepoužívá, při každé aktualizaci referenční datové sady se v metrikě zpoždění vodoznaku zobrazí špičky.

Spojení více referenčních datových sad v úloze

Ke streamovaným vstupům můžete připojit pouze vstup referenčních dat. Pokud tedy chcete spojit více referenčních datových sad, rozdělte dotaz do několika kroků. Tady je příklad:

With Step1 as (
    --JOIN input stream with reference data to get 'Desc'
    SELECT streamInput.*, refData1.Desc as Desc
    FROM    streamInput
    JOIN    refData1 ON refData1.key = streamInput.key 
)
--Now Join Step1 with second reference data
SELECT *
INTO    output 
FROM    Step1
JOIN    refData2 ON refData2.Desc = Step1.Desc 

Úlohy IoT Edge

U hraničních úloh Stream Analytics se podporují jenom místní referenční data. Když je úloha nasazená do zařízení IoT Edge, načte referenční data z uživatelsky definované cesty k souboru. Připravte na zařízení referenční datový soubor.

V případě kontejneru Windows umístěte referenční datový soubor na místní disk a nasdílejte místní disk s kontejnerem Dockeru. V případě linuxového kontejneru vytvořte svazek Dockeru a naplňte datový soubor na svazek.

Referenční data na aktualizaci IoT Edge se aktivují nasazením. Po aktivaci modul Stream Analytics vybere aktualizovaná data bez zastavení spuštěné úlohy.

Referenční data můžete aktualizovat dvěma způsoby:

  • Aktualizujte cestu k referenčním datům v úloze Stream Analytics z webu Azure Portal.
  • Aktualizujte nasazení IoT Edge.

Další kroky