DAX - 2阶段加权平均值,有2种不同的权重指标

时间:2017-03-01 21:35:40

标签: focus powerpivot dax weighted-average

我有相当复杂的问题要表达。在DAX powerpivot中,我试图创建一个度量,它将在一个度量中使用基于聚合级别的两个不同的加权平均值。

问题更复杂,因为重量测量具有不同的重复级别(需要对它们应用不同的SUM)。我已经能够创建Distinct SUM Measure1和2来解决这个问题。

[Weight_1] = SUMX(DISTINCT(Table1[Level2],[SupportWeight1])
[SupportWeight1] = MAX(Table1[RevenueLevel2])

[Weight_2] = SUMX(DISTINCT(Table1[Level3],[SupportWeight2])
[SupportWeight1] = MAX(Table1[RevenueLevel3])

到目前为止一切顺利,这是必要的,因为正如您将在下面的示例中看到的那样,两个度量都需要在聚合期间进行“重复数据删除”。 每个Level2维度Weight_1是唯一的,而权重2在每个Level3维度的更高级别上是唯一的。

之后我想利用Weight_1创建加权平均值,创建新的支持列:

[Measure x Weight_1] = [Measure] * [Weight_1]

我忘了提及,权重在更高粒度(Level2和Level3)上是唯一的,但[Measure]在最低粒度上是唯一的:Level1

现在我有了创造第一加权平均值的所有东西:

[Measure Weight_1] = SUMX(Table1,[Measure x Weight_1])/SUMX(Table1,[Weight_1])

我已经完成并按预期工作。

整蛊部分现在开始了。我在想,只需创建一个下一个支持栏和最终衡量标准,我将完成“最终加权”衡量。并且它将在1,2,3级上以不同的方式表现,并且在Level4,5,6上有所不同......

所以我使用[Measure Weight_1]并创建:

[Measure Weight_1 x Weight_2] =  [Measure Weight_1] * [Weight_2]

因此最终措施:

[Measure Weight_2 over Weight_1] =SUMX(Table1, [Measure Weight_1 x Weight_2] )/SUMX(Table1,[Weight_2])

然而,它显然不起作用,这些度量是在不同的粒度上,并且它们在聚合期间不会聚集在一起。在最终衡量问题中,Level3聚合是算术平均而不是加权平均,但我期望得到与[Measure Weight_1]中相同的结果。因为weight #2具有相同的值Lvel 3,2,1。

因此,在MDX上使用Focus功能可能会对此类事情进行处理。

也许问题是专栏[Measure Weight_1 x Weight_2]也许我需要先聚合。

也许可以使用ROLLUP函数完成,但我不确定如何编写它。

我被困在这里。

尝试以编程方式重写我想要的解决方案:

Weighted Average of Measure X =
IF Dim = Level1 Then Measure
IF Dim = Level2 Then AVG(Measure)
IF Dim = Level3 Then SUM(AVG(Measure)*Weight_1) / SUM(Weight_1)
IF Dim = Level4 Then SUM(SUM(AVG(Measure)*Weight_1) / SUM(Weight_1) * Weight_2) / SUM(Weight_2)

enter image description here

0 个答案:

没有答案