SQLMesh 系列教程8- 详解 seed 模型

news/2025/2/23 23:26:22

在数据分析和建模过程中,外部模型(External Models)在 SQLMesh 中扮演着重要角色。外部模型允许用户引用外部数据源或现有数据库表,从而实现灵活的数据整合和分析。本文将介绍外部模型的定义、生成方法(包括使用 CLI 和 YAML 文件)、审计功能,以及如何在实际项目中应用外部模型。通过一个具体的示例,我们将展示如何定义和使用外部模型来分析客户数据,帮助用户更好地理解和利用 SQLMesh 的强大功能。

外部模型(External Models)定义

在 SQLMesh 中,外部模型(External Models)是指那些引用外部数据源或现有数据库表的模型。这些模型允许用户将外部数据集整合到 SQLMesh 的数据管道中,从而实现更灵活的数据处理和分析。外部模型通常用于连接和使用已经存在的数据,而无需在 SQLMesh 中重新定义这些数据。
在这里插入图片描述

如何生成外部模型

1. 使用 CLI 生成外部模型

SQLMesh 提供了命令行界面(CLI),用户可以通过 CLI 命令来创建和管理外部模型。以下是一个基本的命令示例,用于生成外部模型:

sqlmesh create external --name customers --source external_database.customers

这个命令会创建一个名为 customers 的外部模型,引用 external_database 中的 customers 表。

2. 使用 YAML 文件定义外部模型

SQLMesh 还支持通过 YAML 文件定义外部模型。用户可以在 YAML 文件中指定外部模型的名称和数据源。以下是一个示例 YAML 文件:

# models/external/customers.yaml
version: 1
models:
  - name: customers
    type: external
    source: external_database.customers

通过这种方式,用户可以更直观地管理外部模型的定义。

外部模型审计

SQLMesh 提供了审计功能,允许用户跟踪外部模型的使用情况和变更。这对于在内部模型评估之前检查上游依赖项的数据质量非常有用。

这个例子展示了一个带有两个审计的外部模型。

- name: raw.demographics
  description: Table containing demographics information
  audits:
    - name: not_null
      columns: "[customer_id]"
    - name: accepted_range
      column: zip
      min_v: "'00000'"
      max_v: "'99999'"
  columns:
    customer_id: int
    zip: text

用户可以通过 SQLMesh 的 CLI 命令查看外部模型的状态和历史记录。例如,使用以下命令可以查看外部模型的审计信息:

sqlmesh audit external --name customers

这个命令将显示与 customers 外部模型相关的所有变更和使用记录,帮助用户了解模型的使用情况。

实际示例

假设我们在一个数据分析项目中,需要分析来自不同数据源的客户数据。我们可以使用外部模型来整合这些数据。

  1. 定义外部模型:我们可以使用 YAML 文件定义外部模型,如下所示:
# models/external/customers.yaml
version: 1
models:
  - name: customers
    type: external
    source: external_database.customers
  1. 生成外部模型:通过 CLI 命令或直接使用 YAML 文件,SQLMesh 将会识别并生成外部模型。
  2. 查询外部数据:在 SQLMesh 中,我们可以使用这个外部模型进行查询和分析。例如,我们可以创建一个分析模型,计算客户的订单总额:
-- models/analysis/customer_orders.sql
SELECT
    c.id AS customer_id,
    c.name AS customer_name,
    SUM(o.amount) AS total_orders
FROM
    external.customers c
JOIN
    external.orders o ON c.id = o.customer_id
GROUP BY
    c.id, c.name

详细解释示例

在上述示例中,外部模型 customers.yaml 允许我们直接访问外部数据库中的客户数据。通过将外部模型与其他数据模型结合使用,我们可以进行复杂的数据分析。

  • 数据整合:外部模型使得不同数据源的数据整合变得简单。用户可以轻松地将外部数据与 SQLMesh 中定义的数据结合,进行更全面的分析。
  • 灵活性:使用外部模型,用户可以灵活地引用和使用现有的数据,而无需担心数据的重复定义和管理。
  • 审计功能:通过 SQLMesh 的审计功能,用户可以跟踪外部模型的使用情况,确保数据的透明性和可追溯性。

通过外部模型,SQLMesh 提供了一种高效的方式来整合和分析来自不同来源的数据,帮助用户更好地利用现有的数据资源。

最后总结

外部模型为 SQLMesh 提供了强大的数据整合能力,使得用户能够轻松地引用和使用现有的数据源。通过 CLI 和 YAML 文件,用户可以方便地定义外部模型,并利用 SQLMesh 的审计功能跟踪模型的使用情况。在实际项目中,外部模型的灵活性和可扩展性使得数据分析变得更加高效。通过本文的示例,我们展示了如何在数据分析项目中应用外部模型,整合来自不同来源的数据,为决策提供支持。总之,外部模型是 SQLMesh 中不可或缺的组成部分,为数据管理和分析提供了强有力的支持。


http://www.niftyadmin.cn/n/5863861.html

相关文章

线性模型 - Softmax 回归(参数学习)

本文,我们来学习Softmax 回归的参数学习,在开始之前,我们先了解一下“损失函数”、“风险函数”和“目标函数”这三个核心概念。 一、损失函数、风险函数、目标函数 1. 损失函数(Loss Function) 定义: 损…

Linux 内核中的 container_of 宏:以 ipoib_rx_poll_rss 函数为例

在 Linux 内核编程中,container_of 是一个非常实用的宏,主要用于通过结构体的成员指针来获取包含该成员的整个结构体的指针。rx_ring = container_of(napi, struct ipoib_recv_ring, napi); 在代码中就是利用了这个宏,下面我们详细分析它的作用和工作原理。 背景知识 在内…

断开ssh连接程序继续运行

在使用 SSH 远程连接服务器时,我们常希望在断开连接后仍然让程序继续运行,以下是几种常见的方法: 1. 使用 screen 或 tmux screen 和 tmux 是两款非常强大的终端复用工具,它们允许你在后台运行会话,即使断开 SSH 连接…

【Python爬虫(45)】Python爬虫新境界:分布式与大数据框架的融合之旅

【Python爬虫】专栏简介:本专栏是 Python 爬虫领域的集大成之作,共 100 章节。从 Python 基础语法、爬虫入门知识讲起,深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑,覆盖网页、图片、音频等各类数据爬取&#xff…

创建型模式-Prototype 模式(原型模式)

原型模式 ‌原型模式(Prototype Pattern)是一种创建型设计模式,通过复制现有对象来创建新对象,避免了重复创建对象的开销‌。原型模式的核心在于通过复制现有的实例对象来生成新的实例对象,从而提升效率。‌ 场景假设…

GStreamer源码安装1.24版本

从官网下载 1.24的源码包 https://gitlab.freedesktop.org/gstreamer/gstreamer/-/tree/1.24?ref_typeheads#getting-started ,尝试过使用git clone 的方式,但速度贼慢,就选择了下载源码包的方式安装依赖 sudo apt install libssl-dev g me…

【Leetcode 每日一题】2506. 统计相似字符串对的数目

问题背景 给你一个下标从 0 0 0 开始的字符串数组 w o r d s words words。 如果两个字符串由相同的字符组成,则认为这两个字符串 相似 。 例如,“abca” 和 “cba” 相似,因为它们都由字符 ‘a’、‘b’、‘c’ 组成。然而,“…

八大排序算法(1)插入排序-直接插入排序 和 希尔排序

直接插入排序(Insertion Sort) 直接插入排序是最基本的插入排序算法,工作原理如下: 从第二个元素开始,将其与前面已经排好序的部分进行比较。 找到合适的位置后,将该元素插入到合适的位置,同…