Partilhar via


UNION (Azure Stream Analytics)

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

Seguem-se regras básicas para combinar os conjuntos de resultados de duas consultas com UNION:

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

Importante

Se as entradas tiverem um número diferente de partições, o dimensionamento não é possível, uma vez que o dimensionamento de uma tarefa do Stream Analytics tira partido das 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 expressão de consulta que devolve dados para serem combinados com os dados de outra especificação de consulta ou expressão de consulta. As definições das colunas que fazem parte de uma operação UNION têm de ser as mesmas ou têm de ter o mesmo nome através de um alias e têm de ser compatíveis.

UNION

Especifica que vários conjuntos de resultados devem ser combinados e devolvidos como um único conjunto de resultados. A UNION incorpora todas as linhas nos resultados. Isto inclui duplicados.

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 repartitados para corresponder (no mesmo trabalho que abaixo ou noutro 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