UNION (Azure Stream Analytics)

Соединяет результаты двух или более запросов в один результирующий набор, содержащий все строки, относящиеся ко всем запросам в объединении. Операция UNION отличается от соединений столбцов из двух таблиц.

Ниже приведены основные правила объединения результирующих наборов двух запросов с помощью операции UNION:

  • Потоки должны иметь одинаковый ключ секции и число секций (дополнительные сведения о секциях см. здесь).
  • количество и порядок столбцов должны быть одинаковыми во всех запросах;
  • типы данных должны быть совместимыми.

Важно!

Если входные данные имеют разное количество секций, масштабирование невозможно, так как при масштабировании задания Stream Analytics используются секции во входных и выходных данных.

Синтаксис

  { <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