Dela via


UNION (Azure Stream Analytics)

Kombinerar resultatet av två eller flera frågor till en enda resultatuppsättning som innehåller alla rader som tillhör alla frågor i unionen. UNION-åtgärden skiljer sig från att använda kopplingar som kombinerar kolumner från två tabeller.

Följande är grundläggande regler för att kombinera resultatuppsättningarna för två frågor med hjälp av UNION:

  • Strömmar måste ha samma partitionsnyckel och partitionsantal (läs mer om partitioner här)
  • Antalet och ordningen på kolumnerna måste vara samma i alla frågor.
  • Datatyperna måste vara kompatibla.

Viktigt

Om indata har ett annat antal partitioner är skalning inte möjligt eftersom skalning av ett Stream Analytics-jobb utnyttjar partitioner i indata och utdata.

Syntax

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

Argument

< > query_specification | ( <query_expression> )

Är en frågespecifikation eller ett frågeuttryck som returnerar data som ska kombineras med data från en annan frågespecifikation eller ett annat frågeuttryck. Definitionerna av kolumnerna som ingår i en UNION-åtgärd måste vara desamma eller måste namnges på samma sätt med hjälp av ett alias och måste vara kompatibla.

UNION

Anger att flera resultatuppsättningar ska kombineras och returneras som en enda resultatuppsättning. UNION införlivar alla rader i resultaten. Detta inkluderar dubbletter.

Exempel

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

Om det behövs kan strömmar partitioneras om för att matcha (antingen i samma jobb som nedan eller ett annat för att uppnå bättre prestanda):

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