Vlastní dělení výstupu objektu blob ve službě Azure Stream Analytics

Azure Stream Analytics podporuje vlastní dělení výstupu objektu blob s vlastními poli nebo atributy a vlastními vzory cest DateTime.

Vlastní pole nebo atributy

Vlastní pole nebo vstupní atributy zlepšují podřízené pracovní postupy zpracování dat a generování sestav tím, že umožňují větší kontrolu nad výstupem.

Možnosti klíče oddílu

Klíč oddílu nebo název sloupce, který se používá k dělení vstupních dat, může obsahovat libovolný znak, který se akceptuje pro názvy objektů blob. Není možné použít vnořená pole jako klíč oddílu, pokud je nepoužíváte ve spojení s aliasy, ale určité znaky můžete použít k vytvoření hierarchie souborů. Následující dotaz můžete například použít k vytvoření sloupce, který zkombinuje data ze dvou dalších sloupců a vytvoří jedinečný klíč oddílu.

SELECT name, id, CONCAT(name, "/", id) AS nameid

Klíč oddílu musí být NVARCHAR(MAX), BIGINT, FLOAT nebo BIT (úroveň kompatibility 1.2 nebo vyšší). Typy DateTime, Array a Records nejsou podporované, ale dají se použít jako klíče oddílů, pokud se převedou na Řetězce. Další informace najdete v tématu Datové typy Azure Stream Analytics.

Příklad

Předpokládejme, že úloha přebírá vstupní data z živých uživatelských relací připojených k externí službě videoher, kde přijatá data obsahují sloupcový client_id k identifikaci relací. Pokud chcete data rozdělit podle client_id, nastavte pole Model cesty k objektu blob tak, aby při vytváření úlohy zahrnovalo token oddílu {client_id} ve vlastnostech výstupu objektu blob. Když data s různými client_id hodnotami procházejí úlohou Stream Analytics, ukládají se výstupní data do samostatných složek na základě jedné client_id hodnoty na složku.

Vzor cesty s ID klienta

Podobně pokud vstupem úlohy byla data z milionů senzorů, kde měl každý senzor sensor_id, vzor cesty by byl {sensor_id} , aby se data každého senzoru rozdělila do různých složek.

Když použijete rozhraní REST API, výstupní část souboru JSON použitého pro tento požadavek může vypadat jako na následujícím obrázku:

Výstup rozhraní REST API

Jakmile se úloha spustí, clients kontejner může vypadat jako na následujícím obrázku:

Kontejner klientů

Každá složka může obsahovat více objektů blob, přičemž každý objekt blob obsahuje jeden nebo více záznamů. Ve výše uvedeném příkladu je ve složce s názvem 06000000 jeden objekt blob s následujícím obsahem:

Obsah objektu blob

Všimněte si, že každý záznam v objektu blob má client_id sloupec odpovídající názvu složky, protože sloupec použitý k rozdělení výstupu ve výstupní cestě byl client_id.

Omezení

  1. Ve výstupní vlastnosti objektu blob Path Pattern je povolený pouze jeden vlastní klíč oddílu. Všechny následující vzory cest jsou platné:

    • cluster1/{date}/{aFieldInMyData}
    • cluster1/{time}/{aFieldInMyData}
    • cluster1/{aFieldInMyData}
    • cluster1/{date}/{time}/{aFieldInMyData}
  2. Pokud zákazníci chtějí použít více vstupních polí, můžou vytvořit složený klíč v dotazu pro oddíl vlastní cesty ve výstupu objektu blob pomocí concat. Příklad: Ze vstupu vyberte concat (col1, col2) jako compositeColumn do objektu blobOutput. Pak můžou jako vlastní cestu v úložišti objektů blob zadat compositeColumn .

  3. Klíče oddílů nerozlišují velká a malá písmena, takže klíče oddílů jako John a john jsou ekvivalentní. Výrazy se také nedají použít jako klíče oddílů. Například {columnA + columnB} nefunguje.

  4. Pokud se vstupní datový proud skládá ze záznamů s kardinalitou klíče oddílu pod hodnotou 8000, záznamy se připojí k existujícím objektům blob a v případě potřeby se vytvoří nové objekty blob. Pokud je kardinalita více než 8000, neexistuje žádná záruka, že se existující objekty blob zapíší do a nebudou se vytvářet nové objekty blob pro libovolný počet záznamů se stejným klíčem oddílu.

  5. Pokud je výstup objektu blob nakonfigurovaný jako neměnný, Vytvoří Stream Analytics při každém odeslání dat nový objekt blob.

Vlastní vzory cest data a času

Vlastní vzory cesty data a času umožňují určit výstupní formát, který bude v souladu s konvencemi streamování Hive, a dává službě Azure Stream Analytics možnost odesílat data do azure HDInsight a Azure Databricks pro následné zpracování. Vlastní vzory cesty DateTime se snadno implementují pomocí klíčového datetime slova v poli Předpona cesty výstupu objektu blob spolu se specifikátorem formátu. Například, {datetime:yyyy}.

Podporované tokeny

Následující tokeny specifikátoru formátu lze použít samostatně nebo v kombinaci k dosažení vlastních formátů DateTime:

Specifikátor formátu Description Výsledky v příkladu času 2018-01-02T10:06:08
{datetime:yyyy} Rok jako čtyřmístné číslo 2018
{datetime:MM} Měsíc od 01 do 12 01
{datetime:M} Měsíc od 1 do 12 1
{datetime:dd} Den od 01 do 31 02
{datetime:d} Den od 1 do 31 2
{datetime:HH} Hodina ve 24hodinovém formátu, od 00 do 23 10
{datetime:mm} Minuty od 00 do 60 06
{datetime:m} Minuty od 0 do 60 6
{datetime:ss} Sekundy od 00 do 60 08

Pokud nechcete používat vlastní vzory DateTime, můžete přidat token {date} nebo {time} do předpony cesty a vygenerovat tak rozevírací seznam s integrovanými formáty DateTime.

Starší formáty DateTime ve službě Stream Analytics

Rozšiřitelnost a omezení

Ve vzoru cesty můžete použít libovolný počet tokenů, {datetime:<specifier>}dokud nedosáhnete limitu počtu znaků předpony cesty. Specifikátory formátu není možné kombinovat v rámci jednoho tokenu nad rámec kombinací, které už jsou uvedené v rozevíracích náznacích data a času.

V případě oddílu cesty :logs/MM/dd

Platný výraz Neplatný výraz
logs/{datetime:MM}/{datetime:dd} logs/{datetime:MM/dd}

Stejný specifikátor formátu můžete v předponě cesty použít vícekrát. Token se musí pokaždé opakovat.

Konvence streamování Hive

Vlastní vzory cest pro úložiště objektů blob je možné použít s konvencí streamování Hive, která očekává, že složky budou v názvu složky označené column= .

Například, year={datetime:yyyy}/month={datetime:MM}/day={datetime:dd}/hour={datetime:HH}.

Vlastní výstup eliminuje rušivá změny tabulek a ruční přidávání oddílů k přenosu dat mezi Azure Stream Analytics a Hive. Místo toho lze mnoho složek přidat automaticky pomocí:

MSCK REPAIR TABLE while hive.exec.dynamic.partition true

Příklad

Vytvořte účet úložiště, skupinu prostředků, úlohu Stream Analytics a vstupní zdroj podle úvodní příručky azure Stream Analytics Azure Portal. Použijte stejná ukázková data jako v úvodní příručce, která jsou k dispozici také na GitHubu.

Vytvořte jímku výstupu objektu blob s následující konfigurací:

Jímka výstupu objektu blob služby Stream Analytics

Vzor úplné cesty je následující:

year={datetime:yyyy}/month={datetime:MM}/day={datetime:dd}

Při spuštění úlohy se v kontejneru objektů blob vytvoří struktura složek založená na vzoru cesty. Můžete přejít k podrobnostem na denní úroveň.

Výstup objektu blob Stream Analytics s vlastním vzorem cesty

Další kroky