Compartilhar via


UNION (Azure Stream Analytics)

Combina os resultados de duas ou mais consultas em um único conjunto de resultados que inclui todas as linhas que pertencem a todas as consultas na união. A operação UNION é diferente de usar junções que combinam colunas de duas tabelas.

A seguir são apresentadas as regras básicas de combinação dos conjuntos de resultados de duas consultas usando UNION:

  • Os fluxos devem ter a mesma chave de partição e contagem de partições (saiba mais sobre partições aqui)
  • O número e a ordem das colunas devem ser iguais em todas as consultas.
  • Os tipos de dados devem ser compatíveis.

Importante

Se as entradas tiverem um número diferente de partições, o dimensionamento não será possível, pois o dimensionamento de um trabalho do Stream Analytics aproveitará as partições na entrada e na saída.

Sintaxe

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

Argumentos

< > query_specification | ( <query_expression> )

É uma especificação de consulta ou uma expressão de consulta que retorna dados que serão combinados com os dados de outra expressão de consulta ou especificação de consulta. As definições das colunas que fazem parte de uma operação UNION devem ser iguais, devem ter o mesmo nome usando um alias e devem ser compatíveis.

UNION

Especifica que vários conjuntos de resultados serão combinados e retornados como um único conjunto de resultados. UNION incorpora todas as linhas nos resultados. Isso inclui duplicatas.

Exemplo

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

Se necessário, os fluxos podem ser reparticionados para corresponder (no mesmo trabalho abaixo ou em outro para obter um melhor desempenho):

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