PowerBI矩阵中非日期列累计值空白问题求助
解决PowerBI矩阵累计值空白问题
1. 构建独立维度表
日期表:创建包含所有需显示日期的完整序列,摆脱对事实表日期的依赖(避免因事实表某天无数据导致日期缺失)。用DAX生成:
日期表 = CALENDAR(DATE(2022,1,1), DATE(2023,12,31)) // 根据业务范围调整日期区间完成后将日期表与事实表的日期字段建立单向一对多关系。
con_seasoning维度表:提取事实表中所有有效的con_seasoning值,避免生成多余列。用DAX生成:
con_seasoning维度表 = DISTINCT('事实表'[con_seasoning])将该表与事实表的con_seasoning字段建立单向一对多关系。
2. 修改累计度量值
替换原有度量值,确保即使当前日期+con_seasoning无基础数据,仍能计算到该日期的累计值:
累计计数 = VAR CurrentDate = MAX('日期表'[日期]) VAR SelectedSeasoning = SELECTEDVALUE('con_seasoning维度表'[con_seasoning]) // 计算到当前日期为止,该con_seasoning的总计数 VAR TotalCumulative = CALCULATE( COUNT('事实表'[contract_id]), FILTER(ALL('日期表'[日期]), '日期表'[日期] <= CurrentDate), '事实表'[con_seasoning] = SelectedSeasoning ) // 若当前组合无数据,返回最近有数据的累计值,若需默认显示0可直接替换为0 RETURN IF( ISBLANK(TotalCumulative), CALCULATE( COUNT('事实表'[contract_id]), FILTER(ALL('日期表'[日期]), '日期表'[日期] <= LASTNONBLANK('日期表'[日期], [累计计数])), '事实表'[con_seasoning] = SelectedSeasoning ), TotalCumulative )
3. 调整矩阵配置
- 矩阵列区域使用
con_seasoning维度表[con_seasoning],而非事实表的con_seasoning字段; - 矩阵行区域使用
日期表[日期],而非事实表的日期字段; - 值区域采用修改后的
累计计数度量值。
4. 修正Crossjoin多余行/列问题
若之前用Crossjoin生成组合,需将Crossjoin对象限定为独立维度表(日期表+con_seasoning维度表),仅生成所需的日期与con_seasoning组合,避免出现无关行/列:
完整组合表 = CROSSJOIN('日期表', 'con_seasoning维度表')
之后可将该表与事实表建立关系,或基于此表计算累计值。
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

