Fonctions d’agrégation intermédiaires

Automatisation des pipelines de données dans Snowflake

Emily Melhuish

Technical Curriculum Developer, Snowflake

Ordre des opérations

Ordre des opérations.png

SQL n’exécute pas selon l’ordre d’écriture

  1. Lignes : construire l’ensemble de données
  2. Groupes : le résumer
  3. Résultat : façonner la sortie
1 * Snowflake Learning Material
Automatisation des pipelines de données dans Snowflake

Fonctions d’agrégation courantes

  • COUNT(*) / COUNT(DISTINCT col) — total de lignes; valeurs uniques
  • SUM — total de la colonne
  • AVG — moyenne
  • MIN / MAX — étendue
SELECT COUNT(*) AS total_shipments,
       COUNT(DISTINCT carrier_id) AS unique_carriers,
       SUM(delivery_days) AS total_days,
       AVG(delivery_days) AS avg_days
FROM shipments;
Automatisation des pipelines de données dans Snowflake

Problème avec plusieurs requêtes

Retourner l’usage par région et entrepôt

SELECT 
region
, warehouse_name
, SUM(credits_used) 
FROM usage 
GROUP BY region, warehouse_name; 

Retourner les sous-totaux d’usage par région

SELECT region
, SUM(credits_used) 
FROM usage GROUP BY region; 

Retourner le total d’usage

SELECT 
SUM(credits_used) 
FROM usage;
Automatisation des pipelines de données dans Snowflake

GROUPING SETS

Entrée

SELECT region
, warehouse_name
, SUM(credits_used) AS total 
FROM usage 
GROUP BY GROUPING SETS ( 
  (region, warehouse_name)
  , (region)
  , () 
);

Sortie

REGION WAREHOUSE_NAME TOTAL
EMEA harbr_wh_prod 1240.50
EMEA harbr_wh_dev 380.00
EMEA NULL 1620.50
APAC harbr_wh_prod 890.25
APAC NULL 890.25
NULL NULL 2510.75
  • Remarque : Donnez un sens aux NULL avec une instruction CASE
Automatisation des pipelines de données dans Snowflake

ROLLUP

Entrée

SELECT 
region
, warehouse_name
, SUM(credits_used) AS total 
FROM usage 
GROUP BY ROLLUP (region, warehouse_name);

Sortie

REGION WAREHOUSE_NAME TOTAL
EMEA harbr_wh_prod 1240.50
EMEA harbr_wh_dev 380.00
EMEA NULL 1620.50
APAC harbr_wh_prod 890.25
APAC NULL 890.25
NULL NULL 2510.75
Automatisation des pipelines de données dans Snowflake

CUBE

Entrée

SELECT 
region
, warehouse_name
, SUM(credits_used) AS total
FROM usage 
GROUP BY CUBE (region, warehouse_name);

Sortie

REGION WAREHOUSE_NAME TOTAL
EMEA harbr_wh_prod 1240.50
EMEA harbr_wh_dev 380.00
EMEA NULL 1620.50
APAC harbr_wh_prod 890.25
APAC NULL 890.25 }
NULL harbr_wh_prod 2130.75
NULL harbr_wh_dev 380.00
NULL NULL 2510.75
Automatisation des pipelines de données dans Snowflake

GROUPING() et GROUPING_ID()

SELECT region, warehouse_name, SUM(credits_used) AS total_credits, GROUPING(region) AS is_region_agg, GROUPING(warehouse_name) AS is_wh_agg , 
GROUPING_ID(region, warehouse_name) AS grouping_level 
FROM usage 
GROUP BY ROLLUP (region, warehouse_name);

Capture d’écran de la sortie du tableau Markdown

Automatisation des pipelines de données dans Snowflake

Passons à la pratique !

Automatisation des pipelines de données dans Snowflake

Preparing Video For Download...