Power BI中处理多对多关系重复值及缺失值显示问题
解决Power BI中多表关联后无值社区显示0且避免重复/空行的问题
步骤1:修正表间关系
先把多对多关系改成一对多关系:
- 将DRegiaoAdministrativa作为维度表(存储行政区、社区的主数据),FMapa作为事实表
- 用
DRegiaoAdministrativa[RA]+DRegiaoAdministrativa[Bairro]的组合键,关联FMapa[RA]+FMapa[Bairro],建立从DRegiaoAdministrativa指向FMapa的一对多关系 - 多对多关系会生成笛卡尔积,这就是你看到重复值的核心原因,换成一对多能从根源避免重复
步骤2:创建自定义度量值
直接用事实表的列无法自动显示0,必须用DAX度量值处理空值:
假设你要统计每个社区对应的FMapa记录数,写如下度量值:
社区记录数 = // 先判断社区是否为空,避免空行汇总 IF(ISBLANK(DRegiaoAdministrativa[Bairro]), BLANK(), VAR _count = CALCULATE(COUNT(FMapa[Bairro]), USERELATIONSHIP(DRegiaoAdministrativa[RA], FMapa[RA]), USERELATIONSHIP(DRegiaoAdministrativa[Bairro], FMapa[Bairro]) ) // 空值替换为0 RETURN COALESCE(_count, 0) )
如果是求和其他指标(比如销售额),把COUNT(FMapa[Bairro])换成SUM(FMapa[指标列])即可。
步骤3:配置可视化并过滤空行
- 把
DRegiaoAdministrativa[RA]和DRegiaoAdministrativa[Bairro]拖到可视化的轴/行区域 - 把刚创建的度量值拖到值区域
- 在可视化的筛选器面板中,添加
DRegiaoAdministrativa[Bairro]的筛选条件,选择“不为空”,就能去掉空行汇总的情况
关键说明
- 维度表(DRegiaoAdministrativa)的主数据会全部显示,事实表中没有匹配的社区会通过度量值返回0
- 一对多关系确保不会出现重复值,因为维度表的每一行只会关联事实表中对应的行,不会生成多余组合
内容的提问来源于stack exchange,提问作者Emilly
相关产品推荐
相关产品推荐

