Použití referenčních dat pro vyhledávání v Stream Analytics
Referenční data (označovaná také jako vyhledávací tabulka) jsou konečnou datovou sadu, která je statická nebo pomalá, se mění v podstatě, která se používá k vyhledávání nebo rozšíření datových proudů. Například ve scénáři IoT můžete ukládat metadata o senzorech (které se často nemění) v referenčních datech a spojit je s datovými proudy IoT v reálném čase. Azure Stream Analytics načte referenční data v paměti, aby bylo možné zpracovat zpracování datových proudů s nízkou latencí. Pokud chcete používat referenční data v úloze Azure Stream Analytics, obecně se v dotazu použije referenční datová připojení .
Příklad
V reálném čase můžete mít datový proud událostí vygenerovaných v případě, že automobily přejdou na svůj telefonní kabinu. V rámci telefonní kabiny může být v reálném čase zachycena licence a spojí se se statickou datovou sadou, která má registrační údaje, a identifikovat tak licenční štítky, 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 službu Azure Blob storage a Azure SQL Database jako vrstvu úložiště pro referenční Data. Můžete také transformovat nebo kopírovat referenční data do úložiště objektů BLOB z Azure Data Factory, abyste mohli používat libovolný počet cloudových a místních úložišť dat.
Azure Blob Storage
Referenční data jsou modelována jako sekvence objektů BLOB (definovaných ve vstupní konfiguraci) ve vzestupném pořadí podle data a času zadaného v názvu objektu BLOB. Podporuje se pouze přidávání na konec sekvence pomocí data a času většího než ta, kterou Určuje poslední objekt BLOB v sekvenci. další informace najdete v tématu použití referenčních dat z Blob Storage pro úlohu Azure Stream Analytics.
Konfigurace referenčních dat objektů BLOB
Chcete-li 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 budete muset zadat při vytváření vstupních referenčních dat pomocí jejího popisu:
| Název vlastnosti | Popis |
|---|---|
| Alias pro vstup | Popisný název, který bude použit v dotazu úlohy pro odkazování na tento vstup. |
| Účet úložiště | Název účtu úložiště, ve kterém jsou umístěné objekty blob Pokud je ve stejném předplatném jako vaše Stream Analytics úlohy, můžete ho vybrat z rozevírací nabídky. |
| Storage Klíč účtu | Tajný klíč přidružený k účtu úložiště Tato funkce se automaticky naplní, pokud je účet úložiště ve stejném předplatném jako vaše úloha Stream Analytics. |
| Storage Vnitřního | kontejnery poskytují logické seskupení pro objekty blob uložené v Blob service Microsoft Azure. Po nahrání objektu blob do Blob service musíte zadat kontejner pro tento objekt BLOB. |
| Vzor cesty | Tato vlastnost je povinná, která se používá k vyhledání objektů BLOB v zadaném kontejneru. V cestě se můžete rozhodnout, že chcete zadat jednu nebo více instancí následujících 2 proměnných: {Date}, {Time} Příklad 1: produkty/{Date}/{Time}/product-list.csv Příklad 2: produkty/{Date}/product-list.csv Příklad 3: product-list.csv Pokud objekt BLOB v zadané cestě neexistuje, bude úloha Stream Analytics čekat na neomezenou dobu, než se objekt BLOB stane dostupným. |
| Formát data [nepovinné] | Pokud jste {Date} použili v rámci zadaného vzoru cesty, můžete vybrat formát data, ve kterém jsou objekty blob seřazené z rozevírací nabídky podporovaných formátů. Příklad: RRRR/MM/DD, MM/DD/RRRR atd. |
| Formát času [nepovinné] | Pokud jste v rámci zadaného vzoru cesty použili {Time}, můžete vybrat formát času, ve kterém jsou objekty blob seřazené z rozevírací nabídky podporovaných formátů. Příklad: HH, HH/mm nebo HH-mm. |
| Formát serializace události | Chcete-li zajistit, aby dotazy fungovaly podle očekávání, Stream Analytics musí znát, který formát serializace používáte pro příchozí datové proudy. V případě referenčních dat jsou podporované formáty CSV a JSON. |
| Encoding | Formát UTF-8 v tuto chvíli podporuje pouze kódování UTF-8. |
Statická referenční data
Pokud se nepředpokládá, že se vaše referenční data mění, je povolená podpora statických referenčních dat tím, že v konfiguraci vstupu určíte statickou cestu. Azure Stream Analytics převezme objekt BLOB ze zadané cesty. substituční tokeny {Date} a {Time} nejsou povinné. Vzhledem k tomu, že referenční data jsou v Stream Analytics neměnné, není doporučeno přepsat statický referenční datový objekt BLOB.
Generování referenčních dat podle plánu
Pokud jsou vaše referenční data s pomalou změnou datové sady, je povolená podpora pro aktualizaci referenčních dat zadáním vzoru cesty ve vstupní konfiguraci pomocí náhradních tokenů {Date} a {Time}. Stream Analytics převezme 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 formát času "HH-mm" nastaví Stream Analytics k výběru aktualizovaného objektu blob sample/2015-04-16/17-30/products.csv v 5:30. dubna 2015 časové pásmo UTC.
Azure Stream Analytics automaticky hledá aktualizované objekty blob referenčních dat v jednom minutovém intervalu. Pokud se objekt BLOB s časovým razítkem 10:30:00 nahraje s malým zpožděním (například 10:30:30), všimnete se krátké prodlevy v Stream Analytics úlohy odkazující na tento objekt BLOB. Aby nedocházelo k takovým scénářům, doporučuje se nahrát objekt BLOB starší než cílový efektivní čas (10:30:00 v tomto příkladu), čímž umožníte Stream Analytics úlohy dostat dostatek času k tomu, aby se zjistila a načetla v paměti a prováděla operace.
Poznámka
V současné době Stream Analytics úlohy hledají obnovení objektu BLOB pouze v případě, že čas počítače přejde k času zakódovanému v názvu objektu BLOB. Například úloha bude hledat co sample/2015-04-16/17-30/products.csv nejdříve, ale ne dříve než 5:30. dubna 2015 časová pásma UTC. Nikdy nebude Hledat objekt BLOB se zakódovaným časem starším než poslední zjištěný.
Když například úloha nalezne objekt blob, sample/2015-04-16/17-30/products.csv bude ignorovat všechny soubory s zakódovaným datem starším než 5:30. dubna 2015, takže pokud se pozdní příchozí sample/2015-04-16/17-25/products.csv objekt BLOB vytvoří ve stejném kontejneru, úloha ho nebude používat.
Podobně platí, že pokud sample/2015-04-16/17-30/products.csv je určena pouze v 10:03. dubna 2015, ale v kontejneru není přítomen žádný objekt BLOB se starším datem, úloha použije tento soubor od 10:03. dubna, 2015 a použijte předchozí referenční data do té doby.
Výjimkou je to, že úloha potřebuje znovu zpracovat data zpět v čase nebo při prvním spuštění úlohy. V okamžiku spuštění úlohy hledá nejaktuálnější objekt BLOB vytvořený před zadaným počátečním časem úlohy. K tomu je potřeba zajistit, aby při spuštění úlohy byla nastavena neprázdná referenční datová sada. Pokud ho nejde najít, úloha zobrazí následující diagnostiku: Initializing input without a valid reference data blob for UTC time <start time> .
Azure Data Factory lze použít k orchestraci úlohy vytváření aktualizovaných objektů BLOB vyžadovaných Stream Analytics k aktualizaci definic referenčních dat. Data Factory je cloudová služba pro integraci dat, která orchestruje a automatizuje přesouvání a transformaci dat. Data Factory podporuje připojení k velkému počtu cloudových a místních úložišť dat a snadné přesouvání dat podle pravidelného plánu, který zadáte. další informace a podrobné pokyny k nastavení kanálu Data Factory pro generování referenčních dat pro Stream Analytics, která se aktualizují podle předem definovaného plánu, najdete v této ukázce GitHub.
Tipy při obnovování referenčních dat objektů blob
- Nepřepište objekty blob referenčních dat, protože jsou neměnné.
- Doporučený způsob, jak aktualizovat referenční data, je:
- Použít {Date}/{Time} ve vzoru cesty
- Přidat nový objekt BLOB s použitím stejného vzoru kontejneru a cesty definovaného ve vstupu úlohy
- Použijte datum a čas větší než ta, která je určena posledním objektem BLOB v sekvenci.
- Referenční datové objekty blob se neúčtují podle času poslední změny objektu blob, ale jenom podle času a data zadaného v názvu objektu BLOB pomocí nahrazení {Date} a {Time}.
- Abyste se vyhnuli nutnosti vypsat velký počet objektů blob, zvažte odstranění velmi starých objektů blob, pro které se zpracování už nedokončí. Upozorňujeme, že ASA můžou v některých scénářích, jako je restartování, potřebovat znovu zpracovat malou část.
Azure SQL Database
Azure SQL Database referenční data jsou načítána úlohou Stream Analytics a jsou ukládána jako snímek v paměti ke zpracování. Snímek referenčních dat je uložený také v kontejneru v účtu úložiště, který zadáte v nastavení konfigurace. Kontejner se vytvoří automaticky při spuštění úlohy. Pokud se úloha zastaví nebo vstoupí do stavu selhání, automaticky vytvořené kontejnery se odstraní při restartování úlohy.
Pokud jsou vaše referenční data datovou sadou s pomalou změnou, je třeba pravidelně aktualizovat snímek, který se používá ve vaší úloze. Stream Analytics umožňuje nastavit obnovovací frekvenci při konfiguraci Azure SQL Databaseho vstupního připojení. modul runtime Stream Analytics se dotazuje Azure SQL Database v intervalu zadaném obnovovací frekvencí. Frekvence nejrychlejší aktualizace je podporovaná jednou za minutu. Pro každou aktualizaci Stream Analytics ukládá nový snímek v poskytnutém účtu úložiště.
Stream Analytics poskytuje dvě možnosti pro dotazování na Azure SQL Database. Dotaz na snímek je povinný a musí být zahrnutý v každé úloze. Stream Analytics spouští dotaz na snímek pravidelně v závislosti na intervalu aktualizace a používá výsledek dotazu (snímku) jako referenční sady dat. Dotaz na snímek by měl vyhovovat většině scénářů, ale pokud narazíte na problémy s výkonem s velkými sadami dat a rychlostmi rychlé aktualizace, můžete použít možnost rozdílového dotazu. Dotazy, které mají vrátit referenční datovou sadu více než 60 sekund, budou mít za následek časový limit.
Při použití možnosti rozdílového dotazu Stream Analytics nejprve spustí dotaz na snímek, aby se na základě referenční sady základních dat našl. Poté Stream Analytics pravidelně spouští rozdílový dotaz na základě intervalu aktualizace, aby se načítaly přírůstkové změny. Tyto přírůstkové změny se průběžně aplikují na referenční datovou sadu, aby byla aktualizovaná. Použití rozdílového dotazu může pomoct snížit náklady na úložiště a síťové V/V operace.
Konfigurace SQL Database referencí
Pokud chcete nakonfigurovat SQL Database referenční data, musíte nejprve vytvořit vstup referenčních dat. Následující tabulka vysvětluje jednotlivé vlastnosti, které budete muset zadat při vytváření vstupu referenčních dat s jeho popisem. Další informace najdete v tématu Použití referenčníchdat z SQL Database pro Azure Stream Analytics úlohy .
Azure SQL Managed Instance můžete použít jako vstup referenčních dat. Musíte nakonfigurovat veřejný koncový bod ve spravované instanci SQL pak ručně nakonfigurovat následující nastavení v Azure Stream Analytics. Ruční konfigurací níže SQL Server virtuální počítač Azure se spuštěnou databází, ke které je připojená databáze.
| Název vlastnosti | Popis |
|---|---|
| Alias vstupu | Popisný název, který se použije v dotazu úlohy k odkazování na tento vstup. |
| Předplatné | Zvolte vaše předplatné. |
| databáze | Název Azure SQL Database, který obsahuje vaše referenční data. U SQL spravované instance je potřeba zadat port 3342. Příklad: sampleserver.public.database.windows.net,3342 |
| Uživatelské jméno | Uživatelské jméno přidružené k vašemu Azure SQL Database. |
| Heslo | Heslo přidružené k vašemu Azure SQL Database. |
| Pravidelně aktualizovat | Tato možnost umožňuje zvolit obnovovací frekvenci. Výběrem možnosti On (On) můžete zadat obnovovací frekvenci ve formátu DD:HH:MM. |
| Dotaz na snímek | Toto je výchozí možnost dotazu, která načte referenční data z vaší SQL Database. |
| Rozdílový dotaz | Pro pokročilé scénáře s velkými datovými sadami a krátkou obnovovací rychlostí zvolte přidání rozdílového dotazu. |
Omezení velikosti
Pro nejlepší výkon doporučujeme použít referenční datové sady, které jsou menší než 300 MB. Referenční datové sady 5 GB nebo nižší se podporují v úlohách s 6 SU nebo více. Použití velmi rozsáhlých referenčních dat může mít vliv na koncovou latenci vaší úlohy. S tím, jak se složitost dotazů zvyšuje, aby zahrnovala stavové zpracování, jako jsou agregace s okny, časová spojení a funkce dočasných analýz, se očekává, že se maximální podporovaná velikost referenčních dat sníží. Pokud Azure Stream Analytics referenční data a provádět složité operace, úloha bude mít dostatek paměti a selže. V takových případech dosáhne metrika % využití SU 100 %.
| Počet jednotek streamování | Doporučená velikost |
|---|---|
| 1 | 50 MB nebo nižší |
| 3 | 150 MB nebo nižší |
| 6 a více | 5 GB nebo nižší. |
Podpora komprese není k dispozici pro referenční data. U referenčních datových sad větších než 300 MB se pro zajištění optimálního výkonu Azure SQL Database jako zdroj s možností rozdílového dotazu. Pokud se rozdílový dotaz v takových scénářích nepouží, uvidíte špičky v metrikě zpoždění vodoznaku při každé aktualizaci referenční datové sady.
Spojování více referenčních datových sad v úlohu
V jednom kroku dotazu můžete spojit pouze jeden vstup streamu s jedním vstupem referenčních dat. Můžete ale spojit více referenčních datových sad rozdělením dotazu do několika kroků. Příklad najdete níže.
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
IoT Edge úlohy
Pro úlohy Edge se podporují pouze Stream Analytics referenční data. Když se úloha nasadí do IoT Edge zařízení, načte referenční data z cesty k souboru definovanému uživatelem. Připravte na zařízení soubor referenčních dat. V případě Windows kontejneru umístěte soubor referenčních dat na místní disk a nasdílejte místní disk s kontejnerem Dockeru. Pro kontejner Linuxu vytvořte svazek Dockeru a naplňte datový soubor na svazek.
Referenční data IoT Edge aktualizaci aktivuje nasazení. Po aktivaci modul Stream Analytics vybere aktualizovaná data bez zastavení spuštěné úlohy.
Existují dva způsoby, jak aktualizovat referenční data:
Aktualizujte cestu k referenčním datům v Stream Analytics úlohy z Azure Portal.
Aktualizujte IoT Edge nasazení.