Jointures dans BigQuery

Introduction à BigQuery

Matthew Forrest

Field CTO

Joindre des données dans BigQuery

  • INNER JOIN : valeurs présentes dans les deux tables.

  • LEFT JOIN : toutes les lignes de la table de gauche, appariées à la table de droite.

  • RIGHT JOIN : toutes les lignes de la table de droite, appariées à la table de gauche.

  • FULL JOIN : toutes les lignes des deux tables, appariées et non appariées.

  • CROSS JOIN : chaque ligne avec chaque ligne des deux tables.

Image illustrant visuellement les jointures SQL

Introduction à BigQuery

Exemples réels de jointures

Customers : table de gauche

Orders : table de droite

  • INNER JOIN : clients et commandes correspondants

  • LEFT JOIN : afficher tous les clients, même sans commande

  • RIGHT JOIN : afficher toutes les commandes, même sans ID client

  • FULL JOIN : afficher tous les clients et toutes les commandes, même sans interaction

  • CROSS JOIN : associer chaque commande à chaque client, sans condition

Introduction à BigQuery

INNER JOIN

  • Retourne seulement les correspondances entre les deux ensembles de données
SELECT
  c.customer_id, s.product_name
FROM customers c
-- The INNER keyword is optional
JOIN sales_data s
ON c.customer_id = s.customer_id;
| customer_id | product_name         |
|-------------|----------------------|
| 1           | Bluetooth Headphones |
| 2           | Running Shoes        |
Introduction à BigQuery

LEFT JOIN

  • Retourne toutes les lignes de l'ensemble de données de GAUCHE
SELECT
  c.customer_id, s.product_name
FROM customers c
LEFT JOIN sales_data s
ON c.customer_id = s.customer_id;
| customer_id | product_name         |
|-------------|----------------------|
| 1           | Bluetooth Headphones |
| 2           | Running Shoes        |
| 3           | null                 |
Introduction à BigQuery

RIGHT JOIN

  • Retourne toutes les lignes de l'ensemble de données de DROITE
SELECT
  c.customer_id, s.product_name
FROM customers c
RIGHT JOIN sales_data s
ON c.customer_id = s.customer_id;
| customer_id | product_name         |
|-------------|----------------------|
| 1           | Bluetooth Headphones |
| 2           | Running Shoes        |
| null        | External Microphone  |
Introduction à BigQuery

OUTER JOIN

  • Une jointure « DROITE-GAUCHE » : toutes les lignes des ensembles de données DROITE et GAUCHE
SELECT
  c.customer_id, s.product_name
FROM customers c
OUTER JOIN sales_data s
ON c.customer_id = s.customer_id;
| customer_id | product_name         |
|-------------|----------------------|
| 1           | Bluetooth Headphones |
| 2           | Running Shoes        |
| 3           | null                 |
| null        | External Microphone  |
Introduction à BigQuery

SELF ou CROSS JOIN

  • Jointure cartésienne : chaque ligne avec chaque ligne
SELECT
  c.customer_id,
  s.product_name,

-- Adding table names separated 
-- by a comma is a CROSS JOIN
-- Order is determined by the
-- left table, here "customers"
FROM customers c, sales_data s;
| customer_id | product_name         |
|-------------|----------------------|
| 1           | Bluetooth Headphones |
| 1           | null                 |
| 2           | Bluetooth Headphones |
| 2           | null                 |
| 3           | null                 |
| 3           | Bluetooth Headphones |
Introduction à BigQuery

Jointures et UNNEST

  • Sert aussi à joindre des données « unnested »
SELECT
  c.customer_id,
  payments.method
FROM customers c, 
UNNEST(
  customers.payment_methods
) payments;
| customer_id | product_name |
|-------------|--------------|
| 1           | Visa         |
| 1           | Mastercard   |
| 1           | Venmo        |
| 1           | Paypal       |
| 2           | Amex         |
| 2           | Visa         |
Introduction à BigQuery

Passons à la pratique !

Introduction à BigQuery

Preparing Video For Download...