Partager via


UNION

✅ Azure Stream Analytics ✅ Fabric Eventstream

Combine les résultats de deux requêtes ou plus dans un jeu de résultats unique qui inclut toutes les lignes appartenant à toutes les requêtes de l’union. L’opération UNION diffère de l’utilisation de jointures qui combinent des colonnes de deux tables.

Voici des règles de base pour combiner les jeux de résultats de deux requêtes à l’aide d’UNION :

  • Les flux doivent avoir la même clé de partition et le 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 ] ]  
  

Les arguments

< > query_specification | ( <query_expression> )

Spécification de requête ou expression de requête qui retourne des données à combiner avec les données d’une autre spécification de requête ou expression de requête. Les définitions des colonnes qui font partie d’une opération UNION doivent être identiques ou doivent être nommées de la même manière à l’aide d’un alias et doivent être compatibles.

UNION

Spécifie que plusieurs jeux de résultats doivent être combinés et retournés en tant que jeu de résultats unique. 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