DBT 重复检查忽略模式

DBT Duplication Check Ignores Schemas

dbt compile 期间,会进行模型重复检查,以确保模型不会相互重叠。这项检查给我带来了问题。

我们的架构

我们的系统将处理阶段划分为不同的模式,我们希望开始使用 dbt。所以,假设我们正在导入一个我们称之为 jaffles 的原始数据集,我们将有一个 raw.jaffles table、一个 clean.jaffles table,等等在。请注意,此示例中的 rawclean 是不同的架构。

问题

这打破了重复检查。不管我如何 customize the schema names, or how I call ref,重复检查发生在接触任何一个之前,注意到我们有两个名为“jaffles”的模型,忽略了它们实际上不会因处于不同模式而发生冲突,并抛出错误。

可能的解决方案

docs 中所述,“模型名称必须是唯一的,即使它们位于不同的文件夹中也是如此”。

不过,您可以使用 custom aliases(参见 the docs),您可以在其中 re-use 相同的 table/view 名称,但不超过 2 个不同的名称模式。在您的示例中,您可以有两个不同的模型,每个模型都分配了一个特定的模式:

-- models/.../raw_jaffles.sql
{{ config(alias='jaffles', schema='raw') }}
-- models/.../clean_jaffles.sql
{{ config(alias='jaffles', schema='clean') }}

尽管如此,文件名仍然需要彼此不同。