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

如何通过CLI参数参数化Kedro数据目录适配调度任务?

解决Kedro流水线中通过CLI参数动态配置数据目录的问题

核心思路

直接利用Kedro的参数插值功能,把CLI传入的date和country参数嵌入到数据目录(catalog)的数据集配置中,实现动态生成SQL查询的需求。

具体步骤

  1. 通过Kedro CLI传递参数
    用kedro run命令的--params选项直接传入所需参数,格式为key:value,多个参数用逗号分隔:

    kedro run --params date:2022-01-03,country:UK
    
  2. 在数据目录中配置动态SQL查询
    在conf/base/catalog.yml里定义你的SQL数据集,用{{ params.xxx }}的语法引用CLI传入的参数,自动完成插值:

    # conf/base/catalog.yml
    input_data:
      type: pandas.SQLTableDataSet
      sql: "SELECT * FROM input_data_{{ params.country }} WHERE date = '{{ params.date }}'"
      credentials: db_credentials  # 替换成你实际的数据库凭证配置
      load_args:
        index_col: None
    

    这里的{{ params.country }}和{{ params.date }}会自动替换为CLI传入的对应值,生成你需要的SQL语句。

  3. 验证参数传递效果

    • 可以先运行kedro config list查看当前生效的参数,确认date和country已被正确加载
    • 也可以在节点代码中打印context.params来验证参数:
      def predict_node(context, input_data):
          print("传入的日期:", context.params["date"])
          print("传入的国家:", context.params["country"])
          # 后续预测逻辑
      
  4. 适配调度器调用
    调度器只需执行上述kedro run --params ...命令即可,和之前直接调用python predict的逻辑完全对齐,支持任意日期和国家参数。

补充说明

  • 如果需要对参数做类型转换(比如把字符串日期转成datetime对象),可以在节点代码里处理:
    from datetime import datetime
    
    def predict_node(context, input_data):
        date_param = datetime.strptime(context.params["date"], "%Y-%m-%d")
        # 处理后的日期可以用于后续逻辑
    
  • 若要设置参数默认值,可在conf/base/parameters.yml中添加:
    # conf/base/parameters.yml
    date: "2022-01-01"
    country: "UK"
    
    这样即使CLI不传参数,也会使用默认值兜底。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 06:02:07