首页 > 解决方案 > 如何从 powerbi 中的 RANKX 函数中删除过滤器?

问题描述

我一直在努力从 dax 的排名计算中删除过滤器。

我有一个样本表,其中包含按各自部门、类别、子类别、母公司和母品牌划分的单个项目的每个商店的单位。

testrank = RANKX(ALLSELECTED(Sales), CALCULATE(SUM(Sales[UnitsPerStore])),,ASC)

每个商店的单位与排名

正如你从上面看到的,排名是按照我的预期工作的。但是,我希望最终用户能够过滤到他们感兴趣的特定品牌,而不会影响排名。下面我过滤到 Carvet 的 ParentBrand。排名会根据视觉自动改变:

卡维尔过滤

因此,最终用户应用的唯一要影响计算的过滤器是部门、类别和子类别。因此,例如,如果有人查找特定的 UPC,他们将根据部门/类别/子类别的选择看到该 upc 的排名。

我尝试在函数中使用 ALLEXCEPT 但排名错误:

Rank(allexcept) = RANKX(ALLEXCEPT(Sales, Sales[CorporateDepartment], Sales[Category], Sales[SubCategory]), CALCULATE(SUM(Sales[UnitsPerStore])),,ASC)

排名与 ALLEXCEPT

标签: powerbidax

解决方案


看起来我们在方法 2 和 3 上很接近。例如,在这两种情况下,当我过滤父品牌时,排名与我在类别中所做的选择保持不变(这是我想要的)。然而,似乎排名在重复,几乎就像它有一个 group by 应用于它:

method2 = RANKX(FILTER(ALL(Sales), Sales[CorporateDepartment] = max(Sales[CorporateDepartment]) && Sales[Category] = max(Sales[Category]) && Sales[SubCategory]=max(Sales[SubCategory])), CALCULATE(MAX(Sales[UnitsPerStore])),, ASC,Dense)


method3 = RANKX(ALLEXCEPT(Sales, Sales[CorporateDepartment], Sales[Category], Sales[SubCategory]), CALCULATE(Sum(Sales[UnitsPerStore])),,ASC,Dense)

方法 2 和 3 结果


推荐阅读