Power BI入门教程
题记:这篇文章不仅是Power BI的入门教程,同时相对于Qlik Sense进行了简单比较。 最近把一个Qlik Sense的示例应用手动转成了Power BI的应用,把相关步骤和遇到的问题记录如下,权当作一个入门教程。 1,准备原始数据由于Qlik Sense的示例应用只有一个单独的qvf文件,那么原始数据只有通过qvf来导出。此qvf中的数据模型如下图所示: Qlik Sense并没有提供数据模型包含数据的完整导出功能,所以只能采用最麻烦和原始的方式,即:创建表格,在表格中添加某个数据表的所有字段,然后再利用可视化对象的导出功能导出数据为xlsx文件。通过这种方式,把所有表都导出。注:但在实际操作当中,未必所有表都导出,因为有些表可以在Power BI中生成(比如日期表DateParts),有些表在Power BI中也用不到(比如月份顺序表Month Sort Order)。 当然,如果你拿得到原始数据的文件或者数据库,那么就可以跳过这一步。 2,加载数据这步比较简单,在Power BI中新建一个文档,通过“获取数据”-“Excel”来选择需要导入的xlsx文件。 选择文件之后,会显示“导航器”对话框。在这里选择需要导入的工作表(可以选择多个)。选择工作表之后,可以直接点“加载”,也可以点“编辑”来打开“查询编辑器”修改ETL脚本(当然在加载之后还是可以重新编辑脚本)。如果直接点“加载”之后,Power BI就会把选择的工作表中的数据加载进来,这个时候就可以在“数据”视图中预览其中的数据,右侧的“字段”边栏也会显示表及其包含的字段: 这个时候,你会发现表名称是xlsx文件中默认的Sheet1,修改表名称的最简单方式就是,在表名称上点右键选择“重命名”。另外,有些xlsx文件导入之后,数据可能会出现下面这种没有正常识别列名称的问题,这个时候就需要用到“查询编辑器”中的“提升的标题”(把第一行数据当作标题/列名)的功能: “查询编辑器”是一个强大的UI操作界面,帮你自动生成Power Query的M语言脚本,可以通过“高级编辑器”来查看每个表的Power Query脚本。而Power Query的第一步就是通过“源”和“导航”脚本来实现Extract-Load的步骤。对于Power BI而言,Extract-Load可以实现的能力有:
3,转换和塑造数据在加载数据的过程中或者之后,还可以继续利用“查询编辑器”来对加载的数据进行转换和塑造(即Transform)。所谓转换和塑造就是利用Power Query的M语言脚本来对数据的加载过程,进行额外处理。我大致把这个过程中Power BI能提供的能力整理了一下:
从上面整理的内容来看,Power BI由于沿用了SQL Server和Excel中已经存在的Power Query,所以它的ETL功能还是非常强大的,并且几乎不用你手动编写ETL脚本即可完成复杂的ETL工作。 想对Power Query的功能有详细了解的,建议查看Excel的文档:https://support.office.com/zh-cn/article/%E8%8E%B7%E5%8F%96%E5%92%8C%E8%BD%AC%E6%8D%A2%E5%9C%A8-Excel-2016-%E4%B8%AD-881c63c6-37c5-4ca2-b616-59e18d75b4de?ui=zh-CN&rs=zh-CN&ad=CN 4,建模数据在完成数据的ETL之后,需要的步骤就是对数据进行建模。一般而言,在导入数据之后,Power BI会根据字段的名称自动推断出表之间的关系的。比如下图就是导入示例数据之后自动构建的关系图: 建模的工作和ETL的工作是两个不同的步骤,虽然有些功能达到的效果是一样,但是背后实现的机理是不一样的。最明显的一个地方就是数据类型的修改,在查询编辑器中对数据类型进行修改会替换或产生新的ETL脚本,而在数据视图中修改数据类型不会影响ETL脚本。 Power BI支持的建模能力整理如下:
在建模的过程中,尤其和公式计算相关的东西都涉及到数据分析表达式(Data Analysis Expressions,DAX)的使用,详细的说明可以参考MSDN官方文档:https://msdn.microsoft.com/library/gg413422.aspx 对于我的这个示例,我实际用到了如下几种建模能力:
DateKey = ADDCOLUMNS(CALENDAR(FIRSTDATE(Details[EpisodeAdmissionDate]),LASTDATE)"DateAsInt",FORMAT([Date],230);">YYYYMMDDYearYEARQuarter(FORMATQYearQuarter( YYYY" ) & /Q& FORMAT MonthMONTHMonthNamemmmDayDAYWeekNumWeekDayWEEKDAYWeekDayNamedddFiscal YearIF(>3,255);">+1,230);">Fiscal Year Name-+ 1- & )) 把日期表添加到模型中后,就可以手动把日期表的Date字段和Details表中的EpisodeAdmissionDate字段建立其关系。最终的模型图如下: 日期表创建的更多详细介绍,可以参考这个博客文章:http://kohera.be/blog/business-intelligence/how-to-create-a-date-table-in-power-bi-in-2-simple-steps/ 5,可视化显示数据通过可视化控件来显示数据没有太多可以说的。Power BI的官方文档已经写的比较好了,见:https://powerbi.microsoft.com/zh-cn/documentation/powerbi-desktop-report-view/ 无非就是把一个可视化控件拖到报表页面上,然后把所需的维度和度量拖到可视化控件中的数据标签页中的“轴”/“图例”或者“值”下面,如下图所示: 数据建模的时候提到过下钻显示。下钻显示有两种方式:一种使用层级结构列,一种不使用。 简单说来,对于使用层级结构的方式,就是先建立一个层级结构列,然后把这个列拖到“轴”下面,可视化控件就会在上面的操作栏显示用于下钻数据的特定按钮。如下图所示: 对于第二种下钻显示方式,我没有采用,详细的说明可以见:https://powerbi.microsoft.com/zh-cn/documentation/powerbi-service-drill-down-in-a-visualization/。 为可视化控件准备好数据之后,还可以通过“格式”设置标签页(即刷子状图标)来设置一些显示格式,比如标题,字体,颜色什么的。 当数据添加到可视化控件之后,这些字段还会自动添加到视觉级别筛选器,除此之外,你还可以额外把字段添加到页面级筛选器和报告级筛选器中。这些筛选器的作用范围望文生义应该可以理解。 不过需要注意的是,筛选器在公开发布到Web后并不可见,所以你还可以单独在报表页面上添加所需的切片器。切片器的数据设置方式和其他可视化控件类似。 6,和Qlik Sense的比较粗略的比较下来(个人观点):
Power BI在可视化能力方面确实需要进一步加强,比如我就遇到如下几个问题:
最后不得不吐槽下,Power BI的文档用机器翻译就算了,感觉Power BI Desktop的中文版也是机器翻译的。还不如我来翻译算了(作为MVP可以免费做贡献)。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |