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

Power BI一对多关系场景下,如何显示无发票的订单完整数据?

解决Power BI中显示无发票订单的问题

这个场景在Power BI里挺常见的——默认的关系筛选逻辑会自动过滤掉没有对应发票的订单,导致你看不到未开票的记录。下面给你几个实用的解决方案,你可以根据自己的数据模型需求来选:

方法一:调整关系的交叉筛选方向

这是最直接的办法,适合不需要担心双向筛选影响其他报表的情况:

  • 切换到数据模型视图,找到订单表和发票表之间的关系连线
  • 双击连线打开关系设置对话框,把交叉筛选方向从默认的「单方向」改成「两者」(也就是双向筛选)
  • 完成后回到报表视图,用订单表的order id、metric tons,再搭配发票表的amount invoiced做可视化,无发票的订单就会显示出来,对应的开票金额会自动显示为空白或0

方法二:用DAX创建度量值/计算列(不修改关系)

如果不想改动现有关系(怕影响其他报表的筛选逻辑),可以用DAX来主动关联数据:

方案A:在订单表中创建计算列

开票金额 = 
CALCULATE(
    SUM('发票表'[amount invoiced]),
    FILTER('发票表', '发票表'[order id] = '订单表'[order id])
)

这个计算列会给每个订单匹配对应的开票总额,无发票的订单会显示为空白。

方案B:创建度量值(更适合动态可视化)

总公吨数 = SUM('订单表'[metric tons])
总开票金额 = 
CALCULATE(
    SUM('发票表'[amount invoiced]),
    ALL('发票表'),
    '发票表'[order id] IN VALUES('订单表'[order id])
)

在可视化组件中使用订单表的order id、总公吨数和总开票金额,无发票订单的总开票金额会显示为0,这样报表就能完整展示所有订单的状态。

方法三:用Power Query做左外部合并

如果你想直接生成包含所有订单的合并表,可以用Power Query:

  • 进入Power Query编辑器,选中订单表,点击「合并查询」→「合并查询作为新查询」
  • 选择发票表,匹配列选order id,连接类型选择左外部(左连接会保留订单表的所有行,哪怕发票表没有对应记录)
  • 展开合并后的发票表中的amount invoiced字段,加载这个新表到数据模型
  • 用这个合并表制作可视化,就能直接看到所有订单的公吨数和开票金额(无发票的显示为null)

额外优化:标记未开票订单

为了更直观区分,你可以在订单表中加一个计算列:

开票状态 = 
IF(
    ISBLANK([开票金额]),
    "未开票",
    "已开票"
)

这样在报表里就能快速筛选或高亮未开票的订单了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:59:43