如何使用自定义参数调用Dataform运行Flow(SQL查询)
如何在Dataform中使用自定义参数运行Flow(SQL查询)
当然可以,Dataform支持通过命令行或API传递自定义参数,并在SQL查询中直接引用这些参数。以下是具体实现步骤:
1. 定义参数(可选:设置默认值)
你可以在项目配置中声明参数并设置默认值,避免运行时未传参导致错误。推荐在includes目录下创建配置文件,比如includes/config.js:
module.exports = { start_date: "20220101", // 默认起始日期 end_date: "20220801" // 默认结束日期 };
或者直接在SQLX文件的config块中声明参数:
config { type: "table", params: { start_date: self().config.vars.start_date || "20220101", end_date: self().config.vars.end_date || "20220801" } }
2. 在SQL查询中引用参数
在你的SQLX文件里,使用模板语法直接调用参数:
SELECT * FROM raw_events WHERE event_date BETWEEN '${self().config.params.start_date}' AND '${self().config.params.end_date}'
如果是直接引用全局变量,也可以简化为:
SELECT * FROM raw_events WHERE event_date BETWEEN '${vars.start_date}' AND '${vars.end_date}'
3. 传递参数运行Flow
通过Dataform CLI运行
使用--vars参数传递自定义参数值,覆盖默认配置:
dataform run --vars='{"start_date": "20220101", "end_date": "20220801"}'
如果只需要运行指定的Flow,加上--actions参数:
dataform run --actions="my_flow" --vars='{"start_date": "20220101", "end_date": "20220801"}'
通过API(curl)调用
如果是调用Dataform Cloud API,需要在请求体中包含vars字段:
curl -X POST https://api.dataform.co/v1/projects/{PROJECT_ID}/workspaces/{WORKSPACE_ID}/runs \ -H "Authorization: Bearer {API_KEY}" \ -H "Content-Type: application/json" \ -d '{ "config": { "vars": { "start_date": "20220101", "end_date": "20220801" } }, "actions": ["my_flow"] }'
4. 注意事项
- 确保参数格式与数据库要求兼容,比如日期格式需匹配表中
event_date字段的类型。 - 命令行或API传递的参数优先级高于项目中设置的默认值。
- 若参数涉及敏感信息,避免在命令行明文传递,可通过环境变量或加密配置处理。
内容的提问来源于stack exchange,提问作者Fares DAOUD
相关产品推荐
相关产品推荐

