iT邦幫忙

2023 iThome 鐵人賽

DAY 20
0

在前兩天陸續介紹了 Airflow 如何進行參數傳遞的主題,以及 XCom 的設計及使用方法。今天接續著參數的話題來談談 Airflow Variable 及 Template 的使用。

Variable

什麼是 Variable

我們一樣先了解什麼是 Variable,再進行相關的實作。在前兩天當中我們談到的是如何傳遞參數給 DAG 以及怎麼在 Task 之間進行參數的溝通。我們知道除了這些動態的參數之外,有很多參數是基本上不會變動的,像是環境的參數,或是某些數值的參數,甚至還有很多情境是不同的 DAG 都會需要取得的參數。那我們就可以使用 Airflow 的 Variable 模組。Variable 可以讓我們在 Airflow 平台當中設定 Key - Value 的參數對,並在 DAG 的中取用。是一個很適合管理環境便是以及相關參數的模組。

設定方法

這邊介紹兩種 Variable 的設定方法。可以依照需求與習慣進行設定。

  • 使用介面設定
    我們可以使用 Airflow 的介面進行設定。首先點擊 Airflow 最上方選項列的 Admin,之後點選 Variable 欄位。
    https://ithelp.ithome.com.tw/upload/images/20231005/20140477oMZrr3C4YS.png

進入 Variable 頁面之後我們點擊增加參數的按鈕進行設定。
https://ithelp.ithome.com.tw/upload/images/20231005/20140477I8HdrkTCu8.png

填入參數之後點擊下方 Save 按鍵進行儲存。
https://ithelp.ithome.com.tw/upload/images/20231005/20140477BPMsC7QpkB.png

回到 Variable 頁面我們就可以看到 Variable 多了一筆紀錄。表示我們成功的設定了一組紀錄。
https://ithelp.ithome.com.tw/upload/images/20231005/20140477LAihPY4Ttz.png

我們可以看到 Airflow 也提供使用檔案上傳匯入參數。如果有較多的參數輸入需求,可以考慮使用檔案匯入。

  • 使用環定變數設定
    另一種方式則是透過 Airflow Command 進行輸入
export AIRFLOW_VAR_TEST=AIRFLOW

# 使用 json 參數
export AIRFLOW_VAR_TEST_JSON='{"var1":"a"}'

環境變數的使用方式需將字串的開頭設定為 AIRFLOW_VAR ,則 Airflow 能擷取相關資訊。

取值方法

在 DAG 中如果我們要取得 Variable 的值來使用。我們可以透過內建 Variable 模組進行操作,首先 import Variable 模組。並使用Variable.get()取得參數值。

from airflow.models import Variable

pipeline_var = Variable.get("pipeline_var")
test = Variable.get("test", deserialize_json=True)
test_json = Variable.get("test_json", deserialize_json=True)

如果存入的格式為 json 也可以將值轉換。這樣我們就可以針對各種情境使用 Variable。

Template

在 Airflow 的設計中, Template 是非常方便用於優雅的傳遞參數的一個方式。使用 Template 可以讓開發者直接將參數進行傳遞,不用先把參數用一個變數儲存。Template 的做法其實存在於很多地方,使用過 Django 模板的朋友,應該就會對這做法很熟悉。

使用 Template

那實際上該怎麼做呢? Template 以雙大括號作為識別的符號,在裡面寫入變數名稱,則可取得的變數值。

取得預設值

在昨天有講到的預設參數,我們可以使用 Template 取得

  • {{ ds }} 取得執行日期
  • {{ ts }} 取得執行時間

更多的資訊可參考官方文件
https://airflow.apache.org/docs/apache-airflow/stable/templates-ref.html

取得 Variable值

# 取得值
{{ var.value.<variable_name> }}

# 取得 json
{{ var.json.<variable_name> }}

Template 也可以使用在多種層面,有興趣的朋友可以查詢參考官方文件。透過使用 Template 可以讓我們的程式更加的簡潔優雅。

參考官方文件:
https://airflow.apache.org/docs/apache-airflow/stable/templates-ref.html

今天玩的東西十分有趣,希望大家也能夠善用 Airflow 中內建的工具,幫助自己更有效率的開發 Data pipeline!


上一篇
『Day19』使用 XCom 進行 Task之間參數傳遞
下一篇
『Day21』使用 Conn、Hook 進行外部連接
系列文
Data pipeline 建起來!用 Airflow 開發你的 Data pipeline30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言