【数据分析过程解析】二、扩展和丰富数据模型
前面我们介绍了Excel中的Power BI组件,也介绍了实际工作中使用这些组件的一些案例。但还有些朋友对Power BI不太熟悉。从今天开始,我们将用一系列(3-4篇)文章完整介绍一个使用Power BI进行数据分析的全过程。
今天是第二篇:扩展和丰富数据模型
数据源文件获得方式:
正文
1. 使用关系图视图创建关系
在Excel的“Power Pivot”选项卡中,点击“管理”:
进入“Power Pivot for Excel”。点击“主页”选项卡中的“关系图”视图:
你的关系图视图可能不是这样的布局,你可以随时拖动表格的卡片,按照你的意愿安排布局。
我们要注意到,除了这两组关系外,其余的4个表(S_Teams,W_Teams, Events, Hosts)没有与任何表创建关系。目前,这几个表是孤岛。需要在数据模型中增加关系,把它们互相连接起来。
要在两个表的字段上创建关系,必须至少有一个表的该字段是唯一的,不重复的。也就是说,只有两种关系:1对1和1对多。如果两个表的该字段都是具有重复值的,这种关系称为多对多,必须引入中间表。
另外,为两个表建立关系的字段在两个表中的名字可以相同,也可以不同。不过相同的字段名字更加常见。
关于关系的更多详细要求,我们会在以后的文章中详细介绍。
点击Medals表的DisciplineEvent字段,鼠标拖拽到Events表的DisciplineEvent字段上:
松开鼠标后,我们发现Medals和Events之间已经创建了关系:
如果我们希望同样为Hosts表和其余某个表建立关系,从而使Hosts表能够与数据模型其他表建立关联,我们就需要找到Hosts表与其余表的管理字段。
但是,很遗憾,我们没有发现这样的字段。
2. 通过添加计算列来扩展数据模型
仔细研究Hosts表和其他表的数据,我们发现,实际上我们可以通过两个字段将Hosts表和Medals表关联在一起。一个是Edition,一个是Season。
现在,我们在两个表上分别创建计算列,然后用计算列创建关系。
在“Power Pivot for Excel”中,选中Hosts表,我们注意到,表格的最后一列右侧有一列,叫做“添加列”
在公式框中,输入公式:
=CONCATENATE([Edition],[Season])
回车后,该列就得到了结果数据:
将列名修改为“EditonID”。
这里要多说几句这个公式。
在Power Pivot中使用的公式跟Excel中类似。实际上有很多公式跟Excel中的公式名字一样,使用方式和返回结果一样,就像我们刚才用的CONCATENATE这个函数。而且使用更加方便。比如,随着你的输入,系统会出现提示:
此时,你可以输入Enter,系统自动将第一个备选函数输入完整。在Excel中目前还做不到这一点。
这里用到的函数,叫做DAX函数。大家不要被这个“吓人”的名词DAX吓到。其实很简单,我们在前面的文章中已经见到一些了,比如DistinctCount等。我们会在后面的文章中详细介绍常用的DAX函数。
=CONCATENATE(YEAR([Edition]),[Season])
添加完成计算列后,修改列名为“EditionID”:
你可能注意到了,我们是在数据模型的表中创建了计算列。这些列并没有添加到Excel工作表中的那些表格中。
此时,你在Hosts和Medals表中找不到新创建的两个计算列。要想找到它们,可以按照如下方式操作:
点击“主页”选项卡下的“查找”按钮:
在出现的“查找元数据”对话框中输入“EditionID”:
点击“查找下一个”:
Medals中的EditionID字段已经找到。继续点击“查找下一个”,找到Hosts表的EditionID字段。
通过鼠标拖拽在Medals和Hosts之间建立关系。
3.添加层次结构
我们的源数据是奥运会数据,同样也包含着层次数据。例如,每个Sport(运动项目)下,都包含许多不同的disciplines(分项)。每个disciplines下,有许多events(小项)。下图就是一个这样的层次数据的示例:
我们可以创建层次结构反应这种数据结果。
在“关系图视图”中,最大化Events表卡片: