雪花云数据平台-我可以根据SQL语句的输出运行或执行dbt模型吗



背景:我有一些模型具体化为"表"。此表由擦除(截断(和加载填充。现在,如果用于填充数据的查询返回空结果集,我希望保护表中的现有数据。如何确保空的结果集不会替换表中的现有数据。

我的表位于Snowflake中,并使用dbt对输出表进行建模。

Nutshell:只有当使用的SQL语句返回Not空结果集时,才提交事务。

您是否尝试过使用dbtref()函数,该函数允许我们在另一个模型中引用一个模型?https://docs.getdbt.com/reference/dbt-jinja-functions/ref

如果您加载数据的方式不是通过dbt控制的,那么您使用的是这个表-这被称为源。你可以在这里阅读更多关于这方面的信息。

dbt不控制加载到源中的内容,ELT中的其他T都是通过ref((函数引用模型时控制的。一个很好的例子是,如果你有一个更改的源,并将其加载到一个表中,并确保传入的数据不会"丢失";drop";已经记录的数据是"0";增量";物化。我建议你在这里多读一些。

思考增量需要时间和练习,建议不时做一个--full-refresh

您可以有预钩子和后钩子,它们可以用聪明的宏检查源代码并添加dbt测试。我们真的需要更多关于你所拥有的和你希望实现的目标的背景,以提出真正的回应。

最新更新