POUŽÍT (Azure Stream Analytics)

Operátor APPLY umožňuje vyvolat funkci s hodnotou tabulky pro každý řádek vrácený výrazem vnější tabulky dotazu. Funkce s hodnotou tabulky funguje jako správný vstup a výraz vnější tabulky funguje jako levý vstup. Pravý vstup se vyhodnocuje pro každý řádek z levého vstupu a vytvořené řádky se zkombinují pro konečný výstup. Seznam sloupců vytvořených operátorem APPLY je sada sloupců v levém vstupu následovaná seznamem sloupců vrácených správným vstupem.

Existují dvě formy POUŽÍT: KŘÍŽOVÉ POUŽITÍ a VNĚJŠÍ POUŽÍT.

FUNKCE CROSS APPLY vrátí pouze řádky z vnější tabulky, které vytvoří sadu výsledků z funkce s hodnotou tabulky. Výsledek křížové použít nelze použít jako cílovou hodnotu TIMESTAMP BY. Můžete ale použít jednu úlohu Azure Stream Analytics, která provádí křížové použití, a druhou úlohu k provedení funkce TIMESTAMP BY.

Funkce OUTER APPLY vrátí oba řádky, které vytvářejí sadu výsledků, a řádky, které ne, s hodnotami NULL ve sloupcích vytvořených funkcí s hodnotou tabulky.

V Azure Stream Analytics jsou k dispozici dvě funkce s hodnotou tabulky, které usnadňují práci s poli Pole a Typ záznamu. Jsou to GetArrayElements a GetRecordProperties.

Syntaxe

  
<input> {CROSS | OUTER} APPLY <elements_selector>  
  
<input> ::= input_name |  input_alias  
  
<elements_selector> ::=   
{GetArrayElements | GetRecordProperties} (<column_name>) AS element_name  
  

Argumenty

input_name | input_alias

Název nebo alias vstupního streamu.

Column_name

Název sloupce vstupního streamu.

element_name

Název nového sloupce obsahujícího výsledek funkce s hodnotou tabulky.

Návratové typy

Výstupem je záznam obsahující počáteční datovou část a záznam "element_name", který obsahuje výsledek funkce s hodnotou tabulky.

Výsledkem funkce GetArrayElements bude záznam se dvěma poli:

  • ArrayIndex: index elementu v poli

  • ArrayValue: hodnota elementu v poli.

Výsledkem funkce GetRecordProperties bude záznam se dvěma poli:

  • PropertyName: název vlastnosti v záznamu.

  • PropertyValue: hodnota vlastnosti v záznamu.

Příklady

V tomto příkladu při rozšíření scénáře mýtného spouštění předpokládáme, že auta mohou mít více než jednu registrační značku (např. auto tažné přívěsem by měly dvě). Křížové/vnější použití lze použít ke zploštění tohoto pole, tj. získání jednoho řádku na registrační značku.

CREATE TABLE input(TollId nvarchar(max), EntryTime datetime, Licenses array)  
  
SELECT e.TollId, e.EntryTime, flat.ArrayValue AS licensePlate   
   FROM input AS e   
   CROSS APPLY GetArrayElements(e.Licenses) AS flat  
  

Dotaz lze upravit tak, aby používal vnější použití, aby bylo možné sledovat také vozidla bez registrační značky.

SELECT e.TollId, e.EntryTime,   
flat.ArrayValue AS licensePlate, flat.ArrayIndex AS licensePlateIndex  
   FROM input AS e   
   OUTER APPLY GetArrayElements(e.Licenses) AS flat  
  

Další příklad použití vnořených polí (pole polí).

WITH firstQuery AS (  
   SELECT input.TollId, input.EntryTime,   
   flat.ArrayIndex AS i1, flat.ArrayValue AS licenses   
      FROM input   
      CROSS APPLY GetArrayElements(input.ArrayOfArray) AS flat)  
  
SELECT firstQuery.TollId, firstQuery.EntryTime, firstQuery.i1,   
flat2.ArrayIndex AS i2, flat2.ArrayValue AS license  
   FROM firstQuery  
   CROSS APPLY GetArrayElements(firstQuery.licenses) AS flat2