การสร้าง Data Pipeline ด้วย Airflow
Volker Janz
Senior Developer Advocate at Astronomer

from airflow.providers.common.sql.operators.sql import (SQLExecuteQueryOperator, SQLColumnCheckOperator)check_columns = SQLColumnCheckOperator( task_id="check_columns", conn_id="duckdb_analytics", table="daily_summary", column_mapping={ "total_revenue": {"min": {"greater_than": 0}}, "total_orders": {"null_check": {"equal_to": 0}}, }, )
column_mapping={
"total_revenue": {"min": {"greater_than": 0}},
"total_orders": {"null_check": {"equal_to": 0}},
"order_date": {"distinct_check": {"greater_than": 0}},
}
min: ตรวจสอบค่าต่ำสุดในคอลัมน์null_check: นับค่า null (ใช้ equal_to: 0 เพื่อยืนยันว่าไม่มี null)distinct_check: นับค่าที่ไม่ซ้ำกันnull_check, unique_check, distinct_check, min, maxequal_to, greater_than, geq_to, less_than, leq_tofrom airflow.providers.common.sql.operators.sql import SQLTableCheckOperatorcheck_table = SQLTableCheckOperator( task_id="check_table", conn_id="duckdb_analytics", table="daily_summary", checks={ "row_count_check": { "check_statement": "COUNT(*) > 0", }, }, )
check_statement: นิพจน์ SQL ใดก็ได้ที่ให้ผลลัพธ์เป็น true หรือ false@dag(schedule="@daily", template_searchpath="/path/to/sql")
def sales_pipeline():
load = SQLExecuteQueryOperator(
task_id="load_daily_sales",
conn_id="duckdb_analytics",
sql="aggregate_sales.sql",
)
check_columns = SQLColumnCheckOperator(...)
check_table = SQLTableCheckOperator(...)
load >> check_columns >> check_table
SQLColumnCheckOperator
check_columns = SQLColumnCheckOperator(
task_id="check_columns",
conn_id="duckdb_analytics",
table="daily_summary",
column_mapping={
"total_revenue": {"min": {"greater_than": 0}},
"total_orders": {"null_check": {"equal_to": 0}},
},
)
SQLTableCheckOperator
check_table = SQLTableCheckOperator(
task_id="check_table",
conn_id="duckdb_analytics",
table="daily_summary",
checks={
"row_count_check": {
"check_statement": "COUNT(*) > 0",
},
},
)
$$

การสร้าง Data Pipeline ด้วย Airflow