UNION (Analisi di flusso di Azure)

Combina i risultati di due o più query in un singolo set di risultati che include tutte le righe appartenenti a tutte le query nell'unione. L'operazione UNION è diversa dall'utilizzo di join che combinano le colonne di due tabelle.

Di seguito sono riportate le regole di base per la combinazione dei set di risultati di due query tramite l'istruzione UNION:

  • I flussi devono avere la stessa chiave di partizione e il numero di partizioni (altre informazioni sulle partizioni sono disponibili qui)
  • Tutte le query devono includere lo stesso numero di colonne nello stesso ordine.
  • I tipi di dati devono essere compatibili.

Importante

Se gli input hanno un numero diverso di partizioni, il ridimensionamento non è possibile perché il ridimensionamento di un processo di Analisi di flusso sfrutta i vantaggi delle partizioni nell'input e nell'output.

Sintassi

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

Argomenti

<> query_specification | ( <query_expression> )

È una specifica di query o un'espressione di query che restituisce i dati da combinare con i dati di un'altra specifica di query o un'espressione di query. Le definizioni delle colonne che fanno parte di un'operazione UNION devono essere uguali o devono essere denominate allo stesso modo usando un alias e devono essere compatibili.

UNION

Specifica che più set di risultati devono essere combinati e restituiti come singolo set di risultati. UNION incorpora tutte le righe nei risultati. Sono inclusi i duplicati.

Esempio

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

In caso affermativo, i flussi possono essere ripartizionati in modo che corrispondano (nello stesso processo riportato di seguito o in un altro per ottenere prestazioni migliori):

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