dbt 测试可以相互依赖吗?
Can dbt tests be dependent on one another?
我想知道我们是否可以创建相互依赖的测试。例如,如果第一个失败,运行 第二个等等,并在测试成功的地方跳过向下测试。
目标是在主要测试通过时节省 CPU 对多余测试的消耗。
知道如何实现类似的功能吗?或者如何根据这些标准构建测试?
dbt 有很多方法可以 select 任务子集。文档给出了 test selection examples.
的良好 selection
我的建议是使用 tag
或 YAML
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
我想知道我们是否可以创建相互依赖的测试。例如,如果第一个失败,运行 第二个等等,并在测试成功的地方跳过向下测试。
目标是在主要测试通过时节省 CPU 对多余测试的消耗。
知道如何实现类似的功能吗?或者如何根据这些标准构建测试?
dbt 有很多方法可以 select 任务子集。文档给出了 test selection examples.
的良好 selection我的建议是使用 tag
或 YAML
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