如何在dbt模型中引用Dagster外部资产dld_sales?
如何在dbt模型中正确引用Dagster独立资产?
问题背景
我的dbt模型需引用Dagster中独立于dbt的资产dld_sales,该Dagster资产定义如下:
@asset( group_name=". .... ", io_manager_key=".. ", ) def dld_sales():
我尝试在dbt模型中通过ref函数引用:
with source as ( select * from {{ ref("dld_sales") }} ),
执行后出现错误:
Model ‘model.dbt_project.stg_dld_sales’ (models/staging/stg_dld_sales.sql) depends on a node named ‘dld_sales’ which was not found
正确解决方法
方法一:通过dbt数据源(Source)配置引用
- 在dbt项目的数据源配置文件(通常是
models/schema.yml)中,将Dagster的dld_sales资产定义为外部数据源:sources: - name: dagster_external_assets schema: <目标数据库schema> # 替换为dld_sales实际所在的数据库schema tables: - name: dld_sales - 在dbt模型中使用
source()函数引用该资产:with source as ( select * from {{ source('dagster_external_assets', 'dld_sales') }} ),
方法二:直接使用完整表路径引用
若无需配置数据源,可直接写出dld_sales的完整数据库标识路径:
with source as ( select * from <数据库名称>.<schema名称>.dld_sales ),
核心原因
{{ ref() }}仅能识别dbt自身管理的节点(如模型、快照、种子等),而Dagster独立资产属于外部数据源,不在dbt的节点注册表内,因此用ref引用会触发“节点未找到”的错误。
内容的提问来源于stack exchange,提问作者Remis Haroon - رامز
相关产品推荐
相关产品推荐

