Snowpark Migration Accelerator : Union

Description

Fusionne deux sous-requêtes en une seule requête. Databricks SQL propose trois opérateurs Set qui vous permettent de combiner des requêtes :

  • EXCEPT - Récupère toutes les lignes de la première requête qui n’apparaissent pas dans la seconde requête

  • INTERSECT - Renvoie uniquement les lignes qui apparaissent dans les deux requêtes

  • UNION - Combine les résultats de deux ou plusieurs requêtes en un seul jeu de résultats

Référence linguistique Databricks SQL UNION

Les opérateurs Set vous permettent de combiner plusieurs requêtes dans un seul résultat. Pour plus de détails, voir Référence linguistique Snowflake SQL UNION.

Syntaxe

subquery1 { { UNION [ ALL | DISTINCT ] |
              INTERSECT [ ALL | DISTINCT ] |
              EXCEPT [ ALL | DISTINCT ] } subquery2 } [...] }
Copy
[ ( ] <query> [ ) ] { INTERSECT | { MINUS | EXCEPT } | UNION [ ALL ] } [ ( ] <query> [ ) ]
[ ORDER BY ... ]
[ LIMIT ... ]
Copy

Modèles d’échantillons de sources

Données de configuration

Databricks

CREATE TEMPORARY VIEW number1(c) AS VALUES (3), (1), (2), (2), (3), (4);

CREATE TEMPORARY VIEW number2(c) AS VALUES (5), (1), (1), (2);
Copy

Snowflake

CREATE TEMPORARY TABLE number1(c int);
INSERT INTO number1 VALUES (3), (1), (2), (2), (3), (4);

CREATE TEMPORARY TABLE number2(c int);
INSERT INTO number2 VALUES (5), (1), (1), (2);
Copy

Code du modèle

Databricks

-- EXCEPT (MINUS) Operator:
SELECT c FROM number1 EXCEPT SELECT c FROM number2;

SELECT c FROM number1 MINUS SELECT c FROM number2;

-- EXCEPT ALL (MINUS ALL) Operator:
SELECT c FROM number1 EXCEPT ALL (SELECT c FROM number2);

SELECT c FROM number1 MINUS ALL (SELECT c FROM number2);

-- INTERSECT Operator:
(SELECT c FROM number1) INTERSECT (SELECT c FROM number2);

-- INTERSECT DISTINCT Operator:
(SELECT c FROM number1) INTERSECT DISTINCT (SELECT c FROM number2);

-- INTERSECT ALL Operator:
(SELECT c FROM number1) INTERSECT ALL (SELECT c FROM number2);

-- UNION Operator:
(SELECT c FROM number1) UNION (SELECT c FROM number2);

-- UNION DISTINCT Operator:
(SELECT c FROM number1) UNION DISTINCT (SELECT c FROM number2);

-- UNION ALL Operator:
SELECT c FROM number1 UNION ALL (SELECT c FROM number2);
Copy

EXCEPT (MINUS) Opérateur : L’opérateur EXCEPT, également connu sous le nom de MINUS, supprime les lignes de la première requête qui apparaissent dans le jeu de résultats de la seconde requête. Il ne renvoie que les lignes uniques de la première requête qui n’existent pas dans la seconde requête.

c

3

4

EXCEPT ALL (MINUS ALL) Opérateur : Supprime les enregistrements en double

c

3

3

4

INTERSECT Opérateur : Renvoie uniquement les lignes qui apparaissent dans les deux jeux de résultats, en éliminant les doublons. Il compare les résultats de deux ou plusieurs instructions SELECT et renvoie uniquement les enregistrements correspondants. Renvoie uniquement les lignes qui apparaissent dans les deux jeux de résultats, en éliminant les doublons.

c

1

2

INTERSECT DISTINCT Opérateur : Renvoie uniquement les lignes uniques qui apparaissent dans les deux jeux de résultats, en éliminant les doublons. Renvoie uniquement les lignes uniques qui apparaissent dans les deux requêtes, en éliminant les doublons du jeu de résultats.

c

1

2

INTERSECT ALL Opérateur : Renvoie toutes les lignes correspondantes de plusieurs requêtes, y compris les doublons. Contrairement à l’opérateur INTERSECT standard qui supprime les doublons, INTERSECT ALL conserve les lignes en double dans le jeu de résultats final. Renvoie toutes les lignes qui apparaissent dans les deux jeux de résultats, y compris les doublons. Contrairement à INTERSECT qui supprime les doublons, INTERSECT ALL conserve les lignes en double en fonction de leur fréquence dans les deux jeux.

c

1

2

2

Opérateur UNION : L’opérateur UNION combine les résultats de deux ou plusieurs instructions SELECT en un seul jeu de résultats. Il supprime par défaut les lignes en double du jeu de résultats combiné. L’opérateur UNION combine les résultats de deux ou plusieurs instructions SELECT en un seul jeu de résultats. Il supprime les lignes en double des résultats combinés.

c

1

3

5

4

2

Opérateur UNION DISTINCT : L’opérateur UNION DISTINCT combine deux ou plusieurs jeux de résultats et supprime les lignes en double de la sortie finale. Il ne renvoie que les lignes uniques de toutes les requêtes combinées. L’opérateur UNION DISTINCT combine les lignes de deux ou plusieurs requêtes tout en supprimant les lignes en double du jeu de résultats final.

c

1

3

5

4

2

Opérateur UNION ALL : L’opérateur UNION ALL combine les lignes de deux ou plusieurs requêtes sans supprimer les enregistrements en double. Contrairement à l’opérateur UNION, UNION ALL conserve toutes les lignes, y compris les doublons, ce qui rend son exécution plus rapide puisqu’il n’a pas besoin de vérifier les doublons. Cet opérateur combine les résultats de deux ou plusieurs instructions SELECT et inclut toutes les lignes, y compris les doublons. Contrairement à UNION qui supprime les lignes en double, UNION ALL conserve toutes les lignes de toutes les instructions SELECT.

c

3

1

2

2

3

4

5

1

1

2

Snowflake

-- EXCEPT (MINUS) Operator
SELECT c FROM number1 EXCEPT SELECT c FROM number2;

SELECT c FROM number1 MINUS SELECT c FROM number2;

-- EXCEPT ALL (MINUS ALL) Operator:
SELECT number1.c FROM number1 
LEFT JOIN number2 
    ON number1.c = number2.c
WHERE number2.c IS NULL;
-- ** MSC-WARMING - MSC-S000# - EXCEPT ALL IS TRANSFORMED TO A LEFT JOIN. **

SELECT number1.c FROM number1 
LEFT JOIN number2 
    ON number1.c = number2.c
WHERE number2.c IS NULL;
-- ** MSC-WARMING - MSC-S000# - MINUS ALL IS TRANSFORMED TO A LEFT JOIN. **

-- INTERSECT Operator:
(SELECT c FROM number1) INTERSECT (SELECT c FROM number2);

-- INTERSECT DISTINCT Operator:
(SELECT c FROM number1) INTERSECT (SELECT c FROM number2);

-- INTERSECT ALL Operator:
SELECT DISTINCT number1.c FROM number1 
INNER JOIN number2 
    ON number1.c = number2.c;
-- ** MSC-WARMING - MSC-S000# - INTERSECT ALL IS TRANSFORMED TO A INNER JOIN. **

-- UNION Operator:
(SELECT c FROM number1) UNION (SELECT c FROM number2);

-- UNION DISTINCT Operator:
(SELECT c FROM number1) UNION DISTINCT (SELECT c FROM number2);

-- UNION ALL Operator:
SELECT c FROM number1 UNION ALL (SELECT c FROM number2);
Copy

EXCEPT (MINUS) Opérateur : Supprime les enregistrements en double

L’opérateur EXCEPT, également connu sous le nom de MINUS, compare deux requêtes et renvoie uniquement les enregistrements uniques de la première requête qui n’apparaissent pas dans la seconde. Il élimine les lignes en double du jeu de résultats.

c

3

4

EXCEPT ALL (MINUS ALL) Opérateur : Supprime les lignes en double

c

3

3

4

INTERSECT Opérateur :

c

1

2

INTERSECT DISTINCT Opérateur :

c

1

2

INTERSECT ALL Opérateur :

c

1

2

2

UNION Opérateur :

c

1

3

5

4

2

UNION DISTINCT Opérateur :

c

1

3

5

4

2

UNION ALL Opérateur :

c

3

1

2

2

3

4

5

1

1

2

Problèmes connus

Aucun EWIs associé