powerbi - 在 SUMX 和 CALCULATE 中使用 ALL 有什么区别?
问题描述
在此示例中(计算类别销售额与总销售额的比率):https ://docs.microsoft.com/en-us/dax/all-function-dax#example-1
公式为:
=
SUMX(
ResellerSales_USD,
ResellerSales_USD[SalesAmount_USD]
)
/ SUMX(
ALL( ResellerSales_USD ),
ResellerSales_USD[SalesAmount_USD]
)
在此示例中(计算本年度产品销售额与总销售额的比率):https ://docs.microsoft.com/en-us/dax/all-function-dax#example-2
公式为:
=
SUMX(
ResellerSales_USD,
ResellerSales_USD[SalesAmount_USD]
)
/ CALCULATE(
SUM( ResellerSales_USD[SalesAmount_USD] ),
ALL( DateTime[CalendarYear] )
)
在第二个示例中,为什么我们不能使用类似于示例 1 的 SUMX ALL 来删除日历年过滤器?例子:
=
SUMX(
ResellerSales_USD,
ResellerSales_USD[SalesAmount_USD]
)
/ SUMX(
ALL( DateTime[CalendarYear] ),
ResellerSales_USD[SalesAmount_USD]
)
同样,可以使用 CALCULATE 将第一个示例重写为:
=
SUMX(
ResellerSales_USD,
ResellerSales_USD[SalesAmount_USD]
)
/ CALCULATE(
SUM( ResellerSales_USD[SalesAmount_USD] ),
ALL( ResellerSales_USD )
)
解决方案
编码
=
SUMX(
ResellerSales_USD,
ResellerSales_USD[SalesAmount_USD]
)
/ SUMX(
ALL( DateTime[CalendarYear] ),
ResellerSales_USD[SalesAmount_USD]
)
将不起作用,因为捐赠者处的 SUMX 正在迭代列 DateTime[CalendarYear],因此不存在使 ResellerSales_USD[SalesAmount_USD] 列可访问的行上下文。此外,Date 和 ResellerSales 之间的关系是一对多的,不可能使用 RELATED,但需要 RELATEDTABLE 和聚合器,例如
=
SUMX(
ResellerSales_USD,
ResellerSales_USD[SalesAmount_USD]
)
/ SUMX(
ALL( DateTime[CalendarYear] ),
SUMX( RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])
)
而这个等效于第一个示例
=
SUMX(
ResellerSales_USD,
ResellerSales_USD[SalesAmount_USD]
)
/ CALCULATE(
SUM( ResellerSales_USD[SalesAmount_USD] ),
ALL( ResellerSales_USD )
)
推荐阅读
- php - PHP用户会话不在选项卡之间持续存在
- reactjs - 如何在 next-js 中正确导入 scss 文件?
- python - 对整个数据集进行训练时结果更差
- node.js - Nodejs - rethinkdb 未处理的拒绝 ReqlDriverError:`run` 的第一个参数必须是打开的连接
- reactjs - 将其存储在 useRef Hook 中并将可变值保存在 '.current' 属性中
- macos - 无法在 docker (mac) 中访问 jupyter notebook
- json - 循环 json 对象并用 React 显示数据?
- r - 如何将此邻接矩阵转换为图形对象?
- javascript - 重定向到主页
- django - Apache 上的 SMTPAuthenticationError 但标准服务器上没有。DJANGO 和 Apache2