# Apache Airflow
データ処理やバッチ処理(ETL/ELT)などのワークフローを
管理・自動化するためのもっとも有名なプラットフォームです。
* **できること・強み**
* Airflow は 本番の大規模ETLで強い
* ワークフローをコード(Python)で記述できる(DAG)
* スケジューラで定期実行できる
* 失敗時のリトライ・アラートが強い
* Web UIが強力
* プラグインが豊富で拡張性が高い
## ワークフローを記述する
Airflowの最大特徴はDAG(有向非巡回グラフ)という構造で
処理の流れをコード化できること。
DAG(Directed Acyclic Graph)とは
“順序や依存関係を持つタスクの集合” のこと。
```python
with DAG("my_etl_job") as dag:
extract >> transform >> load
```
* Directed(有向) → 流れに向きがある(A → B → C)
* Acyclic(非巡回) → ループしてはいけない(戻ってきてはいけない)
* Graph(グラフ) → ノード(タスク)と線(依存)で表す
```mermaid
flowchart LR
source1[("データソース1
MySQL")]
source2[("データソース2
API")]
source3[("データソース3
CSV")]
extract["Extract
データ抽出"]
transform["Transform
データ変換"]
load["Load
データ格納"]
dwh[("データウェア
ハウス")]
source1 --> extract
source2 --> extract
source3 --> extract
extract --> transform
transform --> load
load --> dwh
```
### Task(タスク)
DAG内で実行される個々の処理単位。
データ処理やスクリプト実行などを担当する
---
## Develop
### 環境を準備する
## Link
* https://airflow.apache.org/docs/apache-airflow/stable/howto/variable.html
* https://zenn.dev/iwatagumi/articles/c8c61771ae49fc