跳转至

创建物化方案

概述

物化方案用于提升指标查询性能。通过将计算结果预先生成并存储为物化表,可以减少实时查询的计算压力,提升响应速度。系统支持三种模式:

  • 加速物化:生成指标+维度方案,支持维度上卷。

  • 普通物化-常规模式:结构简单,适合固定报表或单一维度组合场景。

  • 普通物化-CUBE模式:支持多维度交叉组合和层级汇总。

用户可根据业务场景选择不同模式来构建物化表。

一、物化加速

1.概述

加速物化是一种面向核心指标的性能优化方案。
系统会提前生成指标+维度组合的结果表,并支持维度逐级上卷,从而显著减少实时查询的计算压力,提升响应速度。

适用场景:

  • 高频访问的核心指标(如销售额、活跃用户数)。

  • 需要跨维度对比或逐级汇总的业务报表。

  • 查询性能和稳定性要求较高的关键业务分析场景。

2.内容配置

配置项 说明
基本信息 -展示名:方案在前端界面展示的名称,便于检索与识别。-系统名称:系统内部唯一标识,用于生成对应的物化表。
指标与维度 -支持选择多个指标与维度组合,系统会自动进行合法性校验。-指标可选平台内任意已授权指标。
指标日期范围筛选 -支持限制指标的数据时间范围,例如:近7天、近30天、按日/周/月。
数据筛选 -可基于公共维度(如区域、门店、业务线)进行数据过滤。
物化表存储设置 -分区字段:通常选择指标日期字段,确保数据可按时间增量更新。-分桶字段:可选择高基数字段(如用户ID、门店ID)作为分桶键,减少数据倾斜。

3.调度配置

配置项 说明
更新内容 -全量更新:以调度时间点T为基准,覆盖生成物化数据。-增量更新:基于上游表的分区更新时间,仅更新最新分区。
更新周期 -定时更新:在固定时间执行,如每天08:00。-依赖触发更新:当上游依赖表完成更新后自动触发。
高级设置 支持配置失败处理策略:-失败重试次数
通知配置 -可设置任务成功/失败提醒。-建议关键业务任务开启通知,确保异常能第一时间发现,以及提醒相关负责人

二、普通物化-常规模式

1. 概述

普通物化的 常规模式 适用于 固定报表、简单指标分析 的场景。
它会将指标计算结果在某一调度时刻固化下来,存储到物化表中,用于下游查询和 BI 展示。

典型应用场景:

  • 每日/每月的业务快照报表,例如“日销售额报表”。

  • 单维度或少量维度组合的指标固化,例如“按日期 × 城市统计销售额”。

  • 指标结果需要长期保留,不希望随着源表更新而改变。

优势:

  • 配置简单,操作直观。

  • 结果固定,可追溯历史快照。

  • 适合数据量中小、更新频率固定的场景。

2. 内容配置

配置项 说明
基本信息 - 展示名:方案在前端界面展示的名称,方便用户识别。
指标列 - 定义结果集展示的指标字段,例如“交易总额”、“欠款总额”。- 用户可选择多个业务指标。
维度列 - 定义结果中的维度字段,例如“指标日期”、“城市”。
参数列 - 参数列用于配置在任务执行过程中可动态替换的变量。通过参数化设置,可让物化方案在不同时间或场景下自动适配相应的数据范围

- 调度前 1 日(日):表示任务调度日期的前一天。若任务调度日期为 2025-10-21,则该参数取值为 2025-10-20

- 调度时间(日):表示任务调度日期(当天)。若任务调度日期为 2025-10-21,则该参数取值为 2025-10-21

- 调度时间(秒):表示任务调度时间的时间戳(秒级)。若任务调度日期为 2025-10-21,则该参数取值为 2025-10-21

- 数据写入时间(秒):表示数据写入存储表时的时间戳(秒级)。例如 2025-10-21 08:02:35
指标日期范围 - 限制指标计算的数据范围,以调度时间(秒)作为基准时间。例如“近 30 天”、“近 7 天”。
结果筛选 - 支持对结果设置条件过滤,例如“订单金额 > 100”。
返回行数 - 可限制返回的行数:
- 全部结果;
- Top N 数据(如 Top10 城市)。
物化表存储设置 - 分区字段:通常为参数列的调度日期,便于增量更新和覆盖。
- 分桶字段:可选,用于高基数字段(如门店 ID),优化大数据场景下的查询性能。

3. 调度配置

配置项说明

配置项 说明
更新周期 - 定时更新:在指定时间点定时执行(可配置“每日/每周/每月 + 时分”)。
- 不更新:物化表不会主动进行数据更新,需要使用数据回补功能更新数据。
高级设置 - 可配置失败重试策略。
通知设置 - 支持配置任务结果推送,包含: - 更新成功 - 更新失败 - 延迟更新- 用户可选择是否启用对应通知。
推送渠道 - 支持多种推送渠道: - 邮箱 - 企业微信机器人 - 其他定制化接口(如飞书)。
接收用户 - 可配置一个或多个接收用户,接收通知消息。
消息内容 - 支持自定义消息内容: - 标题:任务结果的简要说明。 - 正文:可填写详细描述,支持超链接与参数占位符。
推送测试 - 用户可在保存配置前进行“推送测试”,验证通知能否正常到达。

4. 示例说明

示例 SQL

select 
  {$调度日期} - 1 day as snapshot_date,
  metric_time(day),
  复合演示demo,
  交易总额demo,
  欠款总额demo
from ...
where metric_time <= {$调度日期}
  and metric_time >= {$调度日期} - 29 day
group by metric_time(day);

示例结果表

调度日期(隐藏) 调度日期 指标日期 指标1 数据插入时间
2025-09-19 2025-09-18 09-19 指标值 2025-09-19 00:00
2025-09-18 09-18 指标值 2025-09-19 00:00
2025-09-18 09-17 指标值 2025-09-19 00:00
2025-09-18 2025-09-17 09-18 指标值 2025-09-19 12:00

5. 使用建议

  1. 适用场景

  2. 周期性快照报表。

  3. 简单指标 + 维度组合。

  4. 需要历史结果长期保留的场景。

  5. 配置优化

  6. 返回行数适当控制,避免结果过大。

  7. 指标日期范围建议设置为近 30 天或更短,保证性能。

  8. 调度优化

  9. 数据全量重算 → 用覆盖更新。

  10. 数据分区逐日写入 → 用增量更新。

普通物化 - CUBE 模式

1. 概述

CUBE 模式是一种面向 多维度交叉分析 的高性能物化方式。
系统会在构建物化表时,基于选定的维度自动生成所有可能的组合(维度 CUBE),并为每个组合预先计算聚合结果。

这种模式适用于:

  • 报表中需要多维度自由筛选、交叉分析的场景;

  • 分析维度层次复杂(如区域、产品、渠道)的多角度汇总;

  • 需要高性能支撑多维钻取的场景。

2. 内容配置

2.1 指标配置

配置项 说明
指标列 - 选择需要进行聚合计算的指标字段,可选择多个。- 支持选择原子指标、派生指标、复合指标。

2.2 维度配置

维度配置是 CUBE 模式的核心逻辑,它决定了系统在物化构建时将生成哪些维度组合和聚合层级。
通过合理配置不同类型的维度,系统可以在计算时自动生成多层级的聚合结果,从而支持复杂报表的快速筛选与钻取。

一、维度配置的作用

在常规模式中,指标结果仅会按“选定维度组合”生成一份结果;
而在 CUBE 模式 下,系统会根据用户配置的维度类型自动生成所有维度的交叉组合(即 CUBE() 的数学笛卡尔组合),例如:

若有维度 A、B、C
则生成以下所有聚合层级:(A, B, C)(A, B)(A, C)(B, C)(A)(B)(C)( )

二、维度类型详解

CUBE 支持四类维度,每种维度在计算时具有不同的组合方式与聚合层级控制逻辑。

1️⃣ 必选维度
特征 说明
必定参与所有聚合组合,不会被裁剪 通常用于“时间类维度”或必须存在的主分析维度。
不会因为其他维度被上卷而消失 确保所有聚合结果都有时间线或核心标识。

示例:
选择「日期」作为必选维度,其他维度可变化。
系统生成的组合会始终包含日期:

日期 地区 渠道 销售额
2025-09-18 华东 线上 1000
2025-09-18 华东 TOTAL 1800
2025-09-18 TOTAL TOTAL 3500
2️⃣ 层级维度
特征 说明
具有父子层次结构的维度 如「大区 → 省份 → 城市」或「品类 → 子品类 → 商品」。
系统会自动计算每一层级的聚合结果 避免用户手动创建多个分组。
可同时选择多个层级字段 系统按从上至下顺序生成组合。

示例:
配置层级维度为「大区 → 省份 → 城市」:

生成层级组合 说明
大区 + 省份 + 城市 最细粒度明细
大区 + 省份 按省汇总
大区 按大区汇总
TOTAL 全部地区汇总

结果示例:

日期 大区 省份 城市 销售额
2025-09-18 华东 浙江 杭州 500
2025-09-18 华东 浙江 TOTAL 1500
2025-09-18 华东 TOTAL TOTAL 2500
2025-09-18 TOTAL TOTAL TOTAL 8900
3️⃣ 关联维度
特征 说明
多个字段逻辑上绑定出现 系统会始终同时计算这些字段,不会拆开组合。
典型场景:主键与名称、编码与描述等 用于保证组合的语义一致性。

示例:
定义“关联维度组1”:

商品ID ↔ 商品名称

系统生成组合时,这两个维度始终同时出现:

日期 商品ID 商品名称 销售额
2025-09-18 P1001 手机 2000
2025-09-18 P1002 耳机 600
2025-09-18 TOTAL TOTAL 2600
4️⃣ 可选维度
特征 说明
系统会对所有可选维度进行笛卡尔组合 自动生成所有交叉聚合结果。
是 CUBE 模式的核心特征 支撑任意筛选、钻取分析。
可设置多个可选维度 每新增 1 个维度,组合数翻倍。

示例:
可选维度选择「渠道」「客户类型」「支付方式」
系统自动生成以下聚合组合:

维度组合 示例说明
渠道 + 客户类型 + 支付方式 线上-会员-支付宝
渠道 + 客户类型 线上-会员
客户类型 + 支付方式 会员-支付宝
渠道 线上
支付方式 支付宝
TOTAL 所有组合汇总
三、CUBE 维度完整示例

场景说明

配置类型 选择内容 说明
必选维度 日期 所有结果都必须包含日期
层级维度 省 → 市 系统自动生成省级、市级及上卷(TOTAL)层级
可选维度 渠道、客户类型 两个维度相互独立,系统会生成所有子集组合(2²=4)
指标 销售额 聚合字段,用于结果展示

系统生成的组合规则

  • 层级维度组合数:3(省、市、汇总TOTAL)

  • 可选维度组合数:4(空集、渠道、客户类型、渠道+客户类型)

  • 必选维度(日期)固定:1

  • 最终组合数:3 × 4 × 1 = 12 种组合

全量组合清单

序号 日期(必选) 层级组合 可选维度子集 最终维度组合结构 示例结果说明
日期 省+市 空集 日期 + 省 + 市 每个城市的汇总数据
日期 省+市 渠道 日期 + 省 + 市 + 渠道 每个城市 × 渠道 的销售额
日期 省+市 客户类型 日期 + 省 + 市 + 客户类型 每个城市 × 客户类型 的销售额
日期 省+市 渠道 + 客户类型 日期 + 省 + 市 + 渠道 + 客户类型 城市 × 渠道 × 客户类型 交叉汇总
日期 省(上卷) 空集 日期 + 省 按省级汇总(不分渠道、不分客户类型)
日期 省(上卷) 渠道 日期 + 省 + 渠道 按省 × 渠道汇总
日期 省(上卷) 客户类型 日期 + 省 + 客户类型 按省 × 客户类型汇总
日期 省(上卷) 渠道 + 客户类型 日期 + 省 + 渠道 + 客户类型 省 × 渠道 × 客户类型 汇总
日期 上卷(TOTAL) 空集 日期 全国汇总,不区分任何维度
日期 上卷(TOTAL) 渠道 日期 + 渠道 按渠道汇总全国销售额
日期 上卷(TOTAL) 客户类型 日期 + 客户类型 按客户类型汇总全国销售额
日期 上卷(TOTAL) 渠道 + 客户类型 日期 + 渠道 + 客户类型 全国 × 渠道 × 客户类型 汇总

示例数据展示

以下是系统生成部分结果的示例(汇总值示意):

日期 渠道 客户类型 销售额
2025-09-18 浙江 杭州 线上 会员 1,200
2025-09-18 浙江 杭州 线下 会员 900
2025-09-18 浙江 杭州 TOTAL TOTAL 3,000
2025-09-18 浙江 TOTAL TOTAL TOTAL 8,000
2025-09-18 TOTAL TOTAL 线上 会员 18,500
2025-09-18 TOTAL TOTAL TOTAL TOTAL 25,700

2.3 参数配置

配置项 说明
参数列 设置动态参数,如“调度时间”、“快照日期”,用于生成周期性结果。
上卷维度填充方式 定义上卷维度展示形式。默认 TOTAL。例如:当“城市”维度被汇总时,结果中会显示 城市 = TOTAL

2.4 结果筛选与限定

配置项 说明
筛选 - 可设置数据过滤条件,仅对特定维度范围生成 CUBE。例如:仅计算“区域=华东”的维度组合。
结果限定 - 可控制结果输出范围,如 Top N、特定分类、或排除异常值。- 支持表达式过滤(如 销售额 > 0)。
指标日期范围 - 定义指标计算的数据时间范围(如近 7 日、近 30 日、本月)。

2.5 更新方式与存储设置

配置项 说明
更新方式 - 覆盖更新:每次全量重算,结果完全替换旧数据。
- 增量更新:仅更新新增分区数据,效率更高,适合每日任务。
分区字段 通常为时间字段(如 指标日期),用于分区加载和增量刷新。
分桶字段 可选择高基数字段(如地区ID、店铺ID),用于数据分桶,提升查询性能。

3. 调度配置

CUBE 模式的调度逻辑与常规模式一致,但更强调性能与任务稳定性。

配置项 说明
更新周期 - 定时更新:按固定时间执行(如每日 02:00)。
- 不更新:物化表不会主动进行数据更新,需要使用数据回补功能更新数据。
高级设置 - 支持重试机制与失败报警策略。
通知配置 - 支持任务结果推送:
- 更新成功
- 更新失败
- 延迟更新
- 支持多渠道:邮箱、企业微信、Webhook等。
推送渠道 - 可新增多个通知通道(如“渠道1:邮箱”、“渠道2:企业微信机器人”)。
- 每个通道可独立设置接收人、标题与内容模板。
消息内容 - 支持自定义标题与正文,支持富文本、链接与参数变量(如 ${任务名称}${执行时间})。
推送测试 - 提供「发送测试」功能,验证消息配置是否生效。