Airflow Dags

Python 中的 Apache Airflow 入門

Mike Metzger

Data Engineer

什麼是 Dag?

Dag,全名為 Directed Acyclic Graph

  • Directed:元件之間的流程代表相依關係
  • Acyclic:不會出現迴圈或重複
  • Graph:由一組元件組成

以單向箭頭連結、無迴圈的有向無環圖

Python 中的 Apache Airflow 入門

Airflow 中的 Dag

  • 以 Python 撰寫(也可使用其他語言寫的元件)
  • 由要執行的 Tasks 組成,如 operators 或 sensors
  • 含有明確或隱含定義的相依關係
    • 例如:先把檔案複製到伺服器,再匯入資料庫服務。

  Airflow Dag 的連結任務,顯示它們的相依次序

Python 中的 Apache Airflow 入門

定義一個 Dag

範例 Dag(Taskflow API):

from airflow.sdk import dag

from pendulum import datetime @dag( dag_id='etl_workflow', email='[email protected]', start_date=datetime(2026, 3, 15, tz="UTC") )
def etl_workflow(): ...
etl_workflow()
Python 中的 Apache Airflow 入門

命令列中的 Dags

 

  • airflow 命令列包含許多子指令
  • airflow -h:顯示說明與子指令摘要

 

  • Dag 相關子指令

    • airflow dags list:顯示所有可辨識的 Dags
    • airflow dags reserialize:強制 Airflow 重新載入 Dag 檔案
    • airflow tasks test:執行特定 task
Python 中的 Apache Airflow 入門

命令列 vs Python

使用命令列工具可:

  • 啟動 Airflow 程序
  • 手動執行 Dags/Tasks
  • 取得 Airflow 的日誌資訊

在終端機執行 airflow 命令列工具

使用 Python 可:

  • 建立 Dag
  • 編輯 Dag 的各項屬性

代表 Python 程式碼的圖示

Python 中的 Apache Airflow 入門

一起來練習吧!

Python 中的 Apache Airflow 入門

Preparing Video For Download...