基于Period列唯一值计算聚合平均值并在Qlik Sense条形图中实现筛选联动的技术求助
解决基于Period条目聚合平均值的动态计算问题
看起来你核心需求是:在玩家维度([ID Player],[Player Type],[ID Game],[Player Role])下,计算每个Period行对应的加权平均值的算术平均,并且这个计算要能随筛选条件动态更新,最终得到像(83,50+86,14+86,14)/3 = 85,26这样的结果。
正确的计算公式
你可以试试这个嵌套窗口函数的写法,它能准确实现你的需求:
AVG( Sum([Weight] * [Score]) OVER ([Period],[ID Player],[Player Type],[ID Game],[Player Role]) / Sum([Weight]) OVER ([Period],[ID Player],[Player Type],[ID Game],[Player Role]) ) OVER ([ID Player],[Player Type],[ID Game],[Player Role])
公式逻辑拆解
- 内层窗口计算:先针对每个
Period + 玩家维度的组合,算出该Period对应的加权平均值(Sum(Weight*Score)/Sum(Weight))。这一步会确保同一个Period下的所有行,都会带上这个Period的加权值(比如两个属于同一Period的行,都会得到86,14)。 - 外层窗口求平均:再对玩家维度下的所有行的这个Period加权值求算术平均。这样就会把每个Period的条目都算进去,得到你需要的
(83,50+86,14+86,14)/3 = 85,26结果。
为什么之前的方法不对?
- 加
DISTINCT的写法会把重复Period的加权值去重,只计算一次86,14,导致结果变成(83,50+86,14)/2 = 84,82,不符合你的需求。 - 之前尝试的评论公式错误地取了每个Period的首个值(比如
60、97),而不是正确的加权平均值,所以结果偏差。
这个公式会自动跟随筛选条件动态更新——当你添加或移除筛选时,数据集里的Period条目会变化,加权值和最终的平均值都会自动重新计算。
内容的提问来源于stack exchange,提问作者Edoardo
相关产品推荐
相关产品推荐

