You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Power BI数据建模:如何基于可用食材筛选可制作菜品

解决Power BI食材筛选菜品不符合预期的问题

需求与问题

需要基于菜品-食材表格创建食材筛选器,实现:

  • 筛选「面粉」时,仅显示「苹果派」和「披萨」
  • 筛选「番茄酱」时,显示「意面」和「披萨」

按以下建模后出现异常:选择「番茄酱」和「意大利面」时,本该仅显示「意面」,却同时显示了「披萨」。

初始表格

DishIngredients
苹果派苹果, 糖, 面粉, 鸡蛋
意面意大利面, 番茄酱
披萨面粉, 番茄酱, 奶酪

我创建的事实表(含错误)

DishIngredients
苹果派苹果
苹果派糖
苹果派面粉(原拼写为slour)
苹果派鸡蛋
意面意大利面
意面番茄酱
披萨面粉
披萨番茄酱
意面奶酪

创建的维度表

Ingredients
苹果
糖
面粉
鸡蛋
意大利面
番茄酱
奶酪

问题根源

  1. 事实表存在数据错误:「意面」的食材中错误添加了「奶酪」,导致数据基准不准确
  2. 默认的表关联逻辑是返回包含任意选中食材的菜品,而非包含所有选中食材的菜品,这是筛选不符合预期的核心原因

解决方案

1. 修正事实表数据

删除错误的「意面-奶酪」记录,修正后的事实表如下:

DishIngredients
苹果派苹果
苹果派糖
苹果派面粉
苹果派鸡蛋
意面意大利面
意面番茄酱
披萨面粉
披萨番茄酱
披萨奶酪

2. 创建DAX度量值

在事实表中创建以下度量值,用于判断菜品是否包含所有选中的食材:

可制作菜品 = 
VAR 选中食材 = VALUES('维度表'[Ingredients])
VAR 菜品所需食材 = CALCULATETABLE(VALUES('事实表'[Ingredients]), ALLEXCEPT('事实表', '事实表'[Dish]))
RETURN
IF(COUNTROWS(EXCEPT(选中食材, 菜品所需食材)) = 0, 1, 0)

3. 配置视觉对象与筛选器

  • 将「事实表」中的「Dish」字段添加到目标视觉对象(如表格、卡片)
  • 为该视觉对象添加筛选器:选择上述「可制作菜品」度量值,设置为等于1
  • 使用「维度表」中的「Ingredients」作为筛选器控件

完成以上设置后,筛选多个食材时,只会显示包含所有选中食材的菜品,符合预期需求。


内容的提问来源于stack exchange,提问作者ninelondon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 10:35:06