将数值列的 SummarizeBy 设置为 None
概述
此最佳实践规则会识别可见的数值列(Int64、Decimal、Double),其默认聚合行为(SummarizeBy)不为 None。 大多数数值列不应被自动聚合,因为对 ID、非可加语境下的数量或代码等数值求和会产生毫无意义的结果。
类别:格式设置
严重性:高(3)
适用于
- 数据列
- 计算列
- 计算表格的列
为什么这很重要
对不合适的列进行默认聚合会带来严重问题:
- 错误分析:用户会得到毫无意义的汇总(例如 CustomerID 的求和等)
- 误导性的 Dashboard:Visual 默认会显示错误的数值
- 用户困惑:用户必须在每个 Visual 中手动更改聚合方式
- 错误决策:基于错误的自动聚合做出业务决策
- 数据可信度:用户会对模型和数据失去信任
常见的“不应聚合”列包括 ID、键、代码、比率、百分比,以及不可加的数量。
此规则何时触发
当某列同时满足以下 ALL 项条件时,此规则会触发:
(DataType = "Int64" or DataType="Decimal" or DataType="Double")
and
SummarizeBy <> "None"
and not (IsHidden or Table.IsHidden)
换句话说:可见的数值列,且其汇总方式不是“None”。
如何修复
自动修复
此规则提供自动修复:
SummarizeBy = AggregateFunction.None
应用方法:
- 在 Best Practice Analyzer 中选择被标记的对象
- 单击 Apply Fix
手动修复
- 在 TOM Explorer 中找到该列
- 在 Properties 窗格中,找到 Summarize By
- 将 Sum、Average、Min、Max、Count 或 DistinctCount 改为 None
- 保存更改
常见原因
原因 1:默认导入行为
导入时,数值列默认使用 Sum 聚合。
原因 2:未审查列设置
模型部署时未检查列的聚合设置。
原因 3:ID 列未隐藏
数值型 ID 列保持可见,并沿用默认的 Sum 聚合。
示例
修复前
Column: CustomerID
DataType: Int64
SummarizeBy: Sum
结果:Visual 显示“CustomerID 的总和:12,456,789”(毫无意义的数字)
修复后
Column: CustomerID
DataType: Int64
SummarizeBy: None
结果:Visual 需要显式聚合,否则会逐个显示 Customer ID
兼容级别
这个规则适用于兼容级别为 1200 及以上的模型。