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
  • 创建 SQL 模型
  • 引用模型
  • 组织模型
  1. 数据建模

模型

Previous数据源Next宏

Last updated 7 months ago

模型(Models)是一种用于从数据源提取数据,进行转换的查询,并生成结构化的数据集。

Recurve 当前支持使用 SQL 编写模型。

以下示例展示了 SQL 模型的基本语法:

  • 模型的核心是对数据源的常规查询。

  • 最终通过一个 SELECT 语句完成数据转换。

  • 此外,Jinja 模板语言被集成进来,以便进行引用并增强逻辑处理。请查阅: Jinja 模板。

-- Select the total number of orders per customer
select
    customers.customer_id,
    customers.first_name,
    customers.last_name,
    count(orders.order_id) as total_orders
from
    {{ source('jaffle_shop', 'raw_customers') }} as customers
join
    {{ source('jaffle_shop', 'raw_orders') }} as orders
on
    customers.customer_id = orders.customer_id
group by
    customers.customer_id,
    customers.first_name,
    customers.last_name
order by
    total_orders desc

当 Recurve 运行您的 SQL 模型时,它会将这些模型编译为可执行的 SQL 查询。这一过程包括解析所有的 Jinja 表达式、基于ref() 和source() 调用来解析模型和数据源的依赖关系,并结合配置(如物化类型)生成最终的 SQL。

将数据转换逻辑作为模型实现,带来了多种优势:

  • 简化操作:可以将复杂的转换拆分为更小的、易管理的步骤。

  • 模块化和可复用性:某些转换逻辑可以提取为基础模型,在多个地方复用,使得转换可以逐步构建,而不是从头开始。

  • 数据血缘和透明性:模型之间的关系会自动跟踪并展示在数据血缘图中,有助于理解模型依赖,方便调试。请参考: 数据血缘。

  • (即将上线)测试和验证:您可以为每个模型编写测试,以确保数据质量。在模型运行时与测试一并执行,从而尽早捕捉数据问题。

创建 SQL 模型

创建 SQL 模型的步骤如下:

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

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

    创建的模型将会显示在 models 文件夹下。

  3. 在模型编辑器中,输入您的 SQL 查询。

示例如下:

-- select customers from raw_customers table
select id as customer_id
       name as customer_name
from {{ source('jaffle_shop', 'raw_customers') }}
  1. 点击 “保存 / Save” 以确认更改。

  2. 点击 “预览 / Preview” 以查看查询结果,在 “结果 / Results” 选项卡中展示输出。

  3. 要查看模型的编译代码,请点击 “编译代码 / Compiled code”。

引用模型

在一个模型中引用另一个模型,允许您在现有的转换基础上进行扩展,而无需重复编写。这种模块化的方法使得数据转换更加简洁,逻辑更易于维护和理解。

在模型中,您可以使用 ref() 函数来引用其他模型。此函数会在模型之间建立依赖关系,确保模型按正确的顺序构建。

示例如下:

-- model: stg_orders
select
    id as order_id,
    user_id as customer_id,
    order_date,
    status,
    amount
from {{ source('jaffle_shop', 'orders') }}
-- model: mart_daily_revenue

select
    date_trunc('day', order_date) as date,
    count(*) as number_of_orders,
    sum(amount) as daily_revenue
from {{ ref('stg_orders') }}
where status = 'completed'
group by 1
order by 1 desc

在 mart_daily_revenu中, ref('stg_orders') 函数引用了 stg_oders 作为依赖。这个引用使得当前模型能够利用模型的结果,并确保模型构建时按正确的顺序进行。

组织模型

由于数据转换可能遵循不同的策略并经过多个阶段,您可以将模型按转换的不同阶段组织到文件夹中,从而帮助保持项目结构的清晰和逻辑性。

要创建新的文件夹,点击现有文件夹的操作按钮,并选择 “添加子文件夹/ Add sub-folder”:

要将模型移动到新文件夹中,点击模型的操作按钮,并选择 “移动/ Move”。然后,从列表中选择目标文件夹。