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

SQLMesh 表格对比指南:深入理解 table_diff 工具的实际应用

在数据集成和转换过程中,确保数据模型的一致性和准确性至关重要。SQLMesh 提供了一个强大的 table_diff 工具,可以帮助用户比较 SQLMesh 模型或数据库表/视图的架构和数据。本文将通过具体示例详细说明如何使用 table_diff 工具进行跨环境比较和直接比较。
在这里插入图片描述

跨环境比较模型

假设我们有一个名为 sqlmesh_example 的 SQLMesh 项目,其中包含一个增量模型 incremental_model。我们在开发环境中对这个模型进行了修改,但在生产环境中尚未应用这些更改。

步骤 1:修改模型

在开发环境中,我们对 incremental_model 进行了以下修改:

  1. 使用 CASE WHEN 语句将 item_id 为 3 的行改为 4。
  2. 添加 WHERE 子句以移除 item_id 为 1 的行。

步骤 2:应用更改

在开发环境中运行计划并应用更改:

sqlmesh plan dev

步骤 3:比较模型

现在,我们使用 table_diff 工具比较生产环境和开发环境中的模型:

sqlmesh table_diff prod:dev sqlmesh_example.incremental_model

输出解释

输出将显示以下信息:

  • 架构对比:确认生产环境和开发环境的架构是否一致。如果没有字段被添加、删除或数据类型发生变化,输出将显示“Schemas match”。

  • 行计数:显示成功连接的行数以及仅存在于生产环境或开发环境中的行数。例如:

    Row Counts: COMMON: 6 rows, PROD ONLY: 1 row, DEV ONLY: 0 rows
    

    这表明有 6 行在两个环境中都存在,而 item_id 为 1 的行仅存在于生产环境中。

  • 列比较统计:显示连接行的列值匹配百分比。例如:

    COMMON ROWS column comparison stats: pct_match item_id 83.3%
    

    这表明 item_id 列中有 83.3% 的匹配率,意味着有 5 行的值未变,而第 6 行的值从 3 改为 4。

使用 --show-sample 选项

为了查看具体的数据差异,我们可以使用 --show-sample 选项:

sqlmesh table_diff prod:dev sqlmesh_example.incremental_model --show-sample

输出将包括以下信息:

  • 列比较样本数据差异:显示连接行的具体数据差异。例如:

    COMMON ROWS sample data differences:
    All joined rows match
    PROD ONLY sample rows:
    id event_date item_id
    1 2020-01-01 2
    

    这表明 item_id 为 3 的行在生产环境中存在,但在开发环境中已被移除。

直接比较表或视图

假设我们想直接比较数据库中的两个表或视图,而不是通过环境比较模型。

步骤 1:准备表

在数据库中,我们有以下两个表:

  • sqlmesh_example.incremental_model(生产环境)
  • sqlmesh_example__dev.incremental_model(开发环境)

步骤 2:比较表

使用 table_diff 工具直接比较这两个表:

sqlmesh table_diff sqlmesh_example.incremental_model:sqlmesh_example__dev.incremental_model -o id -o event_date --show-sample

输出解释

输出将显示以下信息:

  • 架构对比:确认两个表的架构是否一致。如果没有字段被添加、删除或数据类型发生变化,输出将显示“Schemas match”。

  • 行计数:显示成功连接的行数。例如:

    Row Counts: FULL MATCH: 6 rows (92.31%)
    

    这表明有 6 行在两个表中都存在。

  • 列比较统计:显示连接行的列值匹配百分比。例如:

    COMMON ROWS column comparison stats: pct_match item_id 100.0%
    

    这表明所有连接行的 item_id 值都匹配。

  • 列比较样本数据差异:显示连接行的具体数据差异。例如:

    COMMON ROWS sample data differences:
    All joined rows match
    

    这表明所有连接行的数据都匹配。

通过这些示例,读者可以更好地理解如何使用 SQLMesh 的 table_diff 工具来比较数据对象的结构和数据。希望本文能帮助你更有效地使用这一功能!

相关文章:

  • 每日两道leetcode(补充一)
  • 【FreeRTOS】事件标志组
  • 58、微服务保姆教程(一)
  • 第十一天 主菜单/设置界面 过场动画(Timeline) 成就系统(Steam/本地) 多语言支持
  • HTML 模板技术与服务端渲染
  • 2022李宏毅老师机器学习课程笔记
  • 【尚硅谷Redis6】自用学习笔记
  • 【C++游戏引擎开发】第25篇:方差阴影贴图(VSM,Variance Shadow Maps)
  • 使用Python脚本在Mac上彻底清除Chrome浏览历史:开发实战与隐私保护指南
  • chrome://inspect/#devices 调试 HTTP/1.1 404 Not Found 如何解决
  • 伊克罗德信息亮相亚马逊云科技合作伙伴峰会,以ECRobot 智能云迁移助手在GenAI Tech Game比赛勇夺金牌!
  • 【文献阅读】建立高可信度的阴性样本,改进化合物-蛋白质相互作用预测
  • CSS常遇到自适应高度动画、带三角气泡阴影一行样式解决
  • 论文阅读:2024 NeurIPS Group Robust Preference Optimization in Reward-free RLHF
  • Jenkins Pipeline 构建 CI/CD 流程
  • Promethues 普罗米修斯
  • 【Linux篇】理解信号:如何通过信号让程序听从操作系统的指令
  • Memcached 主主复制架构搭建与 Keepalived 高可用实现
  • 9.ArkUI List的介绍和使用
  • MCP认证考试技术难题实战破解:从IP冲突到PowerShell命令的深度指南
  • 俄军方:已完成库尔斯克地区全面控制行动
  • “十四五”以来少数民族发展资金累计下达边疆省区252亿元
  • 玉渊谭天丨“稀土管制让美国慌了”,美军工稀土储备仅够数月
  • 安徽一交通事故责任认定引质疑:民警和司法鉴定人被处罚,已中止诉讼
  • 国家市监总局:民生无小事,严打民生领域侵权假冒违法行为
  • 中国经济“第一省会”广州,从传统商贸中心到直播电商第一城