3. 创建数据模型

定义数据源并创建一个简单的数据模型

本节将介绍数据建模的核心概念,帮助您掌握如何使用 Recurve 创建一个简单的数据转换用例。

Recurve 中的资产

在 Recurve 中,资产是构建数据工作流的核心要素。可以将其视为数据转换过程中创建和管理的关键组件,每种资产类型都发挥着特定作用,共同作用将原始数据转化为有价值的洞察。

数据建模 中,主要使用以下几类资产:

  • 数据源(Sources): 指向原始数据,便于连接并记录数据的来源。

  • 模型(Models):处理数据的查询,通过转换生成结构化的、适合分析的数据集。

  • Jinja 宏和变量(Jinja macros and variables):Jinja 模板工具,为 SQL 添加编程逻辑,使转换过程更具动态性和可维护性。

数据建模流程

Recurve 的数据建模流程遵循逻辑步骤,帮助您构建和验证转换工作流。

  1. 定义源数据:首先定义代表原始数据表的源数据,便于描述和记录数据的来源。

  2. 创建数据模型:在源数据基础上创建数据模型,将原始数据转化为有用的分析数据集。每个模型表示一个特定的转换步骤,并逐步构建。

  3. 配置物化方式:指定模型结果在数据仓库中的物化方式。

  4. 添加数据测试:为模型添加数据测试,以确保其正确运行。每次模型成功构建后,这些测试会自动执行。

建议在开发周期中包含以上步骤,以确保转换在应用到生产数据之前正常运行。

前提条件

以下操作示例使用由 dbt 社区提供的 jaffle_shop 数据集(一个虚构的电商商店)。您可以按照该仓库中的指南生成数据并将其加载到目标数据库: jaffle-shop-generator

操作流程

让我们通过实际步骤体验 Recurve 的数据建模流程。

首先,在 数据开发/ Data development 仪表板中打开您创建的项目。默认情况下,Recurve 将导航至“设计/ Design”部分,在这里完成所有转换活动。

定义源数据

请按照以下步骤操作:

  1. “模型/ Models ”选项卡中,点击“+”图标并选择“添加源/ Add source”

  2. 在打开的窗口中:

    1. 选择连接类型。

    2. 选择目标连接,即您在 2. 创建项目 中已设置好的连接。

  3. 点击“下一步/ Next”后,Recurve 将显示目标连接中所有可用的表。

  1. 选择所需的原始表或模型。

    在此示例中,我们选择 jaffle_shop 架构下的所有表。

jaffle_shop 数据集所含表

jaffle_shop 架构包含以下表:

  • Customers:下订单的客户

  • Orders:由客户发起的订单

  • Products:订单中包含的食品和饮料

  • Items:属于产品的订单项

  • Supplies:生产产品所需的原材料

  • Stores:订单下单和履行的门店

  1. 点击“添加源/ Add source”

选定的表将被添加到“数据源/ Sources”文件夹中,并按架构名称分组。

创建数据模型

为了展示数据模型的动态性和模块化,我们将创建三个模型:

此暂存模型( Stage model )通过从原始客户表customers中选择相关字段(如customer_idcustomer_name)来标准化客户数据。

此过程使用 Jinja 的 {{ source() }} 函数来引用前一部分中定义的原始表。

SELECT
  id AS customer_id,
  name AS customer_name
FROM
  {{ source('jaffle-shop', 'raw_customers') }}

按照以下步骤创建每个模型:

  1. “模型/ Models”选项卡中,点击“+”图标并选择“新建 SQL 模型/ New SQL model”

  2. 提供模型名称,然后点击“创建/ Create”

    新模型将被放置在“模型/ Models”文件夹中。

  3. 打开模型编辑器并粘贴查询。

  4. 点击“保存/ Save”确认更改。

  5. 点击“预览/ Preview”以查看查询输出,结果将在“结果/ Result”选项卡中显示。

  6. 请按照上述步骤创建其他两个模型。

现在,我们已经创建了两个标准化原始数据的暂存模型,以及一个汇总并整合结果的模型,可以在“数据血缘/ Data linage”中查看它们,以更好地理解它们之间的关系。

打开一个模型,并切换到“血缘视图/ Lineage view”选项。这将显示一个 DAG(有向无环图),展示从原始数据到最终下游模型的资产关系。

数据血缘是通过 source()ref() 函数实现的,这些函数会自动跟踪资产的依赖关系。

配置物化方式

您可以具体配置模型在数据仓库中的物化方式。

默认情况下,所有模型的物化方式为 表格/ table

按照以下步骤操作:

  1. 打开模型编辑器。

  2. “物化方式/ Materialization”字段中,选择所需的物化方式选项。

继续使用我们的三个示例模型,我们可以将暂存模型物化为视图,以确保它们反映最新的源数据,并最大限度地减少存储成本。另一方面,汇总模型可以物化为表格,因为它是最终模型,且查询频率较高。

添加数据测试

即将上线: 数据测试部分即将上线。

数据测试是简单的 SQL 查询,它根据您设置的条件返回失败的记录。这些测试用于验证转换后数据的正确性,确保模型的结果符合预定义的标准。

Recurve 提供了一系列内置测试,您可以快速将其添加到模型中。

按照以下步骤向模型添加测试:

  1. 打开模型编辑器。

  2. 切换到“测试用例/ Test cases”选项卡。

  3. 点击 + 添加新建/ + Add new

  4. 选择一个模板并指定相应的值。

    例如,对于 stg_orders 模型,我们可以添加 "空值" 测试,以验证日期列中是否存在null 值。

  5. 点击 添加/ Add。

新的测试将被添加到模型的测试用例列表中,并将在每次模型在控制台运行或作为管道的一部分运行时自动执行。

Last updated