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
  • config() 的特点
  • 1. 物化设置
  • 2. 主键和分区设置
  • 3. 配置示例
  • 配置增量模型
  • 数据库特定配置
  1. 数据建模
  2. 模型

模型配置

你可以使用 config() 宏来实现更细粒度且更强大的模型控制。

config() 的特点

1. 物化设置

config() 宏使用户能够决定模型在分析数据库中的物化方式,常见的物化策略包括:

  • Table(表):模型以表的形式创建。

  • View(视图):模型以视图的形式创建。

  • Incremental(增量):模型以增量方式构建,仅更新自上次运行以来的新数据,提高大数据集的处理效率。

2. 主键和分区设置

使用 config() 宏定义的配置可以继承或覆盖其他位置(如模型的元数据)中定义的设置。用户可以在 config() 宏中定义多种配置,包括:

  • 为增量模型设置主键(unique key)。

  • 指定增量策略(incremental strategy)。

  • 指定分区(partition)。

不同数据库类型可以使用的 config 配置项有所差异,详见 数据库特定配置

3. 配置示例

config() 配置一般放置在模型代码的开头,例如:

-- models/model_name.sql
{{ config(
    materialized='incremental',
    unique_key='id'
) }}

SELECT *
FROM {{ ref('source_table') }}

配置增量模型

config() 宏的一个常见用途是定义数据模型的增量策略。

增量(Incremental) 是一种物化方式,每次运行时仅更新新增数据。相比于全量更新的表(Table),增量模型能够减少数据转换所需的时间和资源,适用于周期性更新的大数据集。

在模型的元数据面板中,你可以指定物化选项为 incremental。默认情况下,此选项采用 追加(append) 的方式,每次构建时仅向表中追加新数据,可能会导致重复数据的写入。

因此,你可以指定以下配置来实现按主键字段增量更新:

  • unique_key:定义数据的唯一标识符,实际运行时会根据主键字段的取值是否已存在,来决定插入新记录还是更新现有记录。

  • incremental_strategy:处理增量更新的方式,常见策略包括:

    • merge:基于唯一键更新现有记录并插入新记录。

    • append:仅追加新记录,不更新现有记录。

    • insert_overwrite:根据指定条件覆盖现有记录。

  • is_incremental():用于筛选在运行过程中应增量更新的数据。你可以借助此语法指定增量更新的数据范围

示例:

在 orders(订单)表中,我们可以实现增量物化,使其仅处理自上次运行以来新增或更新的订单,以减少处理时间并确保表数据保持最新:

{{ config(
    materialized='incremental',
    unique_key='id',
    incremental_strategy='merge'
) }}

SELECT *  
FROM {{ source("public", "raw_orders") }}  
{% if is_incremental() %}  -- 仅处理新记录
    WHERE ordered_at >= (SELECT MAX(ordered_at) FROM {{ this }})
{% endif %}

数据库特定配置

由于不同数据库平台在优化数据处理方面采用不同的方法,因此某些配置是专门为特定平台设计和应用的。有关这些平台特定配置和行为的详细信息,请参考 PLATFORM SPECIFIC 文档。

Previous物化Next字段列表

Last updated 4 months ago