UNION(Azure 流分析)

将两个或更多个查询的结果合并为单个结果集,该结果集包含联合查询中的所有查询的全部行。 UNION 运算不同于使用联接合并两个表中的列的运算。

下面列出了使用 UNION 合并两个查询结果集的基本规则:

  • 流必须具有相同的分区键和分区计数, (在此处 详细了解分区)
  • 所有查询中的列数和列的顺序必须相同。
  • 数据类型必须兼容。

重要

如果输入具有不同数量的分区,则无法 缩放 ,因为缩放流分析作业会利用输入和输出中的分区。

语法

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

参数

<query_specification> | ( <query_expression> )

查询规范或查询表达式,用以返回要与另一个查询规范或查询表达式所返回的数据合并的数据。 作为 UNION 操作一部分的列的定义必须相同或必须使用别名命名相同,并且必须兼容。

UNION

指定合并多个结果集并将其作为单个结果集返回。 UNION 将所有行合并到结果中。 这包括重复项。

示例

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

如果需要,可以 重新分区 流,以匹配与下面相同的作业中的 (或另一个作业,以在) 实现更好的性能:

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