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

SQLMesh CLI 实战教程: 构建和维护数据转换管道的快速指南

在数据工程领域,构建和维护数据转换管道是一项复杂而关键的任务。SQLMesh 是一个强大的工具,可以帮助你简化这一过程。本文将带你快速了解如何使用 SQLMesh CLI 来构建和维护数据转换管道。本文的目标是在 30 分钟或更短的时间内,让你熟悉 SQLMesh 的大部分工作流程。我们将通过实际操作来展示如何使用 SQLMesh CLI 进行模型更改、测试和部署。

开发工作流

在这里插入图片描述

模型更改

首先,你需要在 SQL 和 Python 文件中直接对模型进行更改。这些文件通常会预先准备好。更改完成后,你需要在开发环境中计划这些更改。

sqlmesh plan dev

应用更改

在开发环境中应用更改时,只需在提示符下输入 y 即可。

审计更改

审计步骤会在应用更改到开发环境时自动执行,用于测试数据质量。

预览、应用和审计更改

你可以使用以下命令快速预览、应用和审计更改:

sqlmesh plan dev --auto-apply

示例输出

当你对 incremental_modelfull_model 做出破坏性更改时,SQLMesh 会显示受影响的模型、将要进行的更改以及需要回填的模型。

> sqlmesh plan dev

数据差异对比

在将更改应用到生产环境之前,运行数据差异对比是一个好习惯。这可以验证更改是否按预期工作。

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

示例输出

SQLMesh 会显示环境之间的模式差异、行数差异以及样本数据差异。

将更改应用到生产环境

在对更改充满信心后,可以将它们应用到生产环境。建议使用 CI/CD 进行自动化部署,但也可以手动应用更改。

sqlmesh plan prod

示例输出

SQLMesh 会显示受影响的模型、将要进行的更改,并更新虚拟层以反映更改。

增强的测试工作流

为了确保更改按预期工作,可以使用以下命令进行增强测试:

创建和审计外部模型

有时模型会从 SQLMesh 控制范围之外的表/视图中选择数据。SQLMesh 可以自动解析这些模型的完全限定名称并确定其完整模式和列数据类型。

sqlmesh create_external_models tcloud

自动生成单元测试

你可以为模型自动生成单元测试,以确保业务逻辑按预期工作。

sqlmesh create_test sqlmesh_example.full_model --query sqlmesh_example.incremental_model "select * from sqlmesh_example.incremental_model limit 5"

执行即席查询

你可以直接从 CLI 中运行实时查询,以验证更改的外观和感觉。

sqlmesh fetchdf "select * from sqlmesh_example__dev.full_model limit 5"

代码检查

启用代码检查可以在开发过程中自动运行,以捕获已知的 SQL 问题。

config.yaml
gateways:duckdb:connection:type: duckdbdatabase: db.dbmodel_defaults:dialect: duckdblinter:enabled: truerules:- ambiguousorinvalidcolumn- invalidselectstarexpansionwarn_rules:- noselectstar- nomissingaudits

调试工作流

如果需要验证更改是否按预期工作,可以使用以下命令进行调试:

渲染 SQL 更改

渲染模型以验证 SQL 是否符合预期。

sqlmesh render sqlmesh_example.incremental_model

在详细模式下应用计划更改

详细模式可以让你看到物理和虚拟层的详细操作。

sqlmesh plan dev -vv

查看日志

每次执行 SQLMesh 命令时,它都会在日志目录中创建一个日志文件。你可以使用以下命令轻松查看日志。

bat --theme='ansi' $(ls -t logs/ | head -n 1 | sed 's/^/logs\//')

生产调度

SQLMesh 可以按模型基础安排转换,并以适当的 DAG 顺序进行。这使得配置每个管道步骤的运行频率变得容易。

示例场景和模型 DAG

假设你有以下模型 DAG:

  • stg_transactions(每小时运行)
  • fct_transactions(每天运行)

如果 stg_transactions 失败,fct_transactions 将被阻止运行,并处于挂起状态。一旦 stg_transactions 成功运行,fct_transactions 将从失败点重新运行。

结论

SQLMesh 是一个强大的工具,可以帮助你高效地构建和维护数据转换管道。通过本文的快速指南,你应该能够掌握 SQLMesh CLI 的基本用法,并开始在你的项目中应用它。

相关文章:

  • 后端[特殊字符][特殊字符]看前端之Row与Col
  • 第二部分:网页的妆容 —— CSS(下)
  • 树莓派学习专题<12>:使用x264库实施H264编码--Linux和Windows上的部署
  • 【C++】线程池
  • VASP 教程:VASP 结合 phonopy 计算硅的声子谱
  • UDP 报文结构与注意事项总结
  • 打造即插即用的企业级云原生平台——KubeSphere 4.1 扩展组件在生产环境的价值全解
  • Vue 生命周期钩子总结
  • 第9讲:坐标轴美学深度优化——刻度线、网格线与边框控制
  • 【更新】LLM Interview (2)
  • CMCC RAX3000M使用Tftpd刷写OpenWrt固件的救砖方法
  • 顶会idea:Mamba+CNN暴力涨点新突破!
  • 一种在使用Kaggle并遇上会话中断时强行保存数据的方法
  • 国标云台控制状态
  • C语言-指针(一)
  • Paramiko 完全指南
  • 2020南京区域赛vp
  • InnoDB对LRU算法的优化
  • LangChain入门(二)安装开发环境
  • MCP 模型上下文协议配置MCP Server开发实践
  • 暗蓝评《性别打结》丨拆解性别之结需要几步?
  • 美国“杜鲁门”号航母一战机坠海
  • 一场与纪录并行的伦敦马拉松,超40项新世界纪录诞生
  • 诗词文赋俱当歌,听一听古诗词中的音乐性
  • 全过程人民民主研究基地揭牌,为推动我国民主政治建设贡献上海智慧
  • 十四届全国人大常委会第十五次会议在京举行,审议民营经济促进法草案等