【发布时间】:2022-01-11 14:38:24
【问题描述】:
我的目标是能够根据我正在执行的 DBT 运行类型来获得“动态”资源。更准确地说,我正在尝试找到一种解决方案来对我们的 DBT 模型进行端到端的业务测试。我不是指模式或简单的数据测试,而是业务逻辑测试。例如,我有一些带有测试数据的输入表,我运行 DBT 模型,然后我断言最终表包含所需的结果。我可以使用不同的“测试”配置文件在单独的模式中创建所有目标表,但我仍然需要能够从一组不同的源中进行选择,这将是我使用测试数据创建的测试表。
我想我可以在源文件中使用 jinja 并结合一些变量来实现这一点,但我想知道是否有更好的方法可以在不更改源文件的情况下做到这一点。就像,开发人员不必担心编写也适用于测试的代码。为此,我想知道我们是否可以覆盖源宏,或者按照这些方式做一些事情来合并这种行为——类似于我们覆盖generate_schema_name 宏时。类似于(在python伪代码中):
def source(schema_name, table_name):
if env('is_test') == true:
return schema_name + table_name + '_test'
else:
return schema_name + table_name
我想这里的复杂性还在于源宏的作用远不止于此,例如为文档的沿袭设置一些信息,我绝对想保留这些信息。
欢迎提出此方法之外的任何建议!
【问题讨论】:
标签: dbt