如何在DBT中运行特定时间的测试?

问题描述 投票:0回答:1

我正在 DBT 中设置测试(我使用 1.4 版本),并且我需要它仅在 UTC 格式的特定时间 (05:00) 之后运行。为此,我使用 schema.yml 中的启用属性以及基于 now() 函数的条件逻辑。这个想法是测试只会在 UTC 时间凌晨 05:00 之后激活。

我当前的配置如下:

version: 2
models:
  - name: my_first_model
    tests:
      - my_first_model_test:
          name: my_first_model_test
          config:
            enabled: "{{ 'true' if (now()..hour >= 5) else 'false' }}"

我的问题是:DBT 中没有启用的逻辑有效吗?启用是否接受像这样的 Jinja 表达式? 如果无效,根据时间在 DBT 中调节测试执行的最佳方法是什么?

python testing cron jinja2 dbt
1个回答
0
投票

您可以创建一个返回布尔值的宏并从 yml 文件调用该宏。

version: 2
models:
  - name: my_first_model
    tests:
      - my_first_model_test:
          name: my_first_model_test
          config:
            enabled: "{{ is_after_5am_utc() }}"

宏观

{% macro is_after_5am_utc() %}
{% set current_time = execution_time %}
{% set execution_hour = current_time.hour %}

{% if execution_hour >= 5 %}
    {% do return(true) %}
{% else %}
    {% do return(false) %}
{% endif %}
{% endmacro %}

我已经使用了 execution_time 而不是现在,因为 Jinja 可能不支持它。你可以尝试一下并检查。

© www.soinside.com 2019 - 2024. All rights reserved.