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

PowerBI:单边含集合的订单与部件多对多关系建模及筛选方案问询

在PowerBI中构建订单与部件的多对多双向筛选关系

场景说明

  • 订单(orders)与部件(widgets)为多对多关系:一个订单包含多个部件,一个部件可被多个订单使用。
  • 源数据为两个JSON文件:orders.json和widgets.json,关联关系由widgets中的in_orders数组字段存储(记录该部件所属的订单ID列表)。

源数据示例

// orders.json
[
  { "order_id": 1, ...},
  { "order_id": 2, ...},
  { "order_id": 3, ...},
]
// widgets.json
[
  { "widget_id": 1, "in_orders": [2, 3], ...},
  { "widget_id": 2, "in_orders": [1], ...},
  { "widget_id": 3, "in_orders": [], ...}
]

实现双向筛选的多对多关系构建步骤

1. 拆分Widget的关联订单列表

导入widgets.json到PowerBI后,找到in_orders字段(列表类型):

  • 点击字段右侧的展开到新行按钮(双箭头图标),将数组中的每个订单ID拆分为单独行,生成一个桥接表(可命名为WidgetOrderBridge),表结构包含widget_id和order_id两个核心关联字段。
  • 注意:in_orders为空的部件(如widget_id=3)不会生成对应行,若需统计这类无关联部件,可保留原Widgets表的完整数据用于单独展示。

2. 导入订单数据

直接导入orders.json到PowerBI,得到Orders表,保留order_id及其他业务字段即可。

3. 配置双向筛选关系

切换到数据模型视图,建立以下两个关系:

  • 将WidgetOrderBridge的order_id与Orders的order_id关联,在关系设置中勾选双向筛选;
  • 将WidgetOrderBridge的widget_id与Widgets的widget_id关联,同样勾选双向筛选。

此时形成Orders <-> WidgetOrderBridge <-> Widgets的关联结构,完全满足双向筛选需求:

  • 筛选指定订单时,会通过桥接表自动关联到所有包含该订单的部件;
  • 筛选指定部件时,会通过桥接表自动关联到所有包含该部件的订单。

4. 验证效果

  • 添加订单ID切片器,选择order_id=2,部件列表应显示widget_id=1;
  • 添加部件ID切片器,选择widget_id=1,订单列表应显示order_id=2和3;
  • 选择widget_id=3时,订单列表无结果,符合源数据中该部件无关联订单的逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 15:46:27