我正在研究Power中的一个模型,该模型有两个数据集:
Set_1 (只是每个组名称的列表)
Group:
1
2
3和Set_2,一个不同数据集中的每个组的一组值:
Group: Value:
1 10
1 20
1 -7
2 100
2 -25
3 45
3 15
1 3表是按组关联的。我想在Set_1上创建一个度量,它显示Set_2中按组划分的值的总和。我可以使用以下DAX公式来实现这一点:
GroupSum = CALCULATE(SUMX(Set_2, Set_2[Value]))看起来像这样
Group: GroupSum:
1 26
2 75
3 60但我不明白为什么CALCULATE函数不接受任何过滤器上下文作为参数,它在这个实例中的工作方式是这样的。如果没有CALCULATE函数,
GroupSum = SUMX(Set_2, Set_2[Value])看起来是这样的:
Group: GroupSum:
1 161
2 161
3 161这很有道理。我只需要帮助理解计算函数是如何工作的,特别是当它没有传递任何筛选器参数时。
编辑:答案在于“上下文转换”的概念,如下所述。
发布于 2018-07-16 21:07:14
使用CALCULATE函数使DAX执行上下文转换。
在将其筛选器参数应用于原始筛选上下文之前,计算将所有现有行上下文转换为等效的筛选器上下文。
有关这方面的更多细节,请查看我上面引用的网站:
在您的示例中,当您使用Group时,每行的CALCULATE列中的值充当一个筛选器,就像您编写了类似于CALCULATE(SUM(Set_2[Value]), Set_2[Group] = 1)的东西一样。即使没有显式筛选器,行上下文也充当过滤器。
https://stackoverflow.com/questions/51369430
复制相似问题