• dbt 包依赖简单测试


    dbt 包含一个自己的包管理,可以使用git 等工具,还是很方便的,可以方便的进行代码共享,实现复用

    创建简单包

    实际上就是一个简单的dbt 项目,参考项目 https://gitlab.com/dalongrong/dbt-gitlab-demo

    • 创建简单包
    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 %}

    创建引用包的项目

    创建方式同上,就是一个包地址的配置,以及调用,参考项目 https://gitlab.com/dalongrong/dbt-package-demo

    • 创建项目
    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://gitlab.com/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 的命名比较重要,这个在最佳实践中有说明

    参考资料

    https://gitlab.com/dalongrong/dbt-package-demo
    https://gitlab.com/dalongrong/dbt-gitlab-demo
    https://docs.getdbt.com/docs/macros
    https://docs.getdbt.com/docs/building-packages
    https://docs.getdbt.com/docs/package-management
    https://gitlab.com/dalongrong/dbt-docker-graphql-demo

  • 相关阅读:
    C语言保留字
    N的阶乘末尾有多少个零?
    控制台初级玩法
    数据结构笔记#二分法查找
    数据结构应用实例#栈&单链表#简易计算器
    数据结构应用实例#栈#迷宫寻路
    数据结构笔记#栈
    #2028 Lowest Common Multiple Plus
    数据结构笔记#单链表
    #2018 母牛的故事
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/9830214.html
Copyright © 2020-2023  润新知