You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Snowflake Operator将Airflow执行日期传入SQL参数?

解决Airflow SnowflakeOperator传入执行日期的问题

正确写法示例

方式1:直接在SQL中使用模板变量

修正参数命名(task_id而非Task_Id),并对执行日期做格式转换,确保Snowflake可识别:

test_date = SnowflakeOperator(
    task_id='test_execution_date',
    sql='INSERT INTO TEST_TABLE (Execution_Date) VALUES ({{ execution_date.isoformat() }})',
    snowflake_conn_id='你的Snowflake连接ID',
    warehouse='你的仓库名',
    database='你的数据库名',
    schema='你的Schema名'
)

如果Execution_Date字段是纯日期类型(不含时间),用Airflow内置的ds变量(格式YYYY-MM-DD)更简洁:

test_date = SnowflakeOperator(
    task_id='test_execution_date',
    sql='INSERT INTO TEST_TABLE (Execution_Date) VALUES ({{ ds }})',
    # 补充其他必要参数
)

方式2:通过params传递参数

修正拼写错误,同时确保模板变量正常渲染:

test_date = SnowflakeOperator(
    task_id='test_execution_date',
    sql='INSERT INTO TEST_TABLE (Execution_Date) VALUES ({{ params.execution_date }})',
    params={'execution_date': '{{ execution_date.isoformat() }}'},
    # 补充其他必要参数
)

或者用占位符语法更规范:

test_date = SnowflakeOperator(
    task_id='test_execution_date',
    sql='INSERT INTO TEST_TABLE (Execution_Date) VALUES (%(execution_date)s)',
    params={'execution_date': '{{ ds }}'},
    # 补充其他必要参数
)

你之前写法的问题分析

  1. 参数名错误:Airflow Operator参数采用小写蛇形命名,Task_Id需改为task_id,参数名错误会导致模板上下文无法传递,变量得不到渲染。
  2. 拼写错误:第二种写法中params的键写成了exectuion_date(少一个u),导致SQL中的params.execution_date无法匹配对应值。
  3. 日期未格式化:execution_date是datetime对象,直接插入Snowflake会出现类型不兼容问题,需转成ISO格式或日期字符串。

内容的提问来源于stack exchange,提问作者Ryan Banks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 12:31:01