的「DS」可變我能夠訪問宏在Python代碼象下面這樣:訪問氣流
partition_dt = macros.ds_add(ds, 1)
,但我無法弄清楚如何獲得ds
變量本身,這看似的保持只能在模板中訪問。任何指針?
的「DS」可變我能夠訪問宏在Python代碼象下面這樣:訪問氣流
partition_dt = macros.ds_add(ds, 1)
,但我無法弄清楚如何獲得ds
變量本身,這看似的保持只能在模板中訪問。任何指針?
我假設你要調用內置氣流DS的預設變量之一 - 執行日期爲YYYY-MM-DD
要調用剛剛DS,你可以這樣做:
EXEC_DATE = '{{ ds }}'
打電話給你想要的東西 - macros.ds_add:
EXEC_DATE = '{{ macros.ds_add(ds, 1) }}'
並加載它是這樣的:
T1 = BashOperator(\
task_id='test_ds',
bash_command='echo ' + EXEC_DATE
dag=DAG)
如果你想格式化(像我不得不),你可以這樣做:
EXEC_DATE = '{{ macros.ds_format(macros.ds_add(ds, 1), "%Y-%m-%d", "%Y%m%d") }}'
簡短的回答,DS和宏變量只能通過模板進行訪問,因爲他們只是執行,而不是在過程中存在python代碼解析(當dag被氣流加載時)。
真正的問題是類似這樣的:execution_date in airflow: need to access as a variable,我試圖解釋2個步驟,以及如何的差,有在最後結果的變量執行日期:https://stackoverflow.com/a/45725005/3756307
它們也可以傳遞給Python運算符家族(PythonOperator BranchPythonOperator,ShortCircuitOperator)中使用的python_callable函數,例如,請參閱https://stackoverflow.com/a/40554473/1335793 – Davos
也許你需要[提供上下文](http://stackoverflow.com/a/40554473/2646526)?看到類似的例子[這裏](http://stackoverflow.com/a/36754930/2646526)。 – heenenee
你能澄清一下partition_dt是什麼嗎?它是任務實例化中的一個字段嗎? – jhnclvr