Power BI切片器为什么总是有个空白?

文摘   2024-10-20 23:08   广东  

    小伙伴们,大家好呀~今天继续和大家分享Power BI知识,最近在学习交流群看到有个小伙伴的问题:为什么切片器里面多了个空白?这类问题我猜大概率是参照完整性的问题,这个问题很典型很多小伙伴遇到这个问题一脸懵,我们一起来看下这个问题的产生已经如何来解决。

    假设我们有一个非常简单的数据模型:客户维度表Dim_A,销售事实表Orders,两表之间通过customer_id创建了1对多的关系,当我们把客户维度表Customer的名字拖入切片器后发现图1的情况。

                                                 图1

    通常来说,如果维度表中没有空白项的话,这个就是参照完整性的问题。接下来我们来一起了解下什么是参照完整性。数据库关系模型中有三类完整性约束,分别是:实体完整性,参照完整性,用户定义完整性。
  • 实体完整性用于保证关系数据库中每条记录都是可区分的,唯一的,这种唯一既不能有重复值,也不能有空值,这其实就是主键的作用,因此,从便于记忆的角度,你也可以理解为主键完整性。


  • 用户定义完整性
    不同的关系数据库因其应用环境的不同,通常需要针对某一具体字段设置约束条件,这种由使用者基于具体业务逻辑设定的约束条件,就叫做用户定义完整性。比如学生的性别字段只能有男、女两个值,学生考试成绩的范围是 0-100 分。


  • 参照完整性参照完整性,又称引用完整性,是相关联的两个表之间的约束,对于建立关系的两个表来说,事实表每条记录中的外键必须是主表中存在的,简单的说,就是事实表的每一行必须在维表中存在对应的记录


由于Power BI模型设计没有数据库的设计要求那么严格,在Power BI中是允许违反参照完整性设计的存在,例如下图2所示。

 图2

很明显维度表Dim_A只有2个客户,Orders销售事实表中有3个,多了CustX,这就明显违反了参照完整性的要求:事实表每条记录的外键必须是维度表中存在。由于Power BI允许违反参照完整性的情况出现,也就是事实表中可以存在与维表不匹配的行,通过维度表的属性汇总数据时,系统将这些不匹配的记录自动映射到空白行。
空白项本身不代表记录数量,有多条不匹配记录,也只显示一个空白行。

那么如何避免或者解决这类问题?小编分享两个方案:
  • 如果空白对你分析影响不大,也就是说你只关心你维度表存在的这部分数据,事实表中非维度表的数据你并不关心,这时候可以直接在切片器里面筛选掉空白值即可。
  • 如果希望完整、动态获取全部事实表维度信息,可以通过在Power Query或者写DAX表达式对事实表的维度进行去重处理生成新的表作为维度表。例如,本案例可以使用新建表写DAX表达式提取去重后的客户ID作为维度表。

OK,本次的分享就是这么多了,空白值只是表象,具体问题还需要具体分析,可能是维度表中本身带有空白值,也可能是违反了关系模型的参照完整性,结合具体情况来选择解决方案。


  • 免费课程:Power BI免费课程更新至202405月
  • 免费课程绝大部分都是录制视频讲解,针对典型案例进行讲解,大家可以当做是一个字典,需要时候来找一找。免费课程不系统,有些基础内容小编默认你是知道,所以没有详细讲解,需要系统学习推荐看看小编的付费系统课程。
  • 付费课程:Power BI会员课程更新(202310)
  • 付费课程从零基础开始讲解,上手平滑,深入浅出,结合实际案例针对性强。具体可以参考介绍,课程内容持续更新,永久学习!(付费后,小编后面开发推出的所有课程和资源免费获取,无需再付费!)
  • 交流学习群:本群为付费制(49/一位),仅作为学习交流Power BI/Excel/Tableau/SQL等数据分析、数据处理工具用,有问题可以描述清楚你的问题,附上案例数据求助。除此外,不讨论任何无关事情,违者立刻剔除。啊?不是吧?加群还要付费?嗯,是的,所以,加群后请谨言慎行!群里会不定期分享各类模板、学习书籍等资讯,确认以上条件都能接受再添加小编私信!


PowerBI Home
分享PowerBI、Tableau、Excel(函数公式、数据透视表、VBA)、Python、SQL等技巧。
 最新文章