dbt 测试可以相互依赖吗?

Can dbt tests be dependent on one another?

我想知道我们是否可以创建相互依赖的测试。例如,如果第一个失败,运行 第二个等等,并在测试成功的地方跳过向下测试。

目标是在主要测试通过时节省 CPU 对多余测试的消耗。

知道如何实现类似的功能吗?或者如何根据这些标准构建测试?

dbt 有很多方法可以 select 任务子集。文档给出了 test selection examples.

的良好 selection

我的建议是使用 tagYAML selectors 将您的测试分为不同的阶段。您甚至可以将第一阶段测试设置为 --schema,将第二阶段设置为 --data.

在您的协调器(Jenkins、Circle CI、GitHub 操作)中,您将添加控制流 (if-then) 逻辑。下面是一个 hacky bash 脚本示例。

echo 'phase one: running'
if dbt test --tag phase_one; then
    echo 'phase one: passed'
else
    echo 'phase one: failed'
    echo 'phase two: running,
    if dbt test --tag phase_two; then
        echo 'phase two: passed'
    else
        echo 'phase two: failed'
    fi
fi