首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >理解DAX计算函数

理解DAX计算函数
EN

Stack Overflow用户
提问于 2018-07-16 20:10:45
回答 1查看 751关注 0票数 1

我正在研究Power中的一个模型,该模型有两个数据集:

Set_1 (只是每个组名称的列表)

代码语言:javascript
复制
Group:
1
2
3

Set_2,一个不同数据集中的每个组的一组值:

代码语言:javascript
复制
Group:    Value:
1         10
1         20
1         -7
2         100
2         -25
3         45
3         15
1         3

表是按组关联的。我想在Set_1上创建一个度量,它显示Set_2中按组划分的值的总和。我可以使用以下DAX公式来实现这一点:

代码语言:javascript
复制
GroupSum = CALCULATE(SUMX(Set_2, Set_2[Value]))

看起来像这样

代码语言:javascript
复制
Group:    GroupSum:
1         26
2         75
3         60

但我不明白为什么CALCULATE函数不接受任何过滤器上下文作为参数,它在这个实例中的工作方式是这样的。如果没有CALCULATE函数,

代码语言:javascript
复制
GroupSum = SUMX(Set_2, Set_2[Value])

看起来是这样的:

代码语言:javascript
复制
Group:    GroupSum:
1         161
2         161
3         161

这很有道理。我只需要帮助理解计算函数是如何工作的,特别是当它没有传递任何筛选器参数时。

编辑:答案在于“上下文转换”的概念,如下所述。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-16 21:07:14

使用CALCULATE函数使DAX执行上下文转换

在将其筛选器参数应用于原始筛选上下文之前,计算将所有现有行上下文转换为等效的筛选器上下文。

有关这方面的更多细节,请查看我上面引用的网站:

理解语境转换

在您的示例中,当您使用Group时,每行的CALCULATE列中的值充当一个筛选器,就像您编写了类似于CALCULATE(SUM(Set_2[Value]), Set_2[Group] = 1)的东西一样。即使没有显式筛选器,行上下文也充当过滤器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51369430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档