dax - MAXX 引用测量 - 并不总是给出正确的结果
问题描述
我有一个如下所示的销售额度量:
Sales Amount =
SUMX(
'Online Sales',
'Online Sales'[Sales Quantity] * 'Online Sales'[Unit Price] - 'Online Sales'[Discount Amount]
)
当我创建引用 [Sales Amount] 的 Max Sales 度量时,当我处于层次结构的多个级别时,我并不总是得到正确的结果。
错误结果:
Max Daily Sales =
MAXX(
'Online Sales',
[Sales Amount]
)
)
但是,这确实给出了正确的结果:
Max Daily Sales =
MAXX(
'Online Sales',
SUMX(
'Online Sales',
'Online Sales'[Sales Quantity] * 'Online Sales'[Unit Price] - 'Online Sales'[Discount Amount]
)
)
他们似乎都在做同样的事情。有谁知道为什么结果会不同?
数据模型如下所示:
解决方案
当您在另一个度量中调用一个度量时,它会被隐式评估,就好像它被包裹在一个CALCULATE
.
请允许我引用 DAX 权威指南(第 5 章,第 114-115 页)
每当您从另一个表达式中调用度量时,DAX 都会自动将该度量封装在CALCULATE中。
[...]
调用度量时会自动发生上下文转换,无法避免。这意味着在调用度量时避免上下文转换的唯一方法是扩展其代码。
我确定您记得,上下文转换采用行上下文并将其转换为度量的过滤器上下文。因此,当您将其称为度量时,它不是在同一张表上求和,而是根据该行中的其他值进行过滤。
推荐阅读
- python - 我不知道为什么会出现“TypeError: '<' 在 'str' 和 'int' 的实例之间不支持”错误
- postgresql - 分布 PostgreSQL 游标中的记录数
- facebook - 我的 Facebook 测试用户的帖子中没有喜欢/评论按钮。这是为什么?
- sql - 使用假脱机时如何删除列具有空值的空格。我正在使用 Toad 和 Oracle 11g
- electron - 无法将 Electron appx 应用上传到 MS 应用商店
- python - 如何调用基于类的视图 CBV 中定义的函数/方法?
- erlang - 理解 Erlang 中的选择性接收
- javascript - 在谷歌地图上移动标记,其纬度/经度值超过小数点后 5 位
- java - 修改json字符串中的属性值
- c# - 登录表单中的提交按钮不适用于我的基于 asp net MVC 的注册和登录 application.signup 工作但登录有一些问题