UNION (Azure Stream Analytics)

Kombiniert die Ergebnisse von zwei oder mehr Abfragen in einem einzigen Resultset, das alle Zeilen aus allen Abfragen der Gesamtmenge enthält. Der UNION-Vorgang unterscheidet sich von dem Verwenden von Joins, die Spalten aus zwei Tabellen kombinieren.

Für die Kombination der Resultsets von zwei Abfragen mit UNION gelten die folgenden Grundregeln:

  • Streams müssen denselben Partitionsschlüssel und die gleiche Partitionsanzahl aufweisen (weitere Informationen zu Partitionen finden Sie hier).
  • Die Anzahl und die Reihenfolge der Spalten müssen für alle Abfragen identisch sein.
  • Die Datentypen müssen kompatibel sein.

Wichtig

Wenn die Eingaben eine unterschiedliche Anzahl von Partitionen aufweisen, ist eine Skalierung nicht möglich, da die Skalierung eines Stream Analytics-Auftrags die Partitionen in der Eingabe und Ausgabe nutzt.

Syntax

  { <query_specification> | ( <query_expression> ) }   
  UNION  
  <query_specification | ( <query_expression> )   
 [ UNION <query_specification> | ( <query_expression> )   
    [ ...n ] ]  
  

Argumente

<> query_specification | ( <query_expression> )

Ist eine Abfragespezifikation oder ein Abfrageausdruck, deren bzw. dessen Rückgabedaten mit den Daten aus anderen Abfragespezifikationen oder Abfrageausdrücken kombiniert werden sollen. Die Definitionen der Spalten, die Teil einer UNION-Operation sind, müssen identisch sein oder unter Verwendung eines Aliasnamen identisch benannt sein und müssen kompatibel sein.

UNION

Gibt an, dass mehrere Resultsets kombiniert und als ein einzelnes Resultset zurückgegeben werden sollen. UNION integriert alle Zeilen in die Ergebnisse. Dies schließt auch Duplikate ein.

Beispiel

SELECT TollId, EntryTime AS Time, LicensePlate   
FROM Input1 TIMESTAMP BY EntryTime   
UNION  
SELECT TollId, ExitTime AS Time, LicensePlate   
FROM Input2 TIMESTAMP BY ExitTime  
  

Bei Bedarf können Datenströme so neu partitioniert werden, dass sie übereinstimmen (entweder im selben Auftrag wie unten oder in einem anderen Auftrag, um eine bessere Leistung zu erzielen):

WITH Input1_P as (
SELECT * FROM Input1 PARTITION BY partitionId INTO 2
),

Input2_P as (
SELET * FROM Input2 PARTITION BY partitionId INTO 2
)

SELECT TollId, EntryTime AS Time, LicensePlate   
FROM Input1_P TIMESTAMP BY EntryTime
UNION  
SELECT TollId, ExitTime AS Time, LicensePlate   
FROM Input2_P TIMESTAMP BY ExitTime