Power BI技术需求:显示符合条件食材的对应食谱及过滤后总量
解决Power BI中动态展示高频食材总量及对应食谱的问题
我来帮你搞定这个需求!你已经迈出了第一步,现在只需要调整度量值来支持动态筛选,同时实现矩阵中同时展示食材总量和对应食谱的效果。
核心思路
问题的关键在于:当你在矩阵中展开食谱明细时,当前行的筛选上下文会变成「食材+单个食谱」,这时候原有的CountRecipe会返回1,导致无法正确判断食材是否符合「至少出现在2个食谱」的条件。我们需要修改度量值,让它忽略当前食谱的筛选,基于用户全局筛选后的数据集来判断食材是否合格,同时计算总量。
步骤1:创建「食材是否合格」的度量值
这个度量值用来判断当前食材在用户筛选后的数据集里,是否出现在至少2个食谱中:
IsQualifiedIngredient = VAR TotalRecipesForIngredient = CALCULATE( DISTINCTCOUNT('Table'[recipe]), ALLSELECTED('Table'[recipe]) -- 保留用户的外部筛选,忽略当前行的食谱筛选 ) RETURN IF(TotalRecipesForIngredient >= 2, 1, 0)
ALLSELECTED('Table'[recipe])的作用:保留用户对其他表(比如食谱分类表)的筛选,只移除当前行的单个食谱筛选,确保判断逻辑基于用户选择的全部有效食谱。
步骤2:创建「合格食材总用量」度量值
这个度量值只对合格食材计算总用量,并且不受当前食谱行的影响:
QualifiedIngredientTotalAmount = VAR IsQualified = [IsQualifiedIngredient] RETURN IF(IsQualified = 1, CALCULATE( SUM('Table'[amount]), ALLSELECTED('Table'[recipe]) -- 计算该食材在所有筛选后食谱中的总用量 ), BLANK() )
步骤3:配置矩阵视觉对象
按照以下步骤设置矩阵,就能实现和Excel一样的效果:
- 插入矩阵视觉对象
- 行区域:先拖入
ingredient,再拖入recipe(这样可以点击食材旁的箭头展开查看对应食谱) - 值区域:
- 拖入
QualifiedIngredientTotalAmount(显示该食材的总用量) - 可选:拖入
SUM('Table'[amount])(显示该食材在当前食谱中的用量,方便查看明细)
- 拖入
- 视觉级筛选:添加
IsQualifiedIngredient,设置为「等于1」,这样只会展示符合条件的食材
效果验证
用你提供的测试数据,最终会显示:
- I2(总用量60):对应食谱R1、R2、R4,分别显示用量32、11、17
- I3(总用量43):对应食谱R1、R2,分别显示用量14、29
- I5(总用量89):对应食谱R2、R3,分别显示用量49、40
所有只出现在1个食谱中的食材(I1、I4、I6、I7、I8)会被自动过滤掉,而且这个矩阵会完全响应用户对关联表的筛选(比如你筛选某个食谱分类,结果会动态更新)。
内容的提问来源于stack exchange,提问作者Máté Juhász
相关产品推荐
相关产品推荐

