当前位置: 首页 > news >正文

# dbt source dbt source freshness命令详解

数据转换是现代数据分析的支柱,dbt已经成为这个领域的关键角色。dbt source 命令是dbt命令体系中重要的一个,它让用户无缝管理原始数据表引用。本文深入讲解该命令的详细用法,确保你能力利用其完整潜能。

dbt source 概述

DBT source 表示数据仓库中的原始数据表,是DBT转换的基础数据源。dbt source不是直接引用这些表,而是提供了一种抽象,增强了可维护性和清晰度。通过将表声明为源,可以将其标记为转换的可信基础,从而启用数据新鲜度检查等功能。在业务上下文中,源可以表示原始销售数据、客户交易数据或库存数据。

dbt source 命令设计用于管理基础数据源,它的主要子命令 dbt source freshness ,可以检查原始数据表的新鲜度,确保数据是最新的、可靠的。

案例实战

在分析系统中,源数据是直接来自业务系统的原始的、未处理的信息。例如,对于家电子商务企业,那么源数据可能是原始销售交易数据、原始客户列表和原始历史库存数据。使用dbt source可以创建对这些表的引用,从而简化转换过程。

下面介绍如何使用 dbt source freshness 命令,首先需要增加 loaded_at_field 字段至 sources.yaml 文件。下面示例来自源数据的两张表:subscriptions 和 customers ,两者都有字段 _synced_at ,表示数据同步时间。设置数据新鲜度警告条件:超过2天警告;报错条件;超过7天报错。

sources:- name: rawdatabase: analytics_dbschema: raw freshness:warn_after: {count: 2, period: day}error_after: {count: 7, period: day}loaded_at_field: _synced_attables:- name: subscriptions- name: customers

简要解释:

  • schema 可选,如果没有配置则为name的值,表示来自哪个schema
  • database表示数据仓库,和 profiles 中的数据库对应
  • sources.yaml 可以配置多个,通常每个模块主题可以共用source配置
  • loaded_at_field 字段指定

新鲜度检查

假如你想确保你的销售数据是最新的,至少每天要检查一次;可以使用下面命令:

dbt source freshness

如果任何源表没有按照指定的新鲜度配置更新,dbt将引发警告或错误。在上面的例子中,如果数据是3天前的,我们将得到一个警告,因为warn_after阈值被设置为2天。

配置新鲜度输出

缺省情况下,新鲜度信息保存在 target/sources.json文件中,可以通过下面命令选项进行自定义:

dbt source freshness --output target/my_custom_path.json

dbt source 高级用法Refactor your way to Success: A practical guide to dbt Core code Optimization

As all Data Engineers know, sometimes you need to move fast and get things done quickly. While this “quick and dirty” approach might be…

如果仅想检查特定表的新鲜度,可以使用 --select --exclude 选项。下面命令仅检查 raw.customers 表的新鲜度:

dbt source freshness --select source:raw.customers

理解数据血缘关系

要理解业务,首先知道数据来自那里至关重要。使用 {{ source() }} 宏函数,可以定义血缘关系。下面示例引用raw.customers表:

select customer_id, customer_name, created_at
from {{ source('raw', 'customers') }}

大多数情况下,在staging模型中从每个源表中选择业务需要的字段,因此每个源都有自己的staging模型文件。这样就可以从原表中选择需要的字段,并统一在staging模型中处理重命名或转换数据等非业务性转换逻辑。

通常dbt模型遵循数仓理念,采用分层方式组织。source 表示贴源数据; stage 表示暂存区,处理格式转换、命名规范等非业务逻辑;dw 层定义分析模型,如维度模型,包括事实表、维度表、公共维度表等。mart层面向应用提供数据,通常为整合汇总的数据,如宽表,支持业务查询、OLAP、数据分发等场景。

测试源

为了确保数据质量,我们可以源配置文件中定义测试。举例,为了确保每个客户有不重复的编号:

version: 2sources:- name: stripetables:- name: customerstests:- unique:column_name: customer_id

使用dbt source 价值

  • 数据一致性: 确保你的分析是基于可靠的、一致的数据
  • 开发效率: 通过引用标准化数据避免重写转换逻辑
  • 新鲜度监控: 确保您的业务决策是基于最新的数据

最佳实践

  • 保持更新: 源数据可能会更改。定期运行dbt源新鲜度,避免数据更新中断。
  • 定期检查: 定时执行新鲜度命令,保证数据质量,质量检查可以提前暴露问题。

总结

DBT sources 是DBT库中的一个强大工具,特别是在对业务数据的及时性和准确性有要求的场景中。通过掌握dbt源新鲜度命令并正确设置源,可以确保为分析项目奠定坚实的基础。期待您的真诚反馈,更多内容请阅读数据分析工程专栏。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【Linux 20】线程控制
  • IP包头分析
  • tomcat服务器
  • 关于支持向量机的一份介绍
  • Ubuntu 20.04安装pycharm2022及配置快捷方式
  • 09 Shell Scriptfor循环结构语句
  • 【乐企-业务篇】OFD对应xml实体对象定义
  • uniapp快速入门教程,内容来源于官方文档,仅仅记录快速入门需要了解到的知识点
  • 分苹果 - 华为OD统一考试(E卷)
  • Flask 第十二课 -- 错误处理
  • 末端回路漏电监测仪为何不可或缺?
  • Qt窗口——QDockWidget
  • git reflog
  • 【Linux】yum、vim、gcc使用(超详细)
  • Go语言grequests库并发请求的实战案例
  • Android系统模拟器绘制实现概述
  • Angular 2 DI - IoC DI - 1
  • AWS实战 - 利用IAM对S3做访问控制
  • CentOS 7 修改主机名
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • JAVA_NIO系列——Channel和Buffer详解
  • java多线程
  • Linux CTF 逆向入门
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • PHP CLI应用的调试原理
  • python docx文档转html页面
  • Sublime Text 2/3 绑定Eclipse快捷键
  • Vue全家桶实现一个Web App
  • 从伪并行的 Python 多线程说起
  • 翻译--Thinking in React
  • 汉诺塔算法
  • 设计模式(12)迭代器模式(讲解+应用)
  • 听说你叫Java(二)–Servlet请求
  • 问题之ssh中Host key verification failed的解决
  • 新手搭建网站的主要流程
  • 一文看透浏览器架构
  • 在Unity中实现一个简单的消息管理器
  • 阿里云移动端播放器高级功能介绍
  • #FPGA(基础知识)
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • $.ajax()参数及用法
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (C++二叉树05) 合并二叉树 二叉搜索树中的搜索 验证二叉搜索树
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (转)我也是一只IT小小鸟
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)
  • .aanva
  • .Mobi域名介绍
  • .NET : 在VS2008中计算代码度量值
  • .NET序列化 serializable,反序列化
  • /tmp目录下出现system-private文件夹解决方法