Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
✅ Azure Stream Analytics ✅ Fabric Eventstream
Med OPERATORN APPLY kan du anropa en tabellvärdesfunktion för varje rad som returneras av ett yttre tabelluttryck för en fråga. Funktionen table-valued fungerar som rätt indata och det yttre tabelluttrycket fungerar som vänster indata. De högra indata utvärderas för varje rad från den vänstra inmatningen och de rader som skapas kombineras för de slutliga utdata. Listan över kolumner som skapas av APPLY-operatorn är uppsättningen kolumner i den vänstra inmatningen följt av listan över kolumner som returneras av rätt indata.
Det finns två former av APPLY: CROSS APPLY och OUTER APPLY.
CROSS APPLY returnerar endast rader från den yttre tabellen som genererar en resultatuppsättning från tabellvärdefunktionen. Resultatet av en CROSS APPLY kan inte användas som målvärde för TIMESTAMP BY. Du kan dock använda ett Azure Stream Analytics-jobb som utför CROSS APPLY och använda ett andra jobb för att utföra TIMESTAMP BY.
OUTER APPLY returnerar båda raderna som skapar en resultatuppsättning och rader som inte gör det, med NULL-värden i kolumnerna som skapas av funktionen table-valued.
Det finns två tabellvärdesfunktioner som är tillgängliga i Azure Stream Analytics för att underlätta arbetet med fält av matris- och posttyp. De är GetArrayElements och GetRecordProperties.
Syntax
  
<input> {CROSS | OUTER} APPLY <elements_selector>  
  
<input> ::= input_name |  input_alias  
  
<elements_selector> ::=   
{GetArrayElements | GetRecordProperties} (<column_name>) AS element_name  
  
Argumentpunkter
input_name | input_alias
Namnet eller aliaset för indataströmmen.
column_name
Namnet på en kolumn i indataströmmen.
element_name
Namnet på den nya kolumnen som innehåller resultatet av funktionen table-valued.
Returtyper
Utdata är en post som innehåller den första nyttolasten och posten "element_name", som innehåller resultatet av funktionen table-valued.
För funktionen GetArrayElements blir resultatet en post med två fält:
- ArrayIndex: indexet för elementet i matrisen 
- ArrayValue: värdet för elementet i matrisen. 
För funktionen GetRecordProperties blir resultatet en post med två fält:
- PropertyName: namnet på egenskapen i posten. 
- PropertyValue: värdet för egenskapen i posten. 
Exempel
I det här exemplet förutsätter vi att bilar kan ha mer än en registreringsskylt (t.ex. en bil som bogserar en släpvagn skulle ha två). Kors-/yttre användning kan användas för att platta ut den här matrisen, dvs. få en rad per registreringsskylt.
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  
  
Frågan kan ändras för att använda yttre tillämpning för att även hålla reda på bilar utan någon registreringsskylt.
SELECT e.TollId, e.EntryTime,   
flat.ArrayValue AS licensePlate, flat.ArrayIndex AS licensePlateIndex  
   FROM input AS e   
   OUTER APPLY GetArrayElements(e.Licenses) AS flat  
  
Ett annat exempel med kapslade matriser (matriser med matriser).
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