PowerBI矩阵数值展示异常:如何创建度量值实现正确分组显示
PowerBI矩阵问题解决方案
核心问题分析
- Price被强制聚合:PowerBI默认对数值字段执行聚合(如求和、平均值),但你的场景需要保留分组下的单个Price值,而非聚合结果。
- Delivery Period不匹配:Counterparty=JA时,两张事实表的Delivery Period无交集,导致矩阵维度组合缺失或显示异常,需统一维度并处理无数据时的Price取值逻辑。
步骤1:完善维度表
创建独立的Delivery Period维度表,包含两张事实表中所有唯一的Delivery Period值:
Delivery Period = DISTINCT( UNION( VALUES('事实表1'[Delivery period]), VALUES('事实表2'[Delivery period]) ) )
将两张事实表的Delivery period字段与该维度表建立关系,确保矩阵行字段能加载所有可能的周期值。
步骤2:创建Price度量值
针对两张表的Price分别创建度量值,优先按完整维度取唯一值,无对应数据时按更高层级维度(Counterparty、Commodity、DealType)取唯一值:
Price1(来自事实表1)
Price1 = VAR CurrentDimPrice = CALCULATETABLE(VALUES('事实表1'[Price]), ALLEXCEPT('事实表1', 'Counterparty'[Counterparty], 'Commodity'[Commodity], 'DealType'[DealType], 'Delivery Period'[Delivery Period])) VAR FallbackDimPrice = CALCULATETABLE(VALUES('事实表1'[Price]), ALLEXCEPT('事实表1', 'Counterparty'[Counterparty], 'Commodity'[Commodity], 'DealType'[DealType])) RETURN IF(COUNTROWS(CurrentDimPrice)=1, VALUES('事实表1'[Price]), IF(COUNTROWS(FallbackDimPrice)=1, VALUES('事实表1'[Price]), BLANK()))
Price2(来自事实表2)
Price2 = VAR CurrentDimPrice = CALCULATETABLE(VALUES('事实表2'[Price]), ALLEXCEPT('事实表2', 'Counterparty'[Counterparty], 'Commodity'[Commodity], 'DealType'[DealType], 'Delivery Period'[Delivery Period])) VAR FallbackDimPrice = CALCULATETABLE(VALUES('事实表2'[Price]), ALLEXCEPT('事实表2', 'Counterparty'[Counterparty], 'Commodity'[Commodity], 'DealType'[DealType])) RETURN IF(COUNTROWS(CurrentDimPrice)=1, VALUES('事实表2'[Price]), IF(COUNTROWS(FallbackDimPrice)=1, VALUES('事实表2'[Price]), BLANK()))
步骤3:创建Value求和度量值
分别对两张表的Value创建求和度量值,确保无数据时显示空白(或0,根据需求调整):
Sum of Value 1 = SUM('事实表1'[Value]) Sum of Value 2 = SUM('事实表2'[Value])
矩阵配置
将Counterparty、Commodity、DealType、Delivery Period(来自新维度表)设为行字段,将上述创建的4个度量值设为值字段,即可得到符合预期的矩阵展示。
内容的提问来源于stack exchange,提问作者iBeMeltin
相关产品推荐
相关产品推荐

