Airflow 自动日期
我有一个DAG,我想用来回填我的数据库表Airflow 自动日期,airflow,airflow-scheduler,Airflow,Airflow Scheduler,我有一个DAG,我想用来回填我的数据库表 from airflow import DAG from airflow.operators.postgres_operator import PostgresOperator from datetime import datetime, timedelta args = { 'owner': 'airflow', 'depends_on_past': False, 'start_date': datetime(2018, 4,
from airflow import DAG
from airflow.operators.postgres_operator import PostgresOperator
from datetime import datetime, timedelta
args = {
'owner': 'airflow',
'depends_on_past': False,
'start_date': datetime(2018, 4, 1),
'retry_delay': timedelta(minutes=1),
}
dag = DAG(dag_id='airflow_backfill', default_args=args, schedule_interval='@daily')
"""
Task for inserting data per day
"""
task1 = PostgresOperator(
task_id='insert_new_row',
postgres_conn_id='aws_pg',
sql="INSERT INTO airflow_test(date_at) VALUES('2018-04-01')",
dag=dag,
)
task2 = PostgresOperator(
task_id='update_team_name',
postgres_conn_id='aws_pg',
sql="UPDATE airflow_test SET team_name = (SELECT team_name FROM teams ORDER BY RANDOM() LIMIT 1) WHERE team_name is NULL",
dag=dag,
)
task1.set_downstream(task2)
我将从2018年4月1日起在数据库中插入一行,但问题是我给出了硬编码变量处的日期
我的问题是,是否有任何方法可以将回填日期作为插入值?我想在进行回填时自动设置“date_at”的值,但尚未找到任何气流环境/配置变量,我无法从中自动获取回填日期
我使用的是ApacheAirflow 1.9.0。谢谢。编辑:您应该能够使用jinja模板获取变量执行日期:
task1 = PostgresOperator(
task_id='insert_new_row',
postgres_conn_id='aws_pg',
sql="INSERT INTO airflow_test(date_at) VALUES('{{ ds }}')",
dag=dag,
)
已编辑:您应该能够使用jinja模板获取变量执行日期:
task1 = PostgresOperator(
task_id='insert_new_row',
postgres_conn_id='aws_pg',
sql="INSERT INTO airflow_test(date_at) VALUES('{{ ds }}')",
dag=dag,
)
我建议使用
{{ds}
,因为它将根据请求将输出格式化为YYYY-MM-DD
。由于execution\u date
是一个日期时间,我对格式不太确定。我也在想同样的事情,但是{{ds}}不是今天的日期时间戳吗?对于执行日期,您可以使用{{execution\u date}.strftime(%Y-%m-%d)?从引用页:{{ds}
:执行日期为YYYY-MM,谢谢。我知道这是可能的。没有太多地尝试Jinja模板。编辑答案以反映您的输入。我建议使用{{ds}
,因为它将根据要求将输出格式化为YYYY-MM-DD
。由于execution\u date
是一个日期时间,我对格式不太确定。我也在想同样的事情,但是{{ds}}不是今天的日期时间戳吗?对于执行日期,您可以使用{{execution\u date}.strftime(%Y-%m-%d)?从引用页:{{ds}
:执行日期为YYYY-MM,谢谢。我知道这是可能的。没有太多地尝试Jinja模板。编辑答案以反映您的输入。