dbt pacakge 模型引用

dbt 的package 能力可以方便的实现模型的共享,以下是一个简单的示例,实际上我以前写过(很早了,目前dbt 变化还是很大的)

外部模型引用使用说明

实际上是通过ref宏,明确声明包名以及模型,格式{{ref(<project or package name>,<model name>)}

示例项目

  • 项目结构

platform是需要引用的,userapp 是引用platform 的dbt 项目

 

  • 模型简单说明
    platform 参考,就是一个标准的dbt 模型,定义,使用了seed 中的数据
 
├── README.md
├── analyses
├── dbt_project.yml
├── macros
├── models
└── platform
├── my_first_dbt_model__platform.sql
└── schema.yml
├── seeds
└── app
└── app.csv
├── snapshots
└── tests

my_first_dbt_model__platform.sql

{{ config(materialized='table') }}
select * from {{ ref('app') }}

userapp 包模型引用

├── README.md
├── analyses
├── dbt_project.yml
├── logs
└── dbt.log
├── macros
├── models
└── example
├── my_first_dbt_model__userapp.sql
├── my_second_dbt_model__userapp.sql
└── schema.yml
├── packages.yml
├── seeds
├── snapshots
└── tests

packages.yml 引用platform 包

packages:
  - local: ../platform

my_second_dbt_model__userapp.sql 引用platform 中的模型

select *
from {{ ref('platform','my_first_dbt_model__platform') }}
  • 运行
cd userapp
dbt build
  • 数据效果

说明

完整代码参考github,但是注意包中的模型命名最好唯一,同时遵循dbt官方的一些实践

参考资料

https://docs.getdbt.com/docs/build/packages
https://docs.getdbt.com/reference/dbt-jinja-functions/ref
https://hub.getdbt.com/dbt-labs/dbt_utils/latest/
https://github.com/rongfengliang/dbt_package_model_ref
https://docs.getdbt.com/guides/best-practices

posted on   荣锋亮  阅读(29)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2021-08-04 cloudevents 学习二 java 代码集成试用
2021-08-04 cloudevents 学习一 js sdk 试用
2020-08-04 openresty ngx.location.capture http2 问题
2016-08-04 node-webkit 应用打包发布
2016-08-04 nedb nodejs 数据库学习

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示