辽宁鞍山网站建设公司,深圳住建网站,找网络公司做网站需要注意什么,宁波网络推广联系方式一、引
在前面的几篇文章中#xff0c;我们从 dbt core 聊到了 dbt 项目工程化#xff0c;我相信前几篇文章足够各位数据开发师从零快速入门 dbt 开发#xff0c;那么到现在我们更迫切需要解决的是如何让数据更新做到定时化#xff0c;毕竟作为开发我们肯定没有经历每天定…
一、引
在前面的几篇文章中我们从 dbt core 聊到了 dbt 项目工程化我相信前几篇文章足够各位数据开发师从零快速入门 dbt 开发那么到现在我们更迫切需要解决的是如何让数据更新做到定时化毕竟作为开发我们肯定没有经历每天定点去手动运行 dbt 命令那么今天我们将带领大家快速上手 dbt cloud通过云平台的环境以及定时任务的配置做到全自动化通过本文你将了解到如下几个知识点
dbt cloud 集成dbt cloud IDEdbt could 环境配置dbt could 定时器dbt could 通知集成
需要注意的是了解 dbt cloud 的前提我还是建议对于 dbt core 需要有一定认知否则对于本文中的一些特定配置你可能不是特别理解如果有时间建议阅读之前的文章那么让我们直接开始。
二、什么是 dbt cloud
我们在第一篇文章介绍 dbt core 时顺带提了一句 dbt cloud简单来理解dbt core 是 dbt 的基础它提供你本地 dbt 项目开发的一切比如你要使用的 dbt 命令构建过程中 sql 的编译对于数据平台的链接通信以及抹平不同平台差异等等而这一切仅限于你在本地项目写 model 以及构建你需要的数据模型。
而 dbt cloud 很重要的一点是能在云端集成你本地的 dbt 项目它能做到与你本地项目的互联你能在云平台提供的浏览器版本编辑器中切分支写代码以及测试 model也能与你托管的仓库比如 GitHub集成通过自动化任务配置做到定时代码自动更新以及自动化更新你的 model是不是非常棒。
更重要的是dbt cloud 免费的开发版本虽然只有一个席位但开发版本提供的权益完全满足你对于自动化的述求所以说 dbt cloud 一定会成为数据更新中非常重要的一环。
三、dbt cloud 集成
3.1 新建 dbt cloud 项目
dbt cloud 集成主要分为两个部分第一是获得数据平台比如 bigquery的授权试想一下当我们在 dbt cloud 上配置了定时器任务到点后 dbt 像一个虚拟的开发一样帮我们更新 dbt modle 以及把 model 结果写入目标数据平台很明显我们也需要让这个虚拟开发获得跟我们相同的数据访问 写入权限也就是 GCP 。第二部分是集成 GitHub也可以是 gitlab 上你的 dbt 项目这点我们后面再说。
不知道你是否还记得我在 dbt core 第一篇文章中介绍了如何让本地项目获得访问远端数据库权限时介绍了一种使用本地 JSON 文件授权的办法如果你之前也是通过这种方式那么在等会的授权集成中你可以直接上传这份 JSON如果你之前没有以 bigquery 为例建议先生成一份这样的权限文件bigquery 授权可跳转 Create credentials。 做好这些准备你需要在 dbt 网站创建一个账号然后来到新建项目如下在这里你可以先输入你喜欢的项目名称以及需要链接的数据平台没关系这个配置在后续后可以编辑。 最终的部分来了让我们聚焦 Configure your environment需要注意的是这里默认配置的是开发环境而 dbt cloud 默认只支持拥有一个开发环境在后续我会介绍如何创建生产环境。
上图中的 Connection name 我们保持默认就好然后可以看到一个上传授权 JSON 文件的按钮当你点击上传你会发现 setting 部分所有的输入会自动填充所以点击上传前文提到的授权文件即可。
Optional Settings是可选设置这里我们直接跳过来到底部 Development credentials这里非常重要让我详细说明一下。
还记得之前文章中对于 dbt 工程化我们特别指出了 dbt 支持 dataset schema 配置做到不同开发环境将数据写入到不同数据集的目的如果你希望 dbt cloud 也达到相同的效果在这里你需要将 dataset 配置成与 dbt 项目中 profiles 中相同的字段。 OK现在让我们点击 test connection 按钮如果显示链接成功那么恭喜你最重要的一步配置已经完成了你也拥有了属于自己的 dbt cloud 项目。
3.2 关联 GitHub
dbt cloud 虽然创建好了但此时你并未将其与你的 dbt 项目关联起来毕竟我们做定时任务本质还是希望帮我们运行自己的 dbt 项目。让我们点击 dbt 网站右上角的设置按钮找到 Linked accounts可以看到 dbt cloud 支持 GitHub gitlab 仓库托管项目集成让我们点击 GitHub link 获取 GitHub 授权 之后展开集成点击配置并选择你需要关联的项目点击保存即可。 那么到这里我们对于 dbt cloud 集成相关的工作已经做好了接下来让我们介绍 dbt cloud IDE 。
四 dbt cloud IDE
点击 dbt cloud 左上角的 cloud IDE 即可进入云平台编辑器在这里你可以看到跟你本地编辑器完全相同的界面。 IDE 主要分为四个区域这里我通过数字编号简单解释
分支管理区域由于我们集成了 GitHub因此在 IDE 也能通过 pull 拉取远端代码以及分支创建等常见的分支管理策略。代码目录区域这里的代码目录结构将与你本地项目完全一致你也能在这直接新建目录以及代码文件在修改完成通过 push 到GitHub仓库再反向更新你本地的项目。编辑区域这里就是标准的代码编辑区域你能在 IDE 上与你本地编辑器一样做需求开发。cloud IDE 工具区域在这里你能看到每个 model 的可视化依赖关系以及 model 运行以及结果测试。
由于 IDE 使用比较简单而我本人还是习惯在本地做项目开发更多是将 dbt cloud 作为自动化工具因此 IDE 部分就不过多介绍详细文档可见 dbt cloud IDE 部分。
那么接下来让我们聚焦于自动化配置部分让我们先从环境配置开始。
五、dbt cloud 环境配置
为什么要介绍环境配置呢因为 dbt cloud 的自动化任务的载体就是环境后续所有的自动化任务都是在某个环境中创建毕竟任务总得区分环境以及知道要基于哪个分支拉取代码等等。
5.1 关于 dev 环境
前文已经提到dbt cloud 默认已经为你创建了一个 dev 环境而且你至多只能拥有这一个 dev 环境如果你喜欢在 cloud IDE 做项目开发那么 dev 环境你还是需要做少许配置。 让我们进入 dev 环境配置在这里你可以设置默认的项目分支因为我们提到 IDE 也能自动同步 GitHub 代码那么这里的默认分支就是告诉 IDE 默认拉取哪个分支的代码其次让我们把目光看到 profile page点击此配置你可以看到在我们创建第一个 dbt cloud 项目时关于继承 bigquery 的相关配置所以前文也说 如果你需要后续再修改那么可以在这里进行修改比如你希望修改 dev 模式下 Dataset 的字段。
5.2 关于 production 环境
现在让我们直接创建属于自己的 production 环境由于与 dev 配置选项大体相同这里我就不再截图展示了你需要将 Custom branch 设置为你希望的 GitHub 主分支比如你是 main 就设置为 mian是 master 就设置 master后面当自动化脚本运行时所做的第一件事就是基于你在这配置的分支名做代码领取再基于这个分支的 model 做更新。
其次关于 Dataset 我们也介绍了如果你有做项目工程化配置需要做 model 写入的数据集区分这里你需要将 Dataset 设置成与你 profiles 中完全相同的字段。
六、dbt cloud jobs
dbt cloud jobs 支持两种任务第一种是定时部署任务比如你希望每天的什么时间段帮你执行第二种就是 PR 任务比如你希望 GitHub 仓库产生新的 PR 合并时自动更新 model 时这里我们介绍定时任务。
点击新建选择部署任务既可以看到任务创建界面这里解释下关键的配置 Job name任务名称取一个对任务具有解释意义的名称会更好 Description可选任务的描述。 Environment任务执行所对应的环境需要注意的是我们无法为 dev 环境配置任务这里选择刚才新建的生产环境。 Commands任务被执行时你希望执行的 dbt 命令比如我就希望更新整个项目那在这里定义 dbt run即可如果你需要执行多条命令这里也支持新建多条命令。 schedule定时器它决定了任务执行的时机比如我希望的是每天的某个时间或者每个月的某一天这里可以选择 cron schedule需要注意的是这里配置的时区均为 UTC 时区。比如我希望 UTC 时区的每天0点0分执行那么配置 0 0 * * *即可再比如我希望任务在每个月的一号的 UTC 2点执行那么配置 0 2 1 * *即可大致规则如下 0 * * * *: Every hour, at minute 0*/5 * * * *: Every 5 minutes5 4 * * *: At exactly 4:05 AM UTC30 */4 * * *: At minute 30 past every 4th hour (e.g. 4:30AM, 8:30AM, 12:30PM, etc., all UTC)0 0 */2 * *: At midnight UTC every other day0 0 * * 1: At midnight UTC every Monday. 更详细的说明可见官网文档。
到这里你就配置了属于自己的第一个自动化任务是不是非常简单。
七、dbt cloud 通知
事实上自动化任务会根据你的配置准时准点运行但可能因为你项目的问题或者 model 编写问题导致执行失败此时你一定希望自动化任务在运行之后给你发起一次通知那么 dbt cloud 提供了邮件以及 slack 两种通知方式。
点击 dbt 网站右上角的设置中心选择通知设置我们可以先来到 Linked accounts 先为 slack 做授权之后来到 Slack notifications如下图
在这里你需要先选择需要通知的 slack 频道然后在下方表格中为你配置的 jobs 的不同状态做选择比如这里我勾选了我配置的三个任务的所有状态通知后续只要任何一个任务运行成功我所对应的频道就能收到执行结果的通知。 假设执行失败你能通过通知的链接直接跳转到任务执行详情查看执行过程中的所有信息比如导致失败的错误信息等等。
而关于邮件通知由于比较简单这里我就不过多介绍了采用哪种通知方式看大家喜好。
那么到这里dbt cloud 的介绍就全部完成了其实 dbt cloud 的能力远不止如此但如果要全部展开本文篇幅就过长了而本文的初衷也只是希望带大家快速上手先跑起来并在使用过程中为自己解疑答惑。而关于本文中内容若有疑问也欢迎留言那么到这里本文结束。