Sdílet prostřednictvím


POUŽÍT

✅Eventstream prostředků infrastruktury 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. Správný 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ŽITÍ: CROSS APPLY a OUTER APPLY.

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

FUNKCE OUTER APPLY vrátí jak řádky, které vytvoří sadu výsledků, tak řádky, které nevytvoří žádný výsledek, a proto mají ve sloupcích vytvořených tabulkovou funkcí hodnoty NULL.

V Azure Stream Analytics jsou k dispozici dvě funkce s hodnotami tabulky, které usnadňují práci s poli Typu pole a záznamu. Jsou 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 datového proudu.

column_name

Název sloupce vstupního datového proudu.

element_name

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

Návratové typy

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

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

  • ArrayIndex: index prvku v poli

  • ArrayValue: hodnota prvku v poli.

Pro funkci GetRecordProperties bude výsledkem 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 rozšíření scénáře linky předpokládáme, že auta můžou mít více než jednu registrační značku (např. auto vlečení přívěsu by měly dva). Křížové/vnější použití lze použít k zploštění tohoto pole, tj. získání jednoho řádku na registrační desku.

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 také sledoval auta bez licenčního štítku.

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í (matice 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