我正在尝试运行引用现有上游表模型的下游模型。这是失败的,因为下游模型试图在下游模式中找到上游模型。
也许它与如何在 DBT Cloud 中设置环境/模式有关?或者,也许我错过了一些简单的东西,但对于我的生活,我找不到它。
我在下面创建了最简单的复制品。
主机:DBT云
数据库:雪花
环境:
- upstream_model 构建在名为 upstream 的 dbt 云环境中,schema = 'upstream_model'
- 下游模型构建在名为下游的dbt云环境中,schema = 'downstream_model'
dbt_project.yml
name: 'repro'
config-version: 2
require-dbt-version: 0.17.2
version: '2.0.0'
...
models:
repro:
repro_downstream:
+materialized: ephemeral
repro_upstream:
+materialized: ephemeral
当上游模型物化 = 'ephemeral' 时,它会工作并将上游模型用作 CTE: Ephemeral materialization
当上游模型实现 = 'table' 时,它会失败,因为它在下游模型的模式中查找上游模型: 创建表失败
上游.yml:
version: 2
models:
- name: upstream_model
上游模型.sql:
{{
config(
materialized='**table**'
)
}}
With model as (
SELECT 1
)
SELECT * FROM model
下游.yml:
version: 2
models:
- name: downstream_model
下游模型.sql:
{{
config(
materialized='table'
)
}}
With model as (
SELECT * FROM
{{ ref('upstream_model') }}
)
SELECT * FROM model