dbt 包的构建

dbt的包是一种可以复用的代码,可以方便进行模型的共享

创建一个包

和普通的dbt 项目类似

  • 初始化(init)
dbt init [packagename]
  • 目录结构
 文件:
  README.md
  dbt_project.yml
 目录:
  models/
  macros/
  tests/
  analysis/

*## 包信息修改

  • dbt_project.yml
修改name version  以及设置profile 同时移除多余的models 配置

参考配置

dbt_project.yml:
name: 'mailchimp'
version: '0.0.1'

# HEY! Make sure you have a `mailchimp` profile
# defined in ~/.dbt/profiles.yml
profile: 'mailchimp'

source-paths: ["models"]
analysis-paths: ["analysis"] 
test-paths: ["tests"]
data-paths: ["data"]
macro-paths: ["macros"] 

target-path: "target"
clean-targets:
    - "target"
    - "dbt_modules"

models:

~/.dbt/profiles.yml:
# Place this at the bottom of your `~/.dbt/profiles.yml` file,
# below any other profiles that you've already defined

# Use the value you set for `profile:` in the `dbt_project.yml` file here
mailchimp:
  target: dev
  outputs:
    dev:
      type: xxx
      host: xxx
      user: xxx
      pass: xxx
      port: xxx
      dbname: xxx
      schema: package_mailchimp # call this whatever makes sense for you

构建一个dbt 包

{{ config(materialized='ephemeral') }}
select * from {{ var('mailchimp:campaigns_table') }}
  • 模型的前缀
    推荐是添加上包名 ,比如mailchimp_campaigns.sql 使用这个就比campaigns.sql好
  • 默认使用视图
    这个在官方的最佳实践中也说明了,同时基础模型使用 ephemeral
  • 应该进行测试
    可以使用自定义数据进行测试
  • 文档化包的使用说明以及信息
    包含描述、包的依赖图、变量,可以参考 https://github.com/fishtown-analytics/snowplow

发布包

发布包可以使用github 等源代码工具,可以方便的共享,同时我们已经版本化包的代码,同时
有相关的问题说明,对于破坏性的变更可以方便使用者进行权衡。

参考资料

https://docs.getdbt.com/docs/testing
https://docs.getdbt.com/reference#var
https://github.com/fishtown-analytics/snowplow

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

编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)

导航

< 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
点击右上角即可分享
微信分享提示