Funzioni di aggregazione intermedie

Automazione delle pipeline di dati in Snowflake

Emily Melhuish

Technical Curriculum Developer, Snowflake

Ordine delle operazioni

Ordine delle operazioni.png

SQL non viene eseguito nell'ordine in cui lo scrivi

  1. Righe: crea il dataset
  2. Gruppi: riassumilo
  3. Risultato: modella l'output
1 * Snowflake Learning Material
Automazione delle pipeline di dati in Snowflake

Funzioni di aggregazione comuni

  • COUNT(*) / COUNT(DISTINCT col) — total rows; unique values
  • SUM — column total
  • AVG — mean value
  • MIN / MAX — range
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;
Automazione delle pipeline di dati in Snowflake

Il problema di più query

Restituisci l'uso per regione e warehouse

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

Restituisci i subtotali per regione

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

Restituisci il totale

SELECT 
SUM(credits_used) 
FROM usage;
Automazione delle pipeline di dati in Snowflake

GROUPING SETS

Input

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

Output

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
  • Nota: dai significato ai NULL con una CASE
Automazione delle pipeline di dati in Snowflake

ROLLUP

Input

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

Output

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
Automazione delle pipeline di dati in Snowflake

CUBE

Input

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

Output

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
Automazione delle pipeline di dati in Snowflake

GROUPING() e 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);

Schermata dell'output della tabella markdown

Automazione delle pipeline di dati in Snowflake

Passons à la pratique !

Automazione delle pipeline di dati in Snowflake

Preparing Video For Download...