我的目标是能够根据我正在进行的 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
Run Code Online (Sandbox Code Playgroud)
我想这里的复杂性还在于源宏的作用远不止于此,例如为文档的谱系设置一些信息,我绝对想保留这些信息。
在此方法之外的任何建议都非常受欢迎!
| 归档时间: |
|
| 查看次数: |
7169 次 |
| 最近记录: |