初识DBT以及搭建第一个DBT工程

news2024/11/17 22:45:55

DBT是什么:

        按照官方的说法,DBT 是一个数据转换流编排工具。个人理解就是,DBT是帮你编排SQL用的,你可以按照DBT的结构,构建好一个SQL的pipeline,然后让DBT帮你执行这个pipeline。我这里说的SQL pipeline的意思就是,先执行SQL a,再执行SQL b,类似这种。个人理解这就是DBT最大也是最核心的功能!

        因为在DBT中的操作基本都是关于SQL的操作,所以DBT才对外宣称自己是专门做ETL中的T(当然它也有支持一部分的python代码,但是貌似支队一小部分数据库提供支持)。

        个人觉得如果公司内部现成已经有一套数据任务开发框架,或者使用的是 ali 的 dataworks 、网易的 easydata 之类的,貌似没必要强行再上DBT。如果你是个中小公司,没有现成的数据开发平台,或者你是个数据分析师,嫌弃商用数据开发平台使用成本太高而且数据想保存在公司本地电脑中,那么建议考虑一下DBT!

        DBT还有一些特点:1. 把SQL开发像后端代码开发一样工程化,SQL工程存储在后端的代码仓库上,可以做到CI/CD。 2. 支持 jinja 宏函数,然后DBT定义了一套语法规范,抹平了一些SQL方言上的差异,做到一套DBT代码就可以在各个数据仓库上运行。当然对于这块功能我还是要打个问号的,后面研究的深入了再看看。 3. 无须写insert语句,直接写select语句即可,dbt会自动根据select建表,讲数据写入到数据库 4. 其他功能,后面慢慢说吧...

搭建第一个DBT工程:

        这里说的DBT指的是开源的dbt core,另外还有一款闭源的收费产品叫 dbt cloud。

        DBT是python代码编写的,所以想要使用dbt就要首先安装好python环境,个人使用的是3.10。

基于duckdb:

        dbt官方的收费产品dbt cloud 仅支持 BigQuery、Databricks、Postgres 等十多个数据库适配器,其他例如 Doris、MySQL、Hive 等等都是社区各自自己提供的适配器(开源)支持dbt。

        此处演示使用的数据库为duckdb。为什么是基于duckdb,是因为duckdb不需要安装,直接引个python包就好了。直接 pip install dbt-duckdb 安装好对应的python包即可,当然最好是在python虚拟环境中安装,防止与外部包冲突,同时安装dbt-duckdb 会自动把dbt-core 也安装好。

        环境安装好之后,然后直接执行dbt init my_jaffle_shop 就会帮你创建好一个名叫my_jaffle_shop 的dbt demo工程,如下所示,dbt会自动帮你创建好目录结构。其中dbt-project.yml是整个dbt工程的配置文件,它里面说明dbt工程的一些环境变量的配置,这样dbt就知道如何去解析工程结构了(具体每项配置干嘛用的,后续再说):

         同时在工程中还要新建一个文件叫profiles.yml,就是上面标红的第二个文件,整个文件是用于配置数据库连接信息用的,告诉dbt如何连接数据库。例如duckdb的配置如下所示:

        然后cd 到 myduckdb_jaffle_shop 目录下,执行 dbt run 命令,显示success,整个dbt工程就跑完了,数据就按demo工程中的SQL语句运行完毕写入到duckdb数据库中了:

        使用命令行查看运行结果:

参考:

        DBT是什么_dbt数据库_DBT中文社区的博客-CSDN博客

        Quickstart for dbt Core from a manual install | dbt Developer Hub

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/814177.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android 面试题 应用程序结构 十

🔥 Intent 传递数据 🔥 Activity、Service、BroadcastReceiver之间的通信载体 Intent 来传递数据。而ContentProvider则是共享文件。 Intent可传递的数据类型: a. 8种基本数据类型(boolean byte char short int long float double…

【雕爷学编程】MicroPython动手做(21)——掌控板之磁场传感器

知识点:什么是掌控板? 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片,支持WiFi和蓝牙双模通信,可作为物联网节点,实现物联网应用。同时掌控板上集成了OLED…

hooks复杂前端业务解题之道

hooks 大势所趋 2019年年初,react 在 16.8.x 版本正式具备了 hooks 能力,同年6月;尤雨溪在 vue/github-issues 里提出了关于 vue3 Component API 的提案(vue hooks的基础)。在Vue3的组合式API出现后,githu…

session反序列化+SoapClientSSRF+CRLF

文章目录 session反序列化SoapClientSSRFCRLF前言bestphps revengecall_user_func()方法的特性SSRFCRLF组合拳session反序列化 解题步骤总结 session反序列化SoapClientSSRFCRLF 前言 从一道题分析通过session反序列化出发SoapClientSSRF利用CRLF解题 bestphp’s revenge 首…

计算机毕设 深度学习人体语义分割在弹幕防遮挡上的实现 - python

文章目录 1 课题背景2 技术原理和方法2.1基本原理2.2 技术选型和方法 3 实例分割4 实现效果5 最后 # 1 前言 🚩 深度学习人体语义分割在弹幕防遮挡上的应用 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分工作量:3分…

ChatGPT在教育领域的应用:改变学习方式的前沿技术

🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~&#x1f33…

Flutter Add to App 问题记录

前一阵应用中接入了Flutter,使用的是官方的Multiple FlutterEngine管理方案,目前线上运行良好,这里整理一下遇到的问题。 将 Flutter 集成到现有应用整体来说没有什么问题,按照文档的说明结合demo操作就行。接入后多语言&#xf…

【应用层】Http协议总结

文章目录 一、续->Http协议的学习 1.http请求中的get方法和post方法 2.http的状态码 3.http的报头 4.长链接 5.cookie(会话保持)总结 继续上一篇的内容: 上一篇的最后我们讲到了web根目录,知道…

Git的.gitignore文件、标签管理以及给命令起别名

文章目录 1. 前言2. .gitignore文件3. 标签管理4. 给命令起别名 1. 前言 本文主要讲解Git中容易被忽略但比较重要一些知识:.gitignore文件、标签管理以及给命令起别名. 2. .gitignore文件 在新建仓库时,有一个添加.gitignore 模板: .gitignore 是一个用于指定 Git 忽略特定文…

Mysql第四,五连弹

第四弹 一、💛 主键约束(Primary key): 通过这个约束来指定某一个列作为主键(1.非空,2.不能重复) ,主键:一条数据,身份标识(类似于内存地址) 😄&a…

Python爬虫Scrapy(二)_入门案例

入门案例 学习目标 创建一个Scrapy项目定义提取的结构化数据(Item)编写爬取网站的Spider并提取出结构化数据(Item)编写Item Pipelines来存储提取到的Item(即结构化数据) 一、新建项目(scrapy startproject) 在开始爬取之前,必须创建一个新的Scrapy项目。进入自定…

计算机毕设 深度学习人体跌倒检测 -yolo 机器视觉 opencv python

文章目录 0 前言1.前言2.实现效果3.相关技术原理3.1卷积神经网络3.1YOLOV5简介3.2 YOLOv5s 模型算法流程和原理4.数据集处理3.1 数据标注简介3.2 数据保存 5.模型训练 6 最后 0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题…

[Round#14 Illuminate with your bril]

周末NSS的PWN专题,只作了3个,结束后跟NSS的师傅聊,对方确认了第4题的作法,重作成功。第5题看师傅的WP复现成功。 love 主函数给了个printf,这里可以得到所有地址,并且要求把v4,v5改相等 int __cdecl mai…

Linux 版本的 Abyss Locker 勒索软件针对 VMware ESXi 服务器

Abyss Locker 是最新开发的 Linux 加密器,旨在针对 VMware 的 ESXi 虚拟机平台对企业进行攻击。 随着企业从单个服务器转向虚拟机以实现更好的资源管理、性能和灾难恢复,勒索软件团伙创建了专注于针对该平台的加密器。 随着 VMware ESXi 成为最流行的虚…

UE5 摄像机与NPC重叠阻挡导致视角闪现的解决方法

文章目录 前言问题背景问题剖析摄像机碰撞分析解决方法总结前言 本文基于虚幻5.2.1版本,对摄像机与NPC重叠阻挡导致视角闪现提供一个解决方案,并深入讲解摄像机碰撞原理,提升大家的思维与解决问题的能力。 问题背景 当我们被NPC攻击或者NPC介于摄像机与玩家之间导致摄像机…

小研究 - JVM GC 对 IMS HSS 延迟分析(二)

用户归属服务器(IMS HSS)是下一代通信网(NGN)核心网络 IP 多媒体子系统(IMS)中的主要用户数据库。IMS HSS 中存储用户的配置文件,可执行用户的身份验证和授权,并提供对呼叫控制服务器…

微服务入门---Docker

微服务入门---Docker 1.初识Docker1.1.什么是Docker1.1.1.应用部署的环境问题1.1.2.Docker解决依赖兼容问题1.1.3.Docker解决操作系统环境差异1.1.4.小结 1.2.Docker和虚拟机的区别1.3.Docker架构1.3.1.镜像和容器1.3.2.DockerHub1.3.3.Docker架构1.3.4.小结 1.4.安装Docker 2.…

Flutter环境搭建踩坑集锦

Flutter 背景准备工作先检查一下自己的电脑,看一下是不是满足配置要求下载安装配置环境下载安装JDK下载安装Android studio下载Flutterflutter doctor故障Android license status unknownNetwork resources 故障 后记 背景 发现一个不错的框架Flutter,听…

web题型

0X01 命令执行 漏洞原理 没有对用户输入的内容进行一定过滤直接传给shell_exec、system一类函数执行 看一个具体例子 cmd1|cmd2:无论cmd1是否执行成功,cmd2将被执行 cmd1;cmd2:无论cmd1是否执行成功,cmd2将被执行 cmd1&cmd2:无论cmd1是否执行成…

【C++继承】

目录 一、继承的概念及定义1.1继承的概念1.2继承的定义1.2.1定义格式1.2.2继承方式与访问限定符的组合 二、基类和派生类对象赋值转换三、继承中的作用域四、派生类的默认成员函数五、继承与友元六、继承与静态成员七、复杂的菱形继承及菱形虚拟继承八、虚拟继承的原理 一、继承…