当我尝试在 VS 2008 OLAP 项目中创建
DistinctCount
度量时,它会在单独的组而不是我想要的原始组中创建它。
因此,我分两步创建了它。
我在所需组中创建了没有聚合的度量,然后手动将 AggregationFunction
设置为 DistinctCount
。
然后我已经构建了项目并部署了。除了 OLAP 项目中的警告之外,一切正常。我的测量值用蓝色波浪线突出显示,上面写着:
将不同的计数度量分成单独的度量组
我为什么要这样做?忽略此警告是否安全?
参考微软白皮书“Analysis Services Distinct Count Optimization”:
作为非重复计数计算的快速高级概述,非重复计数度量的设计与其他度量(例如总和、计数、最大值、最小值等)不同。与其他指标相比,不同的计数很难汇总,因为前者不是完全相加的。因此,绝大多数非重复计数查询是在运行时以叶级别粒度计算的,特别是非重复计数度量的唯一值。这意味着 Analysis Services 存储引擎会解析源列并将其视为已按每行隐式计数进行分组的属性。
后来他们提到:
如前所述,这是因为非重复计数度量在架构上与其他度量不同。您不能拥有多个不同的度量,因为您无法通过多种度量对 MEASURE GROUP 进行排序。 非重复计数度量的粒度级别也低于 SUM 和 COUNT 度量。通过向包含非重复计数度量的度量组添加其他度量,所有其他度量将与非重复计数度量具有相同的粒度,导致低效的数据结构和次优查询。为了执行非重复计数聚合,每个非重复计数度量仍保留其唯一的维度键属性组合。
您可以从以下链接下载白皮书:
摘自本书 应用 Microsoft Analysis Services 2005 以及 Microsoft 商业智能平台,第 149 页:
当您指示需要不同计数度量时,多维数据集设计器会自动为您创建一个新度量组。虽然您可以在度量值组中定义单个不同计数度量值,但有充分的理由将其移动到单独的组中。首先,当您向度量值组添加非重复计数度量值时,整个度量值组将被视为不可聚合。这需要更多基于磁盘的查询,从而降低了服务器端缓存的有效性。其次,当存在非重复计数度量时设计聚合将导致更大的聚合,因为非重复计数度量将在内部表示为级别。该级别将参与所有聚合,并且通常相当大。最后,度量值组记录必须按非重复计数字段排序,并且必须在 SSAS 查询事实表时完成排序(在 SELECT 语句中添加 ORDER BY 条件)。由于此操作对于大型事实表来说可能非常繁重,因此在向多维数据集添加不同计数度量之前,您应该仔细考虑成本效益比。