Автоматизація конвеєрів даних у Snowflake
Emily Melhuish
Technical Curriculum Developer, Snowflake

SQL виконується не в тому порядку, як ви його пишете
COUNT(*) / COUNT(DISTINCT col) — кількість рядків; унікальні значенняSUM — сумарне значення стовпцяAVG — середнєMIN / MAX — діапазон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;
Повернути використання за регіоном і складом
SELECT
region
, warehouse_name
, SUM(credits_used)
FROM usage
GROUP BY region, warehouse_name;
Повернути підсумки за регіоном
SELECT region
, SUM(credits_used)
FROM usage GROUP BY region;
Повернути загальний підсумок
SELECT
SUM(credits_used)
FROM usage;
Вхідні дані
SELECT region
, warehouse_name
, SUM(credits_used) AS total
FROM usage
GROUP BY GROUPING SETS (
(region, warehouse_name)
, (region)
, ()
);
Вихідні дані
| 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 |
Вхідні дані
SELECT
region
, warehouse_name
, SUM(credits_used) AS total
FROM usage
GROUP BY ROLLUP (region, warehouse_name);
Вихідні дані
| 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 |
Вхідні дані
SELECT
region
, warehouse_name
, SUM(credits_used) AS total
FROM usage
GROUP BY CUBE (region, warehouse_name);
Вихідні дані
| 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 |
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);

Автоматизація конвеєрів даних у Snowflake