人口稀少的百分比值的“平均”聚合
Posted
技术标签:
【中文标题】人口稀少的百分比值的“平均”聚合【英文标题】:"Average" aggregation of sparsely populated percentage values 【发布时间】:2013-07-18 14:24:02 【问题描述】:我有当前已完全填充的成本中心分配数据,每天一条记录,每条记录都有一个成本中心维度键。多维数据集有一个人头计数度量(数据设置为“1”),聚合函数设置为“LastChild”。这意味着在任何给定时间段内,人头统计报告只会在成本中心统计一个人。
引入部分分配 - 一个新的衡量标准将具有分配的百分比值,允许多个并发成本中心,其中分配的总和应为 100%(“天”是细粒度级别)。我试图弄清楚如何在其他时间段内配置聚合。我认为“平均”应该可以正常工作,即在一半时间段内以 50% 分配到成本中心的人将在该期间报告为 25%。 我看到的问题是,在分配给成本中心的日期为 0% 的日子里,我的事实没有填充。举例说明:
Employee1 CostCenterA 1/1/2013 50%
Employee1 CostCenterB 1/1/2013 50%
Employee1 CostCenterA 1/2/2013 100%
Employee1 CostCenterA 1/3/2013 100%
... etc with 100% in CostCenterA for all days
上述按月报告的数据显示,分配给 CostCenterB 的比例为 50%,即使此人只分配了一天,每月的平均百分比应为 1.6%。
我想我可以在数据中生成 0% 的分配,但我的事实表会因此爆炸,所以我宁愿改变“平均”聚合如何处理人口稀少的事实中的百分比值,即平均值应根据报告期间的粒度单位数(一个月中的天数,在本例中为 0.5/31),而不是事实表中的行数 (0.5/1) 计算。这可以在 SSAS 中完成吗?
【问题讨论】:
【参考方案1】:如果具有平均分配的度量偏离了与我的事实的“稀疏性”成比例的因素,即一段时间内的天数与实际事实行的比率,则可以按如下方式进行更正:
adjusted average allocation =
(calculated average allocation) * (fact count)/(number of days in period)
我创建了两个新的隐藏度量,一个名为 [Fact Count] 的事实计数(使用 AggregateFunction “Count”的度量)和一个名为 [Days In Period Count] 的计算度量,使用表达式
COUNT(Descendants([Date].[Calendar].CurrentMember,5),INCLUDEEMPTY)
[Calendar] 是我的 Date 维度中的层次结构的名称。
最后,我添加了一个实现校正公式的计算度量:
[Measures].[Allocative Head Count]/
(
[Measures].[Days In Period Count]/[Measures].[Fact Count]
)
并将其命名为[调整后的平均分配]。我现在可以在报告中使用它,它似乎在一定程度上接近了较长时期内的平均成本中心分配。
当涉及过滤器时,[Days In Period Count] btw 的公式不适用于行总计。我为此打开了another question。
【讨论】:
以上是关于人口稀少的百分比值的“平均”聚合的主要内容,如果未能解决你的问题,请参考以下文章