使用 REMOVEFILTERS 进行计算结果由切片器或过滤器窗格更改

问题描述 投票:0回答:1

TL;前面的博士:

使用 REMOVEFILTERS 进行正常计算,当应用了视觉级别过滤器时,它会按预期工作,会发生奇怪的事情(不可能的值)AND使用切片器(如取消选择值),但可以正常使用在其自己的。发生什么事了?


我会笼统地问这个问题,因为如果不上传充满公司机密的 200 MB 文件,我真的无法找到具体的方法,所以请耐心等待...

最终我试图为数据透视表创建一个相当复杂的度量,它将返回最低(第三)级别的平均值如果有数据,如果没有则返回类别的平均值向上两个级别,如果没有任何数据,它将根据所有数据进行回归。例如,您有按大洲、国家/地区和州划分的销售额,如果特定州和国家/地区没有任何销售额,则返回该大洲的平均值,如果该大洲没有销售额,则进行回归。我知道,这很简单,但幸运的是,这并不完全是我的问题。如果我能让 DAX 始终忽略枢轴水平,我就可以解决更大的问题......


作为第一步,我创建了一个函数,它只返回顶层的值/表行数,无论它位于哪个级别的数据透视表上:

CALCULATE(COUNTA(Sales[Id])+0), REMOVEFILTERS(Sales[Country], Sales[State]))

到目前为止一切顺利。将其放入正常的枢轴中,它会工作得很好,但奇怪的部分来了:

我在这个枢轴上对一些不相关的领域有视觉级别的过滤器;没什么花哨的,只是数据质量的东西,column_x > 0,column_y < 300, that sort of stuff. I also have a slicer set on the top level, "Continents" in the example. If I deselect 带有切片器的“大陆”(即除一个之外的所有内容),值发生变化并且变得奇怪 - 我不知道它们到底显示了什么,但它们似乎恢复到接近(但不完全是!)普通 COUNTA 的状态,因此它们不再返回最低枢轴级别没有数据的计数,而只返回有数据的计数。如果我在切片器上选择全部,它会再次工作。如果我从过滤器窗格中删除视觉过滤器,它也可以工作。

至于值,我设法找到了一个可以手动检查的值,并且在最低的应用所有过滤器级别时,标准计数返回 6。确实有 6 行匹配。损坏的函数返回 7。没有任何过滤器组合可以返回 7 - 删除任何组合,您必须有数百个组合。我能看到的唯一模式是 CALCULATE 函数总是返回比正常 COUNTA 至少多 1 的值,但仅此而已。

有人对 REMOVEFILTERS 实际做了什么导致这种情况有更深入的了解吗?我想我明白了:它删除了一个过滤器。我有数据透视表,这些值由 a) 设置为数据透视表顶层“大陆”的切片器、b) 过滤器窗格上不相关的视觉过滤器和 c) 数据透视表本身的 3 个级别进行过滤。我想保留a)和b),我想删除c)中3个中的2个。上述措施可以做到这一点,除了使用切片机时。为什么?!

powerbi dax powerbi-desktop measure
1个回答
0
投票

事实证明,这是自动存在把一切搞砸的完美例子。我设法通过将大陆-国家-国家列变成三个(!)“暗淡”表,将它们链接到“事实”表来解决这个问题,并且 REMOVEFILTERS 立即开始运行。一个包含所有三列的“暗淡”表可能就足够了,但是必须在连接列(在两个表上)上完成连接,这太丑陋了,我决定只使用三列并隐藏它们。

© www.soinside.com 2019 - 2024. All rights reserved.