ReOrc docs
Get ReOrc
简体中文
简体中文
  • 欢迎使用 Reorc
  • 设置与部署
    • 设置组织
    • 安装 Reorc-agent
  • 快速开始
    • 1. 添加连接源
    • 2. 创建项目
    • 3. 创建数据模型
    • 4. 验证数据处理流程
    • 5. 创建数据管道和调度任务
  • 连接
    • 目标数据库
    • 项目连接管理
  • 数据建模
    • 概述
    • 数据源
    • 模型
      • 宏
      • 物化
      • 模型配置
    • 字段列表
    • 数据血缘
    • 数据库特定配置
      • SelectDB(Doris)
  • 语义层建模
    • 概述
    • 语义层模型 (Cube)
      • 自定义维度
      • 自定义指标
        • 聚合计算函数
    • 语义层视图 (View)
    • 模型关系 (Relationship)
    • BI 接入方式
  • 数据摄入
    • 概述
    • 连接源类型
      • 从数据库获取数据
      • MySQL
      • SelectDB(Doris)
    • 数据转换(Transform)
  • 数据管道
    • 概述
    • 建模管道
    • 任务调度
  • 进阶用法
    • Jinja 模板
    • 变量
      • 系统内置变量
      • 项目内自定义变量
  • 健康监测
    • 数据管道健康
  • 资产管理
    • 元数据
    • 版本历史
    • dbt 包和项目依赖
  • 数据服务
    • 概述
    • 创建和编辑
    • 数据预览和下载
    • 权限管理
    • 开放 API
  • 数据安全
    • 数据脱敏
  • 设置
    • 组织设置
    • 项目设置
    • 个人设置
    • 角色和权限设置
Powered by GitBook
On this page
  • Recurve 中的资产
  • 数据建模流程
  • 前提条件
  • 操作流程
  • 定义源数据
  • 创建数据模型
  • 配置物化方式
  • 添加数据测试
  1. 快速开始

3. 创建数据模型

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

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

Recurve 中的资产

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

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

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

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

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

数据建模流程

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

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

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

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

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

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

前提条件

操作流程

让我们通过实际步骤体验 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_id,customer_name)来标准化客户数据。

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

与 stg_customers类似,此暂存模型通过从原始订单表orders 中选择并重命名相关字段 (order_id、customer_id、 order_date等) 来标准化订单数据。

SELECT
  id AS order_id,
  store_id AS location_id,
  customer AS customer_id,
  subtotal AS subtotal_cents,
  tax_paid AS tax_paid_cents,
  order_total AS order_total_cents,
  ordered_at
FROM
  {{ source('jaffle-shop', 'raw_orders') }}

此模型将客户数据与订单历史整合在一起。

-- Reference the staged data (stg_customers and stg_orders) to gather customer information.
WITH
  customers AS (
    SELECT
      *
    FROM
      {{ ref('stg_customers') }}
  ),
  orders AS (
    SELECT
      *
    FROM
      {{ ref('stg_orders') }}
  ),
  -- Aggregate the order data to calculate metrics per customer
  customer_orders AS (
    SELECT
      customer_id,
      min(ordered_at) AS first_order_time,
      max(ordered_at) AS most_recent_order_time,
      count(order_id) AS number_of_orders
    FROM
      orders
    GROUP BY
      1
  ),
  -- Join aggregated data with the customer information to produce details about each customer and their order history
  final AS (
    SELECT
      customers.customer_id,
      customers.customer_name,
      customer_orders.first_order_time,
      customer_orders.most_recent_order_time,
      coalesce(customer_orders.number_of_orders, 0) AS number_of_orders
    FROM
      customers
      LEFT JOIN customer_orders USING (customer_id)
  )
SELECT
  *
FROM
  final

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

  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。

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

Previous2. 创建项目Next4. 验证数据处理流程

Last updated 7 months ago

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

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

在这里,我们使用 函数引用这两个暂存模型。

点击 图标。

jaffle-shop-generator
{{ source() }}
{{ ref() }}
从连接中选择表