ฟังก์ชันการรวมขั้นกลาง

การทำให้ Data Pipeline เป็นอัตโนมัติใน Snowflake

Emily Melhuish

Technical Curriculum Developer, Snowflake

ลำดับการทำงาน

Order of operations.png

SQL ไม่ได้ทำงานตามลำดับที่เขียน

  1. แถว: สร้างชุดข้อมูล
  2. กลุ่ม: สรุปข้อมูล
  3. ผลลัพธ์: กำหนดรูปแบบเอาต์พุต
1 * Snowflake Learning Material
การทำให้ Data Pipeline เป็นอัตโนมัติใน Snowflake

ฟังก์ชันการรวมที่ใช้บ่อย

  • 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;
การทำให้ Data Pipeline เป็นอัตโนมัติใน Snowflake

ปัญหาของการใช้หลายคำสั่ง Query

แสดงการใช้งานตามภูมิภาคและคลังข้อมูล

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;
การทำให้ Data Pipeline เป็นอัตโนมัติใน Snowflake

GROUPING SETS

อินพุต

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
  • หมายเหตุ: เพิ่มความหมายให้ค่า NULL ด้วย CASE statement
การทำให้ Data Pipeline เป็นอัตโนมัติใน Snowflake

ROLLUP

อินพุต

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
การทำให้ Data Pipeline เป็นอัตโนมัติใน Snowflake

CUBE

อินพุต

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
การทำให้ Data Pipeline เป็นอัตโนมัติใน Snowflake

GROUPING() และ 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);

ภาพหน้าจอของผลลัพธ์ในรูปแบบตาราง

การทำให้ Data Pipeline เป็นอัตโนมัติใน Snowflake

มาฝึกกันเลย!

การทำให้ Data Pipeline เป็นอัตโนมัติใน Snowflake

Preparing Video For Download...