UNION (Azure Stream Analytics)

Combineert de resultaten van twee of meer query's in één resultatenset die alle rijen bevat die tot alle query's in de samenvoeging behoren. De UNION-bewerking verschilt van het gebruik van joins die kolommen uit twee tabellen combineren.

Hier volgen basisregels voor het combineren van de resultatensets van twee query's met behulp van UNION:

  • Streams moeten dezelfde partitiesleutel en hetzelfde aantal partities hebben (meer informatie over partities vindt u hier)
  • Het aantal en de volgorde van de kolommen moeten in alle query's hetzelfde zijn.
  • De gegevenstypen moeten compatibel zijn.

Belangrijk

Als de invoer een ander aantal partities heeft, is schalen niet mogelijk omdat het schalen van een Stream Analytics-taak gebruikmaakt van partities in de invoer en uitvoer.

Syntaxis

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

Argumenten

<> query_specification | ( <query_expression> )

Is een queryspecificatie of queryexpressie die gegevens retourneert die moeten worden gecombineerd met de gegevens uit een andere queryspecificatie of query-expressie. De definities van de kolommen die deel uitmaken van een UNION-bewerking moeten hetzelfde zijn of dezelfde naam hebben met behulp van een alias en moeten compatibel zijn.

UNION

Hiermee geeft u op dat meerdere resultatensets moeten worden gecombineerd en geretourneerd als één resultatenset. UNION neemt alle rijen op in de resultaten. Dit omvat duplicaten.

Voorbeeld

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

Indien nodig kunnen streams opnieuw worden gepartitioneerd om overeen te komen (in dezelfde taak als hieronder, of een andere om betere prestaties te bereiken):

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