UNION (Azure Stream Analytics)
Combine les résultats de deux ou plusieurs requêtes en un seul jeu de résultats incluant toutes les lignes appartenant à toutes les requêtes incluses dans l'opération UNION. Cette opération diffère de l'utilisation des jointures combinant les colonnes des deux tables.
Voici les règles de base pour combiner les jeux de résultats de deux requêtes à l'aide de la procédure UNION :
- Les flux doivent avoir la même clé de partition et le même nombre de partitions (en savoir plus sur les partitions ici)
- Le nombre et l'ordre des colonnes doivent être identiques dans toutes les requêtes.
- Les types de données doivent être compatibles.
Important
Si les entrées ont un nombre différent de partitions, la mise à l’échelle n’est pas possible, car la mise à l’échelle d’un travail Stream Analytics tire parti des partitions dans l’entrée et la sortie.
Syntaxe
{ <query_specification> | ( <query_expression> ) }
UNION
<query_specification | ( <query_expression> )
[ UNION <query_specification> | ( <query_expression> )
[ ...n ] ]
Arguments
< > query_specification | ( <query_expression> )
Est une spécification ou expression de requête qui renvoie des données à combiner avec les données provenant d'une autre spécification ou expression de requête. Les définitions des colonnes qui font partie d'une opération UNION doivent être identiques ou dénommées de la même façon à l'aide d'un alias, et doivent être compatibles.
UNION
Indique que les jeux de résultats multiples doivent être associés et retournés dans un seul jeu de résultats. UNION incorpore toutes les lignes dans les résultats. Cela inclut les doublons.
Exemple
SELECT TollId, EntryTime AS Time, LicensePlate
FROM Input1 TIMESTAMP BY EntryTime
UNION
SELECT TollId, ExitTime AS Time, LicensePlate
FROM Input2 TIMESTAMP BY ExitTime
Si nécessaire, les flux peuvent être repartitionnés pour correspondre (dans le même travail que ci-dessous, ou un autre pour obtenir de meilleures performances) :
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