首页 > 其他分享 >dbt pacakge 模型引用

dbt pacakge 模型引用

时间:2023-08-04 22:24:21浏览次数:101  
标签:__ userapp yml pacakge platform 引用 model dbt

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

标签:__,userapp,yml,pacakge,platform,引用,model,dbt
From: https://www.cnblogs.com/rongfengliang/p/17607202.html

相关文章

  • 配置文件定义值引用
    1.yml中写自己定义的一些固定值,定义为一个数组:system:default-role:-SUPER_ADMIN-DEVICE_WB_LEADER_ROLE-WEIXIU_ROLE-WX_TEAM_LEADER-FAULT_AUDIT_ROLE-FAULT_PINDOWN_ROLE-XY_VERIFICATION_ROLE-DEVICE_WBGCS_ROLE2.定义到一个实......
  • 借用和引用
    所有权Rust通过所有权来管理内存,最妙的是,这种检查只发生在编译期,因此对于程序运行期,不会有任何性能上的损失。使用堆和栈的性能区别:写入方面:入栈比在堆上分配内存要快。因为入栈时操作系统无需分配新的空间,只需要将新数据放入栈顶即可。相比之下,在堆上分配内存则需要更多的工......
  • 10.智能指针出现循环引用怎么解决
    10.智能指针出现循环引用怎么解决?弱指针用于专门解决shared_ptr循环引用的问题,weak_ptr不会修改引用计数,即其存在与否并不影响对象的引用计数器。循环引用就是:两个对象互相使用一个shared_ptr成员变量指向对方。弱引用并不对对象的内存进行管理,在功能上类似于普通指针,然而一个比......
  • 8.智能指针的循环引用
    8.智能指针的循环引用循环引用是指使用多个智能指针share_ptr时,出现了指针之间相互指向,从而形成环的情况,有点类似于死锁的情况,这种情况下,智能指针往往不能正常调用对象的析构函数,从而造成内存泄漏。举个例子:#include<iostream>usingnamespacestd;template<typenameT>cl......
  • C++逆向分析——引用
    voidmain(){intx=1;int&ref=x;ref=2;printf("%d\n",ref);return;}反汇编代码:intx=1;00724A5FC745F401000000movdwordptr[x],1int&ref=x;00724A668D45F4lea......
  • VS2022 PCL库引用配置
    嫌麻烦的可以直接下载PCL1.13.1安装在D盘然后复制我的配置就行.VC++目录包含目录D:\PCL1.13.1\3rdParty\OpenNI2\Include;D:\PCL1.13.1\3rdParty\VTK\include\vtk-9.2;D:\PCL1.13.1\3rdParty\Qhull\include;D:\PCL1.13.1\3rdParty\FLANN\include;D:\PCL1.13.1\3rdParty\Ei......
  • dbt class 简单说明
    dbtclass可以用来创建数据仓库中的一些对象(比如关系,列)当需要通过高级模式进行模型以及宏构建的时候就比较有用在不少开源同时也包括官方core中都有使用到主要包含的功能Relation对象创建参考(对于在宏中使用api.Relation.create创建) {%setrelation=......
  • 引用与借用
    引用(reference)像一个指针,因为它是一个地址,我们可以由此访问储存于该地址的属于其他变量的数据。与指针不同,引用确保指向某个特定类型的有效值。点击查看代码fnmain(){lets1=String::from("hello");letlen=calculate_length(&s1);println!("Theleng......
  • C++ | 引用
    引用&使用引用intb=33,&a=b;b=17;cout<<a;//打印a为17使用引用声明变量类似于指针,声明的变量会同被引用的变量绑定,修改任何一方的数据都会使另一方的数据也改变。使用上的区别在于使用引用不需要*,引用可以理解为一个别名。在函数中使用引用传递参数将参......
  • mongodbtemplate格式化日期
    如何在MongoDBTemplate中格式化日期简介在使用SpringDataMongoDB时,我们经常会使用MongoTemplate来与MongoDB数据库进行交互。如果需要在查询或更新操作中格式化日期字段,可以通过定制一个Converter来实现。步骤概览下面是实现“MongoDBTemplate格式化日期”的步骤:步骤描......