2017-03-31 65 views
1

的「DS」可變我能夠訪問宏在Python代碼象下面這樣:訪問氣流

partition_dt = macros.ds_add(ds, 1) 

,但我無法弄清楚如何獲得ds變量本身,這看似的保持只能在模板中訪問。任何指針?

+0

也許你需要[提供上下文](http://stackoverflow.com/a/40554473/2646526)?看到類似的例子[這裏](http://stackoverflow.com/a/36754930/2646526)。 – heenenee

+0

你能澄清一下partition_dt是什麼嗎?它是任務實例化中的一個字段嗎? – jhnclvr

回答

5

我假設你要調用內置氣流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") }}' 
0

簡短的回答,DS和宏變量只能通過模板進行訪問,因爲他們只是執行,而不是在過程中存在python代碼解析(當dag被氣流加載時)。

真正的問題是類似這樣的:execution_date in airflow: need to access as a variable,我試圖解釋2個步驟,以及如何的差,有在最後結果的變量執行日期:https://stackoverflow.com/a/45725005/3756307

+0

它們也可以傳遞給Python運算符家族(PythonOperator BranchPythonOperator,ShortCircuitOperator)中使用的python_callable函數,例如,請參閱https://stackoverflow.com/a/40554473/1335793 – Davos