Power BI数据建模过程中遇到的各种问题,你见过吗?

您所在的位置:网站首页 对表格内数据清单的内容进行自动筛选 Power BI数据建模过程中遇到的各种问题,你见过吗?

Power BI数据建模过程中遇到的各种问题,你见过吗?

2023-05-08 05:25| 来源: 网络整理| 查看: 265

我的书《Power BI商业数据分析》已出版,帮你从0到1,轻松入门:

用PowerBI做数据分析,不仅仅是学习DAX,更关键的是先建好一个合适的数据模型,关于建模,刚开始接触PowerBI的同学可能有很多疑问,这里就通过一个简单的示例,介绍一下建模过程中可能会遇到的一些问题。

假设有两张表,一个是每日销售表,一个是每月目标表,模拟数据如下:

通过这两张表,如何比较每个月每个产品的目标完成情况呢?

这是很常见的分析,对于熟练使用PowerBI的人来说非常简单,一个简易的数据模型就实现了,甚至不需要写DAX,但是对于初学者,可能不知道从哪下手,也许知道这两个表应该建立关系,但建立关系的过程中,就可能会遇到下面一些问题。

1. 多对多关系

如果你想在销售表和目标表之间,通过产品名称字段建立关系,会弹出一条提示:

此关系的基数是多对多。仅在两列都不包含唯一值,且多对多关系的显著不同行为被理解的情况下,才应使用此关系。

由于两个表的[产品名称]列,都不是唯一的,都有重复值,则只能建立多对多的关系。

多对多关系是受支持的,但是这种关系在行为和性能上都有特殊性,会导致模型更加复杂,建议在充分理解的情况下采用,这就是上述提示的含义,仅仅是提示,并非不允许。

并且多对多关系,默认交叉筛选方式为双向,为了避免关系的混乱,方向最好改为"单一",根据需要选择是从某个表筛选另一个表:

当然,其实不建议建立多对多的关系,为了说明建模过程中可能遇到的问题,这里暂且这样建,后面会介绍更优的建模方式。

2. 可用关系与不可用关系

上面已经在目标表和销售表之间建立了[产品名称]列的关联关系,因为还需要按日期匹配,如果你想拖拽日期列再次建立关系,这次又弹出同样的窗口,还是提示多对多关系:

依然是因为两个表的日期都有重复值,如果你直接点击确定,会发现这条关系线是一条虚线:

这是为什么呢?虚线是怎么回事?

关系按活动状态分为两种:可用和不可用,可用的活动关系线用实线表示,不可用的未被激活的关系,用虚线表示。

两个表之间只能有一条可用的活动关系,如果再建立其他关系,都只能是非活动状态的虚线关系。

其实你仔细观察上面两次建立关系时,弹出的提示窗口,会发现还是有一个地方是不同的:

第二次再建立关系时,左下角的“使此关系可用”默认是不勾选的,如果强行勾选,提示会变成:

目标表与销售表已存在可用关系。要使用此关系,请先停用现有关系。

由于两个表之间是不允许有两个同时存在的活动关系,所以“确定”按钮也变成灰色的,不允许建立这个关系。

两个表的活动关系只能有一条,非活动的虚线关系可以有多条,关于虚线关系有什么用,以及怎么用,可以参考这篇文章:

认识Power BI中的非活动关系

不能建立多条活动关系,那两个表如何利用多个字段建立关系呢?下面接着介绍。

3. 关系歧义

既然不能在已经存在活动关系的两个表之间再建立活动关系,那么通过一个中间的维度表来过渡应该可以的吧?

接着上面的步骤,建立日期表(建日期表可参考:玩PowerBI必备的日期表制作方式汇总),然后利用日期表与销售表、目标表分别建立关系。

先建立日期表与目标表的关系:

然后再建立日期表与销售表的关系,但是却发现只能建立非活动的虚线关系?

这是怎么回事呢?明明日期表和目标表之间还没有建立关系,为什么还是不让建立活动关系呢?

双击虚线关系进入编辑,如果强行勾选左下角的“使此关系可用”,将会出现以下提示:

无法在销售表和日期表之间创建直接可用关系,因为这些表之间已经存在间接关系的可用集合。要使此关系可用,请先将交叉筛选方向设置为“单向”,删除或停用任何间接关系。

右下角的“确认”按钮也是灰色的,不允许激活该关系。

其实上图中的提示信息非常清晰,因为两个表之间只能有一条活动关系,这条关系不仅仅是直接连接的活动关系,也包括间接连接的活动关系。

日期表和销售表之间已经有一条间接关系(下图路线1),如果在日期表和销售表之间,再直接建立个活动关系,从日期表到销售表的筛选,就有两条路线:

路线1:日期表→目标表→销售表

路线2:日期表→销售表

日期表应该按哪一条路线来筛选销售表呢?因此产生了歧义,这也是为什么会出现以上提示、以及不允许建立路线2实线关系的原因。

碰到这种情况,想建的关系建不了,就应该意识到前面的关系建错了,应该重新梳理模型关系,把错误的不必要的关系删掉。

如何梳理关系呢,首先应该先分清楚模型中的表,哪些是事实表,哪些是维度表?(在PowerBI中的表并没有事实表和维度表的区别,这里用这两个概念来区分表,主要是为了更方便理解数据模型)

事实表,记录明细数据的表,是分析指标的数据来源,比如上面的销售表和目标表,都是事实表,销售表提供实际数据指标,目标表提供目标数据指标;维度表,是分析的角度,比如产品维度表提供产品的角度、日期维度表提供时间的分析角度等,报告中的各种筛选器,图表的坐标轴等都应该来自维度表的字段。如果模型中本来没有维度表,可以根据需要来建立维度表。

对于这个示例,完善所需的维度表,分清楚事实表和维度表之后,然后就可以建立关系了,主要把握住这些基本原则:

事实表之间不要直接建立关系;维度表与事实表之间建立一对多的单方向关系;连接事实表的维度表之间不建立关系。

基于以上原则,对于这个示例:

目标表和销售表都是事实表,两个表之间不建立关系;

产品表和日期表是维度表,分别与目标表和销售表建立一对多的单向关系;

两个维度表,产品维度表和日期维度表不建立关系,由于维度表是相互独立的,一般也没有建立关系的可能;

最终模型是这样的:

关于维度表如何建立,以及最终如何进行分析,请参考:Power BI数据分析入门案例:目标实际对比

这样建立的模型,就是一个星型模型,它能有效避免上面可能遇到的各种关系问题。

本文根据一个非常简易的模型,来介绍建模过程中可能遇到的各种问题,更复杂的模型,也会有更大概率碰到上述问题。

你需要理解模型的每个数据表的业务含义,不要随意拖拽字段建立关系,系统自动建立的不必要的关系,应该删掉,脑海中应该有事实表维度表的概念,然后根据上面的原则来建立关系,大概率不会再遇到问题,这样建立的模型也会更方便的实现分析目的。

更多推荐:采悟:利用Power BI,轻松进行盈亏平衡分析25 赞同 · 0 评论文章25 赞同 · 0 评论文章25 赞同 · 0 评论文章25 赞同 · 0 评论文章26 赞同 · 0 评论文章采悟:在Power BI中制作漂亮的玉玦图16 赞同 · 4 评论文章16 赞同 · 4 评论文章16 赞同 · 4 评论文章17 赞同 · 4 评论文章17 赞同 · 4 评论文章17 赞同 · 4 评论文章18 赞同 · 4 评论文章18 赞同 · 4 评论文章采悟:在Power BI中创建日期表,你可能会遇到的几个问题

喜欢别忘了点赞哦~

掌握一个技能 专研一个领域



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3