跳到主要内容
版本:8.3.0

用 LOD 实现复杂业务场景

概述

LOD(Level of Detail,详细级别)字段用于让指标脱离当前图表维度,按指定粒度聚合。当业务分析需要在同一视图中同时呈现「当前维度指标」与「其他维度层级的指标」时,LOD 是最直接的实现方式。

LOD 的核心价值是将业务口径图表展示粒度分开:图表可以从省份下钻到城市,或从区域切换到品类;而“全局销售额”“省份销售额”“客户年度销售额”等指标仍按预先定义的粒度计算,不会因展示维度变化而改变口径。

使用 LOD 后,可以:

  • 固定口径:将指标锁定在客户、年度、区域或全局粒度,避免图表下钻后重复计算。
  • 稳定基准:在细粒度视图中保留全局总额、上级维度总额或同级均值,用于占比和差异分析。
  • 补充粒度:在不增加图表维度的前提下加入品类等计算粒度,完成区域内最大值等分析。

创建 LOD 字段时,可按以下原则选择类型;本文也据此归纳典型场景:

  1. 固定计算粒度(FIXED):锁定客户、年份、区域或全局粒度,计算最值、频率、全局分母和区域基准值。
  2. 排除当前维度(EXCLUDE):从当前视图粒度中移除明细维度,回退到上级粒度计算分母或基准。
  3. 增加计算粒度(INCLUDE):在当前视图粒度上补充维度,再对细粒度结果聚合。

LOD 字段的创建入口、编辑器配置、支持范围与限制,请参考 新建 LOD 字段

前置准备:新建 LOD 字段

本文所有场景均基于 LOD 复杂业务场景示例数据集 配置。下载并上传该文件后,可按后续步骤复现各场景。

在进入具体场景前,请确保已掌握以下通用操作:

  1. 在卡片编辑页的数据集字段区域,点击字段区域右侧的「+」,选择「新建 LOD 字段」。
  2. 配置字段名称、LOD 类型(FIXED / INCLUDE / EXCLUDE)、指定维度与计算内容。
  3. 确认右侧「预览表达式」符合预期后,点击「确定」。
  4. 将生成的 LOD 字段拖入数值区,或与其他字段组合为计算字段。
说明
  • FIXED 可不指定维度,表示按全局范围计算。
  • INCLUDE 与 EXCLUDE 必须指定维度。
  • LOD 字段类型为数值,支持在计算字段中嵌套或组合使用。
  • 同一卡片可以使用多个 LOD 字段;每个字段按各自定义的粒度独立计算。
  • 创建 LOD 字段后,可通过增加或移除图表维度,验证指标是否保持预期口径。

LOD 字段创建通则

  1. 明确业务口径:先判断指标应在哪个维度层级计算,再决定图表如何展示。需要固定维度用 FIXED,需要在视图维度上增加维度用 INCLUDE,需要排除维度用 EXCLUDE。
  2. 新建 LOD 字段:在卡片编辑页的数据集字段区域,点击「+ > 新建 LOD 字段」,填写字段名称、选择 LOD 类型、指定维度与计算内容。
  3. 确认预览表达式:右侧预览表达式应与业务逻辑一致,例如 { FIXED [区域]: AVG([销售额]) }
  4. 组合使用(可选):如需占比、差异、计数等二次计算,可将 LOD 字段放入新建计算字段中。
  5. 拖入绘制区:将维度与 LOD 字段(或基于 LOD 的计算字段)拖入对应绘制区,调整显示格式后保存卡片。

固定计算粒度(FIXED)

FIXED 将指标锁定在指定维度上计算,不随图表的当前维度改变。它适用于“客户年度销售额”“年度购买频率”“全局销售额”等需要稳定业务口径的指标。

场景 1:客户年度销售额最大值

业务需求

先按「客户 ID × 年份」汇总销售额,再按客户 ID 取各年度销售额中的最大值。

应用价值

该指标适用于评估客户历史年度销售峰值,并将当年销售额与历史峰值对比,辅助客户分层、目标制定和业绩复盘。

推荐 LOD 表达式

{ FIXED [客户ID]: MAX({ FIXED [客户ID], [日期(年)]: SUM([销售额]) }) }

逻辑解释

  • 内层 FIXED [客户ID], [日期(年)] 先计算「每个客户每年」的销售额合计。
  • 外层 FIXED [客户ID] 再对每个客户取上述年度合计中的最大值。

操作步骤

  1. 新建年度粒度字段「日期(年)」

    在字段区域点击「+ > 新建计算字段」,按以下方式配置:

    • 字段名称:日期(年)
    • 字段类型:日期
    • 公式:DATE_TRUNC('year', [日期])

    该公式会将同一年度内的日期统一转换为该年度的首日。例如,2024-03-152024-12-31 都返回 2024-01-01,因此可作为按年汇总的 LOD 维度。保存后,确认「日期(年)」可作为维度字段选择。

  2. 新建嵌套 LOD 字段「客户年度销售额最大值」

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

    2. 外层 LOD 类型选择「FIXED」,指定维度选择「客户 ID」;外层计算内容选择「嵌套 LOD」,聚合方式选择「最大值」。

      内层 LOD 类型选择「FIXED」,指定维度选择「客户 ID」和「日期(年)」;内层计算内容选择「普通聚合 > 求和 > 销售额」。

      确认预览表达式为 { FIXED [客户ID]: MAX({ FIXED [客户ID], [日期(年)]: SUM([销售额]) }) },点击「确定」。

  3. 绘制图表

    • 将「客户 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. 复用年度粒度字段「日期(年)」

    本场景使用场景 1 已创建的「日期(年)」字段作为年度粒度。该字段类型为日期,公式为:

    DATE_TRUNC('year', [日期])

    若尚未创建该字段,请先按场景 1 的步骤完成创建。

  2. 新建 LOD 字段「年度购买频率」

    在字段区域点击「+ > 新建 LOD 字段」,按以下方式配置:

    • 字段名称:年度购买频率
    • LOD 类型:FIXED
    • 指定维度:客户ID日期(年)
    • 计算内容:普通聚合 > 去重计数 > 订单ID

    确认预览表达式为 {FIXED [客户ID], [日期(年)] : CNT_DISTINCT([订单ID])},点击「确定」。

  3. 绘制图表

    • 将「客户 ID」和「品类」拖入维度区。
    • 将「日期(年)」拖入对比区,并按年展开,作为年度展示维度。
    • 将「年度购买频率」拖入数值区,聚合方式选择「最大值」。

结果说明

图表增加「品类」展示维度后,同一客户、同一年在不同品类行中仍显示相同的年度购买频率。

例如,C001 在 2023 年的家电、家具、技术和办公用品行均为 126;2024 年均为 130;2025 年均为 84。这说明该指标始终按「客户 ID × 年份」粒度计算,不受图表中品类展示维度的影响。

场景 3:销售额占全局总额百分比

业务需求

计算各省、市销售额占全局销售额的比例,并在省份小计行展示该省份销售额的全局占比。

应用价值

该指标可统一衡量城市、省份等不同层级对全局销售额的贡献,适用于区域贡献排名、销售结构分析和目标完成贡献分析。

推荐 LOD 表达式

{ FIXED : SUM([销售额]) }

FIXED 不指定维度时按全局粒度聚合。「全局销售额」作为固定分母,当前图表维度下的销售额作为分子;因此城市行展示城市占比,省份小计行展示省份占比。

操作步骤

  1. 新建 LOD 字段「全局销售额」

    在字段区域点击「+ > 新建 LOD 字段」,按以下方式配置:

    • 字段名称:全局销售额
    • LOD 类型:FIXED
    • 指定维度:留空
    • 计算内容:普通聚合 > 求和 > 销售额

    确认预览表达式为 { FIXED : SUM([销售额]) },点击「确定」。

  2. 新建计算字段「总额百分比」

    在字段区域点击「+ > 新建计算字段」,按以下方式配置:

    • 字段名称:总额百分比
    • 字段类型:数值
    • 公式:
    SUM([销售额]) / SUM([全局销售额])

  3. 绘制图表

    • 将「省份」和「城市」拖入维度区,省份应位于城市之前。
    • 将「总额百分比」「销售额」和「全局销售额」拖入数值区。
    • 将「全局销售额」的聚合方式设为「最大值」,避免在城市行或小计行重复累加。
    • 将数值显示格式设置为「百分比」。
    • 开启省份小计。

结果说明

图表展开「省份、城市」后,「销售额」随当前行变化,而「全局销售额」在所有城市行和省份小计行中始终为 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 [区域] 再对区域内各品类的销售额合计取平均值,得到区域平均品类销售额。
  • 当前图表粒度下的品类销售额减去该平均值,即可判断品类表现高于或低于区域平均水平。

操作步骤

  1. 新建 LOD 字段「区域平均销售额」

    在字段区域点击「+ > 新建 LOD 字段」,按以下方式配置:

    • 字段名称:区域平均销售额
    • 外层 LOD 类型:FIXED
    • 外层指定维度:区域
    • 外层计算内容:嵌套 LOD > 平均值
    • 内层 LOD 类型:FIXED
    • 内层指定维度:区域品类
    • 内层计算内容:普通聚合 > 求和 > 销售额

    确认预览表达式为 { FIXED [区域]: AVG({ FIXED [区域], [品类]: SUM([销售额]) }) },点击「确定」。

  2. 新建计算字段「与区域均值差异」

    在字段区域点击「+ > 新建计算字段」,按以下方式配置:

    • 字段名称:与区域均值差异
    • 字段类型:数值
    • 公式:
    SUM([销售额]) - SUM([区域平均销售额])

  3. 绘制图表

    • 将「区域」和「品类」拖入维度区,区域应位于品类之前。
    • 将「区域平均销售额」「销售额」和「与区域均值差异」拖入数值区。
    • 可为「与区域均值差异」配置正负箭头或条件格式,突出高于、低于平均值的品类。
    • 保存卡片,即可查看各区域品类销售额偏离平均值的情况。

结果说明

结果为正值表示当前品类销售额高于区域平均销售额,负值表示低于区域平均销售额,结果为 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 字段会退回到省份粒度,得到该省份全部城市销售额之和,作为城市占比的分母。
  • 因此,本场景必须同时将「省份」和「城市」放入图表维度区,且省份应位于城市之前。

操作步骤

  1. 新建 LOD 字段「省份销售额」

    在字段区域点击「+ > 新建 LOD 字段」,按以下方式配置:

    • 字段名称:省份销售额
    • LOD 类型:EXCLUDE
    • 指定维度:城市
    • 计算内容:普通聚合 > 求和 > 销售额

    确认预览表达式为 { EXCLUDE [城市]: SUM([销售额]) },点击「确定」。

  2. 新建计算字段「城市销售额占比」

    在字段区域点击「+ > 新建计算字段」,按以下方式配置:

    • 字段名称:城市销售额占比
    • 字段类型:数值
    • 公式:
    SUM([销售额]) / SUM([省份销售额])

  3. 绘制图表

    • 将「省份」和「城市」拖入维度区,省份应位于城市之前。
    • 将「城市销售额占比」拖入数值区。
    • 将数值显示格式设置为「百分比」。
    • 保存卡片,即可查看各城市在所属省份内的销售额占比。

结果说明

图表每一行表示一个城市在所属省份内的销售额占比。例如,城市占比为 52%,表示该城市贡献了所属省份 52% 的销售额。同一省份下所有城市的占比相加应为 100%。

增加计算粒度(INCLUDE)

INCLUDE 会在当前图表粒度上补充指定维度,使图表无需展示全部细分维度也能基于细粒度结果计算。本节先计算「区域 × 品类」的销售额,再对细粒度结果取最大值。

场景 6:区域最大品类销售额

业务需求

按区域汇总,计算每个区域内各品类销售额中的最大值。

应用价值

在图表不展示品类明细的情况下,仍可比较各区域内表现最好的品类销售额,用于快速识别区域的品类销售上限和经营规模。

推荐 LOD 表达式

{ INCLUDE [品类]: SUM([销售额]) }

逻辑解释

  • 图表视图粒度为「区域」,INCLUDE [品类] 会在计算时补充「品类」粒度。
  • LOD 字段先计算每个「区域 × 品类」的销售额;图表再对这些值取最大值,得到每个区域的最大品类销售额。

操作步骤

  1. 新建 LOD 字段「区域品类销售额」

    在字段区域点击「+ > 新建 LOD 字段」,按以下方式配置:

    • 字段名称:区域品类销售额
    • LOD 类型:INCLUDE
    • 指定维度:品类
    • 计算内容:普通聚合 > 求和 > 销售额

    确认预览表达式为 { INCLUDE [品类]: SUM([销售额]) },点击「确定」。

  2. 绘制图表并设置最大值聚合

    • 将「区域」拖入维度区。

    • 将「区域品类销售额」拖入数值区。

    • 点击数值字段,在「聚合方式」中选择「最大值」。

    • 保存卡片。最终图表只保留「区域」和「区域品类销售额」两列。

结果说明

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

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