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

如何将dbt Jinja宏设为测试默认参数并支持YAML自定义指定

实现步骤

1. 修改自定义测试的参数与逻辑

打开你的自定义测试文件valid_date.sql,新增lower_bound参数并设置默认值为默认宏的名称字符串,同时把原来直接调用宏的地方改成动态根据参数调用对应的宏:

{% test valid_date(model, column_name, exclude_condition = '1=1', lower_bound = 'today_date_milliseconds') %}

    SELECT {{ column_name }}
    FROM {{ model }}
    WHERE CAST({{ column_name }} AS BIGINT) < {{ macros[lower_bound]() }}
      AND {{ exclude_condition }}

{% endtest %}

这里的macros[lower_bound]会根据传入的字符串参数,自动匹配项目中已定义的同名宏,加()就是执行这个宏并获取返回值。

2. 在YAML中替换默认宏

如果需要用其他宏作为下界,直接在测试配置的lower_bound字段中传入目标宏的名称字符串即可。比如你有一个名为yesterday_date_milliseconds的宏,配置如下:

models:
  - name: 你的模型名称
    columns:
      - name: date_3
        description: column for third date
        tests:
          - valid_date:
              lower_bound: 'yesterday_date_milliseconds'

注意事项

  • 替换的宏必须是项目中已定义的(通常放在macros/目录下),且返回值类型要和CAST({{ column_name }} AS BIGINT)的类型匹配(即数值类型)
  • 如果宏需要接收参数,你可以进一步扩展测试的参数设计,比如新增lower_bound_args来传递宏的参数,但当前需求下不需要这一步

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 14:54:19