Hàm tổng hợp trung cấp

Tự động hóa Data Pipeline trong Snowflake

Emily Melhuish

Technical Curriculum Developer, Snowflake

Thứ tự thực thi

Thứ tự thực thi.png

SQL không chạy theo thứ tự bạn viết

  1. Hàng: xây tập dữ liệu
  2. Nhóm: tổng hợp
  3. Kết quả: định dạng đầu ra
1 * Tài liệu học Snowflake
Tự động hóa Data Pipeline trong Snowflake

Các hàm tổng hợp phổ biến

  • COUNT(*) / COUNT(DISTINCT col) — tổng số dòng; giá trị duy nhất
  • SUM — tổng cột
  • AVG — giá trị trung bình
  • MIN / MAX — khoảng
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;
Tự động hóa Data Pipeline trong Snowflake

Vấn đề với nhiều truy vấn

Trả về usage theo vùng và kho

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

Trả về tổng phụ usage theo vùng

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

Trả về tổng usage

SELECT 
SUM(credits_used) 
FROM usage;
Tự động hóa Data Pipeline trong Snowflake

GROUPING SETS

Đầu vào

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

Đầu ra

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
  • Lưu ý: Gán ý nghĩa cho NULL bằng câu lệnh CASE
Tự động hóa Data Pipeline trong Snowflake

ROLLUP

Đầu vào

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

Đầu ra

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
Tự động hóa Data Pipeline trong Snowflake

CUBE

Đầu vào

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

Đầu ra

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
Tự động hóa Data Pipeline trong Snowflake

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

Ảnh chụp màn hình bảng markdown

Tự động hóa Data Pipeline trong Snowflake

Ayo berlatih!

Tự động hóa Data Pipeline trong Snowflake

Preparing Video For Download...