DAX TOPN 筛选器未返回足够的行
DAX TOPN Filter Not Returning Enough Rows
我正在尝试根据平均贷款金额度量将 TOPN() 视觉过滤器应用于 Power BI sheet。我想查看平均贷款金额最高的前 5 名员工,忽略发放了 4 笔或更少贷款的员工。
我 运行 遇到的问题是我没有返回 5 行,即使我选择了前 5 行。我必须调整 "TOPN" 参数(在视觉效果)包含超过 5 个,只是为了获得 5 行。
这似乎是因为当我同时拥有 TOP5 平均值 和 贷款计数 > 4 个过滤器时,两者都没有更新;也就是说,我可以根据平均参数找到前 5 行,但是一旦包含 "loan count > 4" 条件,前 5 行中的一些就会消失,它们是 not 换成原来的亚军5.
过去,当我为平均值放置前 5 个过滤器时,什么也没有出现,这是因为所有前 5 个条目的贷款计数都低于 5。一旦我放宽了 "TOPN" 条件"TOP 52," 我有 5 个条目可见。
有谁知道为什么会发生这种情况以及如何解决它以便我总是返回 5 行?
编辑添加: 数据示例,请click here。请注意,应过滤掉任何贷款数为 4 或更少的员工。我在 PowerBI 中创建了筛选器,因为数据集是动态的,筛选结果也是动态的。
根本问题是您将 2 个过滤器应用于同一可视化:
- 您只想包括贷款数为 5 或更多的员工
- 其中,您想要平均贷款金额最高的 5 名员工
Power BI 独立应用两个过滤器。因此,它采用平均贷款金额最高的 5 名员工,然后删除其中 3 名,因为他们的贷款数少于 5。我可以想象这对于使用 Top N 过滤器和另一个过滤器的人来说是一个常见问题。
解决这个问题的一种方法(我不认为这是唯一甚至最好的方法)是在计算平均值之前考虑贷款数量。
例如,假设您有以下两个度量和以下数据:
Loan Count = DISTINCTCOUNT(Employee[Loan Number])
Avg Loan Amt = AVERAGE(Employee[Loan Amount])
从图中可以看出,Liz、Montgomery 和 Oscar 在前 5 名中,但他们名下只有 3 笔贷款。
接下来,我们可以创建一个新度量,在计算平均贷款金额之前检查贷款计数。如果贷款数未达到阈值,则您不关心它们的平均值。
*Filtered Avg Loan Amt = IF([Loan Count] < 5, BLANK(), [Avg Loan Amt])
这将创建以下结果。请注意,Liz、Montgomery 和 Oscar 现在都没有计算平均值,因为他们没有足够的贷款。
现在,您不必在 table 上显示过滤后的平均贷款金额度量,但您现在可以在前 N 个视觉过滤器中使用该度量,它本身会过滤您的 table 贷款数量足够多的前 5 名员工。
请注意,在我的过滤器中,我只有 1 个过滤器(在过滤后的平均贷款金额上)。我也不需要过滤到 5 或更大的贷款数。这导致以下前 5 名员工:
希望这能解决您遇到的问题!
不相关的旁注:如果您在几个地方使用这个阈值 5,我建议从外部来源(包括可能断开连接的 table)获取数字,而不是在度量本身中硬编码 5。这样,如果有人认为 5 不是正确的阈值,您只需更新它的一个位置,而不用遍历所有度量来寻找数字 5。这里有一篇关于使用断开连接 table 的文章这样最终用户就可以自己选择阈值(尽管对于您的情况来说肯定是矫枉过正):https://powerpivotpro.com/2013/08/moving-averages-controlled-by-slicer/
我正在尝试根据平均贷款金额度量将 TOPN() 视觉过滤器应用于 Power BI sheet。我想查看平均贷款金额最高的前 5 名员工,忽略发放了 4 笔或更少贷款的员工。
我 运行 遇到的问题是我没有返回 5 行,即使我选择了前 5 行。我必须调整 "TOPN" 参数(在视觉效果)包含超过 5 个,只是为了获得 5 行。
这似乎是因为当我同时拥有 TOP5 平均值 和 贷款计数 > 4 个过滤器时,两者都没有更新;也就是说,我可以根据平均参数找到前 5 行,但是一旦包含 "loan count > 4" 条件,前 5 行中的一些就会消失,它们是 not 换成原来的亚军5.
过去,当我为平均值放置前 5 个过滤器时,什么也没有出现,这是因为所有前 5 个条目的贷款计数都低于 5。一旦我放宽了 "TOPN" 条件"TOP 52," 我有 5 个条目可见。
有谁知道为什么会发生这种情况以及如何解决它以便我总是返回 5 行?
编辑添加: 数据示例,请click here。请注意,应过滤掉任何贷款数为 4 或更少的员工。我在 PowerBI 中创建了筛选器,因为数据集是动态的,筛选结果也是动态的。
根本问题是您将 2 个过滤器应用于同一可视化:
- 您只想包括贷款数为 5 或更多的员工
- 其中,您想要平均贷款金额最高的 5 名员工
Power BI 独立应用两个过滤器。因此,它采用平均贷款金额最高的 5 名员工,然后删除其中 3 名,因为他们的贷款数少于 5。我可以想象这对于使用 Top N 过滤器和另一个过滤器的人来说是一个常见问题。
解决这个问题的一种方法(我不认为这是唯一甚至最好的方法)是在计算平均值之前考虑贷款数量。
例如,假设您有以下两个度量和以下数据:
Loan Count = DISTINCTCOUNT(Employee[Loan Number])
Avg Loan Amt = AVERAGE(Employee[Loan Amount])
从图中可以看出,Liz、Montgomery 和 Oscar 在前 5 名中,但他们名下只有 3 笔贷款。
接下来,我们可以创建一个新度量,在计算平均贷款金额之前检查贷款计数。如果贷款数未达到阈值,则您不关心它们的平均值。
*Filtered Avg Loan Amt = IF([Loan Count] < 5, BLANK(), [Avg Loan Amt])
这将创建以下结果。请注意,Liz、Montgomery 和 Oscar 现在都没有计算平均值,因为他们没有足够的贷款。
现在,您不必在 table 上显示过滤后的平均贷款金额度量,但您现在可以在前 N 个视觉过滤器中使用该度量,它本身会过滤您的 table 贷款数量足够多的前 5 名员工。
请注意,在我的过滤器中,我只有 1 个过滤器(在过滤后的平均贷款金额上)。我也不需要过滤到 5 或更大的贷款数。这导致以下前 5 名员工:
希望这能解决您遇到的问题!
不相关的旁注:如果您在几个地方使用这个阈值 5,我建议从外部来源(包括可能断开连接的 table)获取数字,而不是在度量本身中硬编码 5。这样,如果有人认为 5 不是正确的阈值,您只需更新它的一个位置,而不用遍历所有度量来寻找数字 5。这里有一篇关于使用断开连接 table 的文章这样最终用户就可以自己选择阈值(尽管对于您的情况来说肯定是矫枉过正):https://powerpivotpro.com/2013/08/moving-averages-controlled-by-slicer/