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 的缺点

  • 支持的数据库有限
    官方适配器支持的数据库很少,好在还有社区适配器,不然连 clickhousevertica之类的都不支持。惨的是,国内的云平台 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-coredbt 的核心文件。
  • dbt-<adapter>,目标数据库的适配器,用哪个就装哪个。
  • dbt-utils,扩展包,提供了很多非常有用的扩展功能,比如查询字段名等等。

安装过程

Windows 环境为例:

  1. 安装 Python环境,dbt 是基于 Python,安装方法网上有很多,这里略过了。注意一般不要选择最新版本的 Pythondbt跟不上的。具体可以上 pypi 搜索一下,看 dbt 支持的 Python 版本。
  2. 安装 dbt-core,执行 pip install dbt-core 就好。
  3. 安装 adpater,以 postgres 为例,执行 pip install dbt-postgres 即可,其他适配器,可以在 Supported data platforms 上搜索一下。
  4. 初始化项目,执行 dbt init project-nameproject_name 是自己的项目名称,按需要填。初始化过程中,需要选择使用的适配器,按照自己的情况选就好。
  5. 安装 dbt-utils
    • 先在项目录下,创建 packages.yml 文件,内容如下:

      packages:- package: dbt-labs/dbt_utilsversion: 1.1.0
      
    • 在项目目录下,执行 dbt deps 完成安装。
  6. C:\Users\<UserName>\.dbt/ 目录下,找到 profiles.yml,在项目名称项下填写数据库连接信息。其中,dev 下的是开发数据库, prod 是生产环境的数据库,使用 target 控制用哪个配置。

【dbt】数据加工大师浅谈相关推荐

  1. 飞机qar数据可视化_浅谈QAR大数据分析与应用

    QAR数据分析指的是用适当的统计分析方法对收集来的QAR数据进行分析,提取有用信息和形成结论而对QAR数据加以详细研究和概括总结的过程.目前航空公司在QAR数据分析与应用上主要有两类问题. 一是典型超 ...

  2. 6位大师浅谈未来三年大数据的发展

    2019独角兽企业重金招聘Python工程师标准>>> 新工具,新视角 维珍传媒(Virgin Media)洞察分析部负责人马克·查普曼(Mark Chapman),(维珍传媒:英国 ...

  3. 行业观察(一)| 从渠道为王到数据为王——浅谈服装零售企业的数字化转型...

    中国服装零售产业在近二十年来走过了极具中国特色的发展历程,站在当前的时间节点上,对如何适应新的形式取得新的突破,行业已经基本形成了共识.那就是融合渠道,全面建立以用户为中心的数字化运营能力. 服装零售 ...

  4. Adrealm智库专栏:数据之示—浅谈数据主义、区块链与广告

    原文题目:Dataism, Blockchain and Advertising: What will the Data Say? 作者简介:Henry Zhang,现任Adrealm中国区市场总监, ...

  5. 数据可视化:浅谈热力图如何在前端实现

    当我们需要用更直观有效的形式来展现各类大数据信息时,热力图无疑是一种很好的方式.作为一种密度图,热力图一般使用具备显著颜色差异的方式来呈现数据效果,热力图中亮色一般代表事件发生频率较高或事物分布密度较 ...

  6. url采集工具_大数据关键技术浅谈之大数据采集

    在前几篇文章中,企通查为大家介绍了大数据处理的基本流程.从大数据的一系列处理过程中(抽取.集成.分析.解释),我们可以发现这一整套流程中涵盖了数据存储.处理.应用等多方面的技术. 大数据价值的完美体现 ...

  7. socket接收时信号量阻塞了会丢数据吗_浅谈Java网络编程——非阻塞I/O

    文件描述符(descriptors) Unix中I/O的基本组成元素是字节序列.大多数程序应用于字节流或I/O流. 进程通过描述符引用I/O流,也被称作文件描述符.管道.文件.POSIX IPC's( ...

  8. 数据建模_浅谈数据仓库建设中的数据建模方法

    所谓水无定势,兵无常法.不同的行业,有不同行业的特点,因此,从业务角度看,其相应的数据模型是千差万别的.目前业界较为主流的是数据仓库厂商主要是 IBM 和 NCR,这两家公司的除了能够提供较为强大的数 ...

  9. 百度鹰眼轨迹和虎鲸数据平台之浅谈

    背景 这段时间一直在研究百度地图的鹰眼轨迹平台,但是还有一个交虎鲸数据平台的东西,也是百度接口提供的,能提供海量数据存储. 那么这两者有什么区别呢? 个人见解 根据百度给出的API接口,我觉得鹰眼轨迹 ...

最新文章

  1. Java 8学习资料汇总
  2. MySQL - 共享锁和排它锁初探
  3. java el表达式 if else_jsp EL表达式和JSTL标签if-else if-else用法
  4. NC16886 炮兵阵地
  5. 1143 Lowest Common Ancestor 甲级
  6. python变量的创建过程(内存地址变化)
  7. Ios 12 linux,苹果发布iOS 12.4.1,以修补越狱漏洞
  8. cms系统和管理员系统区别_如何成为懒惰的系统管理员
  9. 使用pjsip传输已经编码的视频,源码在github
  10. 190804每日一句
  11. carrot 2 LingoClusteringAlgorithm , STCClusteringAlgorithm 和 BisectingKMeansClusteringAlgorithm算法比较
  12. 玩转安卓10源码开发定制(17)编译Windows平台adb和fastboot工具
  13. Layout-pcb之天线设计
  14. android matrix 亮度,Android ColorMatrix 亮度矩阵 对比度矩阵 黑白矩阵 -电脑资料
  15. python 基于onvif协议 修改摄像头分辨率亮度等操作(window版本
  16. html 内使用复制功能
  17. 纯干货分享,2021年阿里巴巴社招面试题总结,本人上周已成功入职!
  18. 20160226.CCPP体系详解(0036天)
  19. 什么是ASP.NET?
  20. centos 7安装podman(类似docker)

热门文章

  1. 面向对象C++奇奇怪怪的知识点总结
  2. 53岁“聂小凤”携女现身 女儿被赞最美星二代
  3. 各个大学论坛大全,大学校园美女
  4. http://s22.app1105796624.qqopenapp.com/
  5. 告别 NPE,全网最全 Optional 实战理解
  6. gpio引脚介绍 树莓派3b_树莓派3bgpio引脚介绍
  7. 量化交易学习:交易数据自动抓取
  8. 《公民的不服从》---梭罗(1) 英文翻译3
  9. Eclipse中没有Project Facets怎么办
  10. 如何使用MinIO 建立阿里云OSS代理