前面我们介绍了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表卡片: |
|