用 LOD 实现复杂业务场景
概述
LOD(Level of Detail,详细级别)字段用于让指标脱离当前图表维度,按指定粒度聚合。当业务分析需要在同一视图中同时呈现「当前维度指标」与「其他维度层级的指标」时,LOD 是最直接的实现方式。
LOD 的核心价值是将业务口径与图表展示粒度分开:图表可以从省份下钻到城市,或从区域切换到品类;而“全局销售额”“省份销售额”“客户年度销售额”等指标仍按预先定义的粒度计算,不会因展示维度变化而改变口径。
使用 LOD 后,可以:
- 固定口径:将指标锁定在客户、年度、区域或全局粒度,避免图表下钻后重复计算。
- 稳定基准:在细粒度视图中保留全局总额、上级维度总额或同级均值,用于占比和差异分析。
- 补充粒度:在不增加图表维度的前提下加入品类等计算粒度,完成区域内最大值等分析。
创建 LOD 字段时,可按以下原则选择类型;本文也据此归纳典型场景:
- 固定计算粒度(FIXED):锁定客户、年份、区域或全局粒度,计算最值、频率、全局分母和区域基准值。
- 排除当前维度(EXCLUDE):从当前视图粒度中移除明细维度,回退到上级粒度计算分母或基准。
- 增加计算粒度(INCLUDE):在当前视图粒度上补充维度,再对细粒度结果聚合。
LOD 字段的创建入口、编辑器配置、支持范围与限制,请参考 新建 LOD 字段。
前置准备:新建 LOD 字段
本文所有场景均基于 LOD 复杂业务场景示例数据集 配置。下载并上传该文件后,可按后续步骤复现各场景。
在进入具体场景前,请确保已掌握以下通用操作:
- 在卡片编辑页的数据集字段区域,点击字段区域右侧的「+」,选择「新建 LOD 字段」。
- 配置字段名称、LOD 类型(FIXED / INCLUDE / EXCLUDE)、指定维度与计算内容。
- 确认右侧「预览表达式」符合预期后,点击「确定」。
- 将生成的 LOD 字段拖入数值区,或与其他字段组合为计算字段。
- FIXED 可不指定维度,表示按全局范围计算。
- INCLUDE 与 EXCLUDE 必须指定维度。
- LOD 字段类型为数值,支持在计算字段中嵌套或组合使用。
- 同一卡片可以使用多个 LOD 字段;每个字段按各自定义的粒度独立计算。
- 创建 LOD 字段后,可通过增加或移除图表维度,验证指标是否保持预期口径。
LOD 字段创建通则
- 明确业务口径:先判断指标应在哪个维度层级计算,再决定图表如何展示。需要固定维度用 FIXED,需要在视图维度上增加维度用 INCLUDE,需要排除维度用 EXCLUDE。
- 新建 LOD 字段:在卡片编辑页的数据集字段区域,点击「+ > 新建 LOD 字段」,填写字段名称、选择 LOD 类型、指定维度与计算内容。
- 确认预览表达式:右侧预览表达式应与业务逻辑一致,例如
{ FIXED [区域]: AVG([销售额]) }。 - 组合使用(可选):如需占比、差异、计数等二次计算,可将 LOD 字段放入新建计算字段中。
- 拖入绘制区:将维度与 LOD 字段(或基于 LOD 的计算字段)拖入对应绘制区,调整显示格式后保存卡片。
固定计算粒度(FIXED)
FIXED 将指标锁定在指定维度上计算,不随图表的当前维度改变。它适用于“客户年度销售额”“年度购买频率”“全局销售额”等需要稳定业务口径的指标。
场景 1:客户年度销售额最大值
业务需求
先按「客户 ID × 年份」汇总销售额,再按客户 ID 取各年度销售额中的最大值。
应用价值
该指标适用于评估客户历史年度销售峰值,并将当年销售额与历史峰值对比,辅助客户分层、目标制定和业绩复盘。
推荐 LOD 表达式
{ FIXED [客户ID]: MAX({ FIXED [客户ID], [日期(年)]: SUM([销售额]) }) }
逻辑解释:
- 内层
FIXED [客户ID], [日期(年)]先计算「每个客户每年」的销售额合计。 - 外层
FIXED [客户ID]再对每个客户取上述年度合计中的最大值。
操作步骤
-
新建年度粒度字段「日期(年)」
在字段区域点击「+ > 新建计算字段」,按以下方式配置:
- 字段名称:
日期(年) - 字段类型:
日期 - 公式:
DATE_TRUNC('year', [日期])
该公式会将同一年度内的日期统一转换为该年度的首日。例如,
2024-03-15和2024-12-31都返回2024-01-01,因此可作为按年汇总的 LOD 维度。保存后,确认「日期(年)」可作为维度字段选择。

- 字段名称:
-
新建嵌套 LOD 字段「客户年度销售额最大值」
-
在字段区域点击「+ > 新建 LOD 字段」,字段名称填写「客户年度销售额最大值」。

-
外层 LOD 类型选择「FIXED」,指定维度选择「客户 ID」;外层计算内容选择「嵌套 LOD」,聚合方式选择「最大值」。
内层 LOD 类型选择「FIXED」,指定维度选择「客户 ID」和「日期(年)」;内层计算内容选择「普通聚合 > 求和 > 销售额」。
确认预览表达式为
{ FIXED [客户ID]: MAX({ FIXED [客户ID], [日期(年)]: SUM([销售额]) }) },点击「确定」。
-
-
绘制图表
- 将「客户 ID」拖入维度区。
- 将「日期(年)」拖入维度区,用于验证 LOD 字段的计算口径。
- 将「客户年度销售额最大值」拖入数值区。

结果说明
图表增加「年份」展示维度后,同一客户在各年份行中仍显示相同的「客户年度销售额最大值」。
例如,C001 在 2023、2024 和 2025 年均显示 278,229。这说明该指标始终按「客户 ID」粒度计算,不受图表中年份展示维度的影响。
如需获取最大年度销售额对应的年份,需通过 ETL 对年度汇总结果与最大值结果进行关联。
场景 2:客户年度购买频率
业务需求
按「客户 ID × 年份」统计每位客户在每个年度内的独立订单数,用于衡量年度购买频率。
应用价值
该指标可用于比较同一客户的年度复购频率,并在按品类、区域等维度展开图表时保持客户年度订单数口径一致,辅助识别购买活跃度变化。
推荐 LOD 表达式
{FIXED [客户ID], [日期(年)] : CNT_DISTINCT([订单ID])}
该表达式通过 FIXED 锁定「客户 ID」和「日期(年)」两个维度;CNT_DISTINCT([订单ID]) 对订单 ID 去重,避免同一订单在明细数据中出现多行时被重复计数。
操作步骤
-
复用年度粒度字段「日期(年)」
本场景使用场景 1 已创建的「日期(年)」字段作为年度粒度。该字段类型为日期,公式为:
DATE_TRUNC('year', [日期])若尚未创建该字段,请先按场景 1 的步骤完成创建。
-
新建 LOD 字段「年度购买频率」
在字段区域点击「+ > 新建 LOD 字段」,按以下方式配置:
- 字段名称:
年度购买频率 - LOD 类型:
FIXED - 指定维度:
客户ID、日期(年) - 计算内容:
普通聚合 > 去重计数 > 订单ID
确认预览表达式为
{FIXED [客户ID], [日期(年)] : CNT_DISTINCT([订单ID])},点击「确定」。
- 字段名称:
-
绘制图表
- 将「客户 ID」和「品类」拖入维度区。
- 将「日期(年)」拖入对比区,并按年展开,作为年度展示维度。
- 将「年度购买频率」拖入数值区,聚合方式选择「最大值」。

结果说明
图表增加「品类」展示维度后,同一客户、同一年在不同品类行中仍显示相同的年度购买频率。
例如,C001 在 2023 年的家电、家具、技术和办公用品行均为 126;2024 年均为 130;2025 年均为 84。这说明该指标始终按「客户 ID × 年份」粒度计算,不受图表中品类展示维度的影响。
场景 3:销售额占全局总额百分比
业务需求
计算各省、市销售额占全局销售额的比例,并在省份小计行展示该省份销售额的全局占比。
应用价值
该指标可统一衡量城市、省份等不同层级对全局销售额的贡献,适用于区域贡献排名、销售结构分析和目标完成贡献分析。
推荐 LOD 表达式
{ FIXED : SUM([销售额]) }
FIXED 不指定维度时按全局粒度聚合。「全局销售额」作为固定分母,当前图表维度下的销售额作为分子;因此城市行展示城市占比,省份小计行展示省份占比。
操作步骤
-
新建 LOD 字段「全局销售额」
在字段区域点击「+ > 新建 LOD 字段」,按以下方式配置:
- 字段名称:
全局销售额 - LOD 类型:
FIXED - 指定维度:留空
- 计算内容:
普通聚合 > 求和 > 销售额
确认预览表达式为
{ FIXED : SUM([销售额]) },点击「确定」。
- 字段名称:
-
新建计算字段「总额百分比」
在字段区域点击「+ > 新建计算字段」,按以下方式配置:
- 字段名称:
总额百分比 - 字段类型:
数值 - 公式:
SUM([销售额]) / SUM([全局销售额])
- 字段名称:
-
绘制图表
- 将「省份」和「城市」拖入维度区,省份应位于城市之前。
- 将「总额百分比」「销售额」和「全局销售额」拖入数值区。
- 将「全局销售额」的聚合方式设为「最大值」,避免在城市行或小计行重复累加。
- 将数值显示格式设置为「百分比」。
- 开启省份小计。

结果说明
图表展开「省份、城市」后,「销售额」随当前行变化,而「全局销售额」在所有城市行和省份小计行中始终为 18,193,326。这说明该字段固定按全局粒度计算,不受省份、城市展示维度影响。
「总额百分比」等于当前行销售额除以 18,193,326。例如,东城区销售额为 2,113,711,占比为 11.62%;北京市小计销售额为 4,290,460,占比为 23.58%。同一省份下城市占比之和等于该省份小计占比,所有省份小计相加为 100%。
场景 4:区域品类销售额与均值差异
业务需求
计算各区域中,不同品类销售额与该区域平均品类销售额的差异。
应用价值
区域平均销售额是按「区域」粒度锁定的统一基准。即使图表展开到品类,仍可直接识别各品类高于或低于所在区域平均水平,适用于品类结构诊断和区域经营复盘。
推荐 LOD 表达式
{ FIXED [区域]: AVG({ FIXED [区域], [品类]: SUM([销售额]) }) }
逻辑解释:
- 内层
FIXED [区域], [品类]先计算每个区域中各品类的销售额合计。 - 外层
FIXED [区域]再对区域内各品类的销售额合计取平均值,得到区域平均品类销售额。 - 当前图表粒度下的品类销售额减去该平均值,即可判断品类表现高于或低于区域平均水平。
操作步骤
-
新建 LOD 字段「区域平均销售额」
在字段区域点击「+ > 新建 LOD 字段」,按以下方式配置:
- 字段名称:
区域平均销售额 - 外层 LOD 类型:
FIXED - 外层指定维度:
区域 - 外层计算内容:
嵌套 LOD > 平均值 - 内层 LOD 类型:
FIXED - 内层指定维度:
区域、品类 - 内层计算内容:
普通聚合 > 求和 > 销售额
确认预览表达式为
{ FIXED [区域]: AVG({ FIXED [区域], [品类]: SUM([销售额]) }) },点击「确定」。
- 字段名称:
-
新建计算字段「与区域均值差异」
在字段区域点击「+ > 新建计算字段」,按以下方式配置:
- 字段名称:
与区域均值差异 - 字段类型:
数值 - 公式:
SUM([销售额]) - SUM([区域平均销售额])
- 字段名称:
-
绘制图表
- 将「区域」和「品类」拖入维度区,区域应位于品类之前。
- 将「区域平均销售额」「销售额」和「与区域均值差异」拖入数值区。
- 可为「与区域均值差异」配置正负箭头或条件格式,突出高于、低于平均值的品类。
- 保存卡片,即可查看各区域品类销售额偏离平均值的情况。

结果说明
结果为正值表示当前品类销售额高于区域平均销售额,负值表示低于区域平均销售额,结果为 0 表示与区域平均持平。
以华东区域为例,区域平均销售额为 1,146,357.25;家电销售额为 1,876,907,差异为 730,549.75,高于平均值;办公用品销售额为 439,329,差异为 -707,028.25,低于平均值。每个区域内所有品类的差异合计应为 0。
排除当前维度(EXCLUDE)
EXCLUDE 会从当前图表粒度中排除指定维度,使指标回退到上级粒度。本节以「省份、城市」视图为例,说明如何排除城市后得到省份销售额,作为城市占比的固定分母。
场景 5:城市销售额占所属省份比例
业务需求
计算各城市销售额占所属省份销售额的比例,识别城市对省内销售额的贡献。
应用价值
当图表展示到城市时,仍以所属省份销售额作为统一分母,避免分母随城市明细行改变。该指标适用于省内城市贡献排名、区域资源分配和城市经营结构分析。
推荐 LOD 表达式
{ EXCLUDE [城市]: SUM([销售额]) }
逻辑解释:
EXCLUDE [城市]会从当前图表的计算粒度中排除「城市」。- 当图表按「省份、城市」展示时,LOD 字段会退回到省份粒度,得到该省份全部城市销售额之和,作为城市占比的分母。
- 因此,本场景必须同时将「省份」和「城市」放入图表维度区,且省份应位于城市之前。
操作步骤
-
新建 LOD 字段「省份销售额」
在字段区域点击「+ > 新建 LOD 字段」,按以下方式配置:
- 字段名称:
省份销售额 - LOD 类型:
EXCLUDE - 指定维度:
城市 - 计算内容:
普通聚合 > 求和 > 销售额
确认预览表达式为
{ EXCLUDE [城市]: SUM([销售额]) },点击「确定」。
- 字段名称:
-
新建计算字段「城市销售额占比」
在字段区域点击「+ > 新建计算字段」,按以下方式配置:
- 字段名称:
城市销售额占比 - 字段类型:
数值 - 公式:
SUM([销售额]) / SUM([省份销售额])
- 字段名称:
-
绘制图表
- 将「省份」和「城市」拖入维度区,省份应位于城市之前。
- 将「城市销售额占比」拖入数值区。
- 将数值显示格式设置为「百分比」。
- 保存卡片,即可查看各城市在所属省份内的销售额占比。

结果说明
图表每一行表示一个城市在所属省份内的销售额占比。例如,城市占比为 52%,表示该城市贡献了所属省份 52% 的销售额。同一省份下所有城市的占比相加应为 100%。
增加计算粒度(INCLUDE)
INCLUDE 会在当前图表粒度上补充指定维度,使图表无需展示全部细分维度也能基于细粒度结果计算。本节先计算「区域 × 品类」的销售额,再对细粒度结果取最大值。
场景 6:区域最大品类销售额
业务需求
按区域汇总,计算每个区域内各品类销售额中的最大值。
应用价值
在图表不展示品类明细的情况下,仍可比较各区域内表现最好的品类销售额,用于快速识别区域的品类销售上限和经营规模。
推荐 LOD 表达式
{ INCLUDE [品类]: SUM([销售额]) }
逻辑解释:
- 图表视图粒度为「区域」,
INCLUDE [品类]会在计算时补充「品类」粒度。 - LOD 字段先计算每个「区域 × 品类」的销售额;图表再对这些值取最大值,得到每个区域的最大品类销售额。
操作步骤
-
新建 LOD 字段「区域品类销售额」
在字段区域点击「+ > 新建 LOD 字段」,按以下方式配置:
- 字段名称:
区域品类销售额 - LOD 类型:
INCLUDE - 指定维度:
品类 - 计算内容:
普通聚合 > 求和 > 销售额
确认预览表达式为
{ INCLUDE [品类]: SUM([销售额]) },点击「确定」。
- 字段名称:
-
绘制图表并设置最大值聚合
-
将「区域」拖入维度区。
-
将「区域品类销售额」拖入数值区。
-
点击数值字段,在「聚合方式」中选择「最大值」。
-
保存卡片。最终图表只保留「区域」和「区域品类销售额」两列。

-
结果说明
最终图表每行对应一个区域,展示该区域下品类销售额的最大值。例如,华北为 1,738,452,华东为 1,876,907,华南为 2,165,457。

该场景返回最大销售额数值,不返回对应的品类名称。如需识别销售额最高的品类,可先展示「区域、品类、区域品类销售额」明细并按销售额降序查看,或通过 ETL 关联筛选出与区域最大值相等的品类记录。