Power BI图表显示非预期值,表关系与DAX度量值问题求助
问题原因
- 关系方向反转:Power BI创建关系时会自动根据关联列的唯一值基数判定"一"端和"多"端,你预期
orders表为"一"端、Order Items表为"多"端,但实际key12列在orders表的唯一值数量高于Order Items表,导致系统自动将Order Items判定为"一"端,关系方向和预期相反。 - 计算结果不符合预期:
- 反向关系下,筛选上下文只能从
Order Items表传递到orders表,你图表维度同时使用了orders[Order Id]和Order Items[Product Id]两个跨表字段,筛选无法传递到Order Items表执行求和运算,最终输出值和预期不符。 - 关联键设计冗余:订单模型常规关联逻辑为
orders[Order Id](一)关联Order Items[Order Id](多),你额外合并Order Id+Product Id生成key12作为关联键,反而会因为字段逻辑错误导致匹配异常。
- 反向关系下,筛选上下文只能从
可行解决方案
推荐方案(符合标准星型模型设计)
- 删除两张表中冗余的
key12列,同时删除当前基于key12创建的关联关系 - 重新创建两表关联:以
orders[Order Id]为公共关联键,手动设置基数为orders(1) → Order Items(*),筛选方向为单方向,将关系设置为激活状态 - 简化度量值,无需调用
USERELATIONSHIP函数:
order_to_orderitem = SUM('Order Items'[Unit Price])
- 重新配置图表,使用
orders[Order Id]、Order Items[Product Id]搭配上述度量值,即可得到预期输出。
备选方案(需保留key12的场景)
- 检查两张表
key12的生成逻辑,确保orders表中key12的唯一值数量 ≤Order Items表中key12的唯一值数量 - 手动编辑现有关系,将基数调整为
orders(1) → Order Items(*),筛选方向设置为从orders到Order Items,保持关系为激活状态 - 如果这是两表之间唯一的激活关系,可简化度量值删除
USERELATIONSHIP函数;如果存在其他激活关系,保留原有度量值即可。
内容的提问来源于stack exchange,提问作者sheetal
相关产品推荐
相关产品推荐

