dbt 包依赖简单测试
dbt 包含一个自己的包管理,可以使用git 等工具,还是很方便的,可以方便的进行代码共享,实现复用
创建简单包
实际上就是一个简单的dbt 项目
- 创建简单包
dbt init gitlab-demo
- 修改配置
主要是包信息的修改,同时添加了一些macro,方便调用,具体代码可以参考上面的gitlab
get_versions_schema.sql: {% macro get_versions_schema() -%} {%- set defaultname =demo -%} dalongdemo {%- endmacro %} gitlab_projectinfo_info.sql: {% macro gitlab_projectinfo_info() -%} projects {%- endmacro %}
创建引用包的项目
创建方式同上,就是一个包地址的配置,以及调用
- 创建项目
dbt init package-demo
- 项目信息修改
主要是名称,以及版本信息,可以直接使用默认的,但是建议按照有意义的名称命名
dbt_project.yml文件: name: 'packageapp' version: '1.0' profile: 'demo' source-paths: ["models"] analysis-paths: ["analysis"] test-paths: ["tests"] data-paths: ["data"] macro-paths: ["macros"] target-path: "target" # directory which will store compiled SQL files clean-targets: # directories to be removed by `dbt clean` - "target" - "dbt_modules" models: packageapp: base: materialized: view
配置项目依赖
- 添加依赖
dbt_project.yml 文件: name: 'packageapp' version: '1.0' profile: 'demo' source-paths: ["models"] analysis-paths: ["analysis"] test-paths: ["tests"] data-paths: ["data"] macro-paths: ["macros"] target-path: "target" # directory which will store compiled SQL files clean-targets: # directories to be removed by `dbt clean` - "target" - "dbt_modules" repositories: - https:///dalongrong/dbt-gitlab-demo.git models: packageapp: base: materialized: view
- 使用
主要是调用包的macro
models/packageapp/base/packageapp_projectinfo.sql: {{ config(materialized='view') }} select * from {{ref(gitlab.gitlab_projectinfo_info())}} # 使用ref 进行包macro 的引用,使用使用ref 的方式调用,保证依赖顺序
运行&&测试&&文档
- 添加依赖
dbt deps
- 运行
dbt run && dbt docs generate && dbt docs serve
- 效果
说明
对于profile 的配置,上面没有写,参考基本配置就可以了,数据库可以直接使用项目中的docker-compose 运行即可
macro 以及model 引用方式
macro 需要加上pacakge 的名称model 可以使用类似普通的方式,比如gitlab 包中的gitlab_projectinfo 可以按照 select * from {{ref('gitlab_projectinfo')}} 方式引用,所以model 的命名比较重要,这个在最佳实践中有说明