【dbt】数据加工大师浅谈
dbt
是 dbt labs 公司在2016年推出的一款基于 Python 的开源数据加工工具。从2019年开始,dbt
的用户数量增涨十分迅速。dbt labs 凭借此工具,在2022年估值达到了 42 亿美金。
dbt
的价值
dbt
是面向分析工程师提供服务。【分析工程师】是dbt
新定义的岗位,是基于 DataOps 思想,综合了数据工程师和数据分析师两者。即分析师也应该会代码开发(实际上,现在很多的数据分析师就是在做sql
开发的活)。- 数据应该先被加载到数据仓库,再做转换
传统的ETL
工作流,T
转换的工作在中间,由数据工程师完成。要求数据工程师对业务和数据加工逻辑要非常了解才行。但实际工作要达到这点很难,目前国际上的数仓项目,普遍都只能达到20%的预计目标,近几年数据湖才越来越流行。新的思想是EL-T
,即T
转换放在最后,由分析师来完成。在此思想下,Fivetran,Airbytes之类的工具才越来载流行。 - 分析师缺少有效的工具管理他们的工作
dbt
就是这样的工具,而且在此领域,dbt
是唯一的产品,没有竞争对手。2019年,Fivetran
宣布放弃集成SQL
,开始集成dbt
,2021年彻底抛弃SQL
,由此可以看出dbt
的魅力。
dbt
的特性
- 开源免费:
dbt
有两个产品,dbt-core
是开源免费的,需要安装才可以使用。dbt-cloud
是付费的云服务。 - 所有操作都会编译成
SQL
语句,下推到数据库完成,自身不存储数据。自从数据安全法开始推出后,所有 etl 工具都会面临安全要求。dbt
的此特性成了优势。 - 提供版本管理、配置继承、包、宏等功能点,可以很好地支持团队数据开发。这是
DataOps
的核心思想,即Data as Code
。 - 提供
test
数据质量测试功能,也是dbt
的核心思想。由于数据在源源不断的产生,数据交付是一个长期的过程。在以往的数据交付,缺少对数据的测试,只能出了问题再溯源追查,对用户和数据开发者,都是超级痛苦的事情。 - 自动建表
dbt
可以按照写好的模型,自动编译出建表语句。有些大型项目,成百上千的表,建表真是建得想砸电脑了。 - 提供文档功能
这个真的很赞,以往的项目,建模->建表->ETL开发->测试->交付文档,一个小变更就要改一堆东西。别和我说PowerDesigner
可以自动生成,不准的,特别是在多人协作的时候,合并pdm
文件真是个苦力活。dbt
的维护,真得轻松。 - YAML配置和命令行操作
搞过ETL
开发的数据工程师,没几个喜欢拖拉拽的图形化操作。还是命令行操作更方便。yaml
文件配置也很好搞,很多机械化的操作,都可以用代码批量做了。
dbt
的缺点
- 支持的数据库有限
官方适配器支持的数据库很少,好在还有社区适配器,不然连clickhouse
,vertica
之类的都不支持。惨的是,国内的云平台MaxComputer
等不在支持范围内。dbt
官方网档:Supported data platforms - 不能跨数据库读写
读取和写入的数据库,只能是同一个。这个估计官方是不会改了,好在schema
可以通过加后缀的方式,实现跨schema
读写,不然得疯。 - 版本更新慢
Postgres
的版本都到15了,dbt-postgres
还只能支持14,唉。免费的,只能将就了。 - 对
Python
的支持
一言难尽了,虽然dbt
是基于Python
开发的,但只在BigQuery
等个别平台中,才可以使用Python
模型。现在很多ETL
工具,如Kettle
Talend
Alteryx
等,都支持Python
R
Java
JavaScript
扩展。dbt
的这方面,实在没法尬吹了,只能寄望未来了。
综合以上,在实际部署dbt
的时候,还是需要多测试一下,确保版本、适合器、功能都满足需要才成。另外,在 dbt
官网 没有找到关于集群的说明,虽然 dbt
的工作模式是下推给数据库执行,但海量数据的处理,我觉得还是存疑的。
但只是分析师小规模使用的话,dbt
还是蛮爽的。
安装 dbt
dbt
有两个产品,dbt-cloud
是付费的云端产品,不用安装。通常说的 dbt
,是指 dbt-core
,开源免费的。可以使用 pip
安装,也可以使用 docker
镜像。这里,咱们只说 pip
安装。
从不知道哪个版本开始,dbt
拆分成了以下三个部分,需要分别安装:
dbt-core
,dbt
的核心文件。dbt-<adapter>
,目标数据库的适配器,用哪个就装哪个。dbt-utils
,扩展包,提供了很多非常有用的扩展功能,比如查询字段名等等。
安装过程
以 Windows
环境为例:
- 安装
Python
环境,dbt
是基于Python
,安装方法网上有很多,这里略过了。注意一般不要选择最新版本的Python
,dbt
跟不上的。具体可以上 pypi 搜索一下,看dbt
支持的Python
版本。 - 安装
dbt-core
,执行pip install dbt-core
就好。 - 安装
adpater
,以postgres
为例,执行pip install dbt-postgres
即可,其他适配器,可以在 Supported data platforms 上搜索一下。 - 初始化项目,执行
dbt init project-name
,project_name
是自己的项目名称,按需要填。初始化过程中,需要选择使用的适配器,按照自己的情况选就好。 - 安装
dbt-utils
- 先在项目录下,创建
packages.yml
文件,内容如下:packages:- package: dbt-labs/dbt_utilsversion: 1.1.0
- 在项目目录下,执行
dbt deps
完成安装。
- 先在项目录下,创建
- 在
C:\Users\<UserName>\.dbt/
目录下,找到profiles.yml
,在项目名称项下填写数据库连接信息。其中,dev
下的是开发数据库,prod
是生产环境的数据库,使用target
控制用哪个配置。
【dbt】数据加工大师浅谈相关推荐
- 飞机qar数据可视化_浅谈QAR大数据分析与应用
QAR数据分析指的是用适当的统计分析方法对收集来的QAR数据进行分析,提取有用信息和形成结论而对QAR数据加以详细研究和概括总结的过程.目前航空公司在QAR数据分析与应用上主要有两类问题. 一是典型超 ...
- 6位大师浅谈未来三年大数据的发展
2019独角兽企业重金招聘Python工程师标准>>> 新工具,新视角 维珍传媒(Virgin Media)洞察分析部负责人马克·查普曼(Mark Chapman),(维珍传媒:英国 ...
- 行业观察(一)| 从渠道为王到数据为王——浅谈服装零售企业的数字化转型...
中国服装零售产业在近二十年来走过了极具中国特色的发展历程,站在当前的时间节点上,对如何适应新的形式取得新的突破,行业已经基本形成了共识.那就是融合渠道,全面建立以用户为中心的数字化运营能力. 服装零售 ...
- Adrealm智库专栏:数据之示—浅谈数据主义、区块链与广告
原文题目:Dataism, Blockchain and Advertising: What will the Data Say? 作者简介:Henry Zhang,现任Adrealm中国区市场总监, ...
- 数据可视化:浅谈热力图如何在前端实现
当我们需要用更直观有效的形式来展现各类大数据信息时,热力图无疑是一种很好的方式.作为一种密度图,热力图一般使用具备显著颜色差异的方式来呈现数据效果,热力图中亮色一般代表事件发生频率较高或事物分布密度较 ...
- url采集工具_大数据关键技术浅谈之大数据采集
在前几篇文章中,企通查为大家介绍了大数据处理的基本流程.从大数据的一系列处理过程中(抽取.集成.分析.解释),我们可以发现这一整套流程中涵盖了数据存储.处理.应用等多方面的技术. 大数据价值的完美体现 ...
- socket接收时信号量阻塞了会丢数据吗_浅谈Java网络编程——非阻塞I/O
文件描述符(descriptors) Unix中I/O的基本组成元素是字节序列.大多数程序应用于字节流或I/O流. 进程通过描述符引用I/O流,也被称作文件描述符.管道.文件.POSIX IPC's( ...
- 数据建模_浅谈数据仓库建设中的数据建模方法
所谓水无定势,兵无常法.不同的行业,有不同行业的特点,因此,从业务角度看,其相应的数据模型是千差万别的.目前业界较为主流的是数据仓库厂商主要是 IBM 和 NCR,这两家公司的除了能够提供较为强大的数 ...
- 百度鹰眼轨迹和虎鲸数据平台之浅谈
背景 这段时间一直在研究百度地图的鹰眼轨迹平台,但是还有一个交虎鲸数据平台的东西,也是百度接口提供的,能提供海量数据存储. 那么这两者有什么区别呢? 个人见解 根据百度给出的API接口,我觉得鹰眼轨迹 ...
最新文章
- Java 8学习资料汇总
- MySQL - 共享锁和排它锁初探
- java el表达式 if else_jsp EL表达式和JSTL标签if-else if-else用法
- NC16886 炮兵阵地
- 1143 Lowest Common Ancestor 甲级
- python变量的创建过程(内存地址变化)
- Ios 12 linux,苹果发布iOS 12.4.1,以修补越狱漏洞
- cms系统和管理员系统区别_如何成为懒惰的系统管理员
- 使用pjsip传输已经编码的视频,源码在github
- 190804每日一句
- carrot 2 LingoClusteringAlgorithm , STCClusteringAlgorithm 和 BisectingKMeansClusteringAlgorithm算法比较
- 玩转安卓10源码开发定制(17)编译Windows平台adb和fastboot工具
- Layout-pcb之天线设计
- android matrix 亮度,Android ColorMatrix 亮度矩阵 对比度矩阵 黑白矩阵 -电脑资料
- python 基于onvif协议 修改摄像头分辨率亮度等操作(window版本
- html 内使用复制功能
- 纯干货分享,2021年阿里巴巴社招面试题总结,本人上周已成功入职!
- 20160226.CCPP体系详解(0036天)
- 什么是ASP.NET?
- centos 7安装podman(类似docker)
热门文章
- 面向对象C++奇奇怪怪的知识点总结
- 53岁“聂小凤”携女现身 女儿被赞最美星二代
- 各个大学论坛大全,大学校园美女
- http://s22.app1105796624.qqopenapp.com/
- 告别 NPE,全网最全 Optional 实战理解
- gpio引脚介绍 树莓派3b_树莓派3bgpio引脚介绍
- 量化交易学习:交易数据自动抓取
- 《公民的不服从》---梭罗(1) 英文翻译3
- Eclipse中没有Project Facets怎么办
- 如何使用MinIO 建立阿里云OSS代理