在介绍创建度量方法之前,需要先完成一部分优化数据模型的工作,以便后续的创建度量,下面讲解具体做法。
在阅读过程中,如果读者对表名称的中/英文不熟悉,可以对照本书图1.6.1。
随着学习的深入,越来越多的度量会被创建,这些度量分布在各表之中。虽然可以通过搜索关键字快速查找,但是把它们放在一起,更易于管理和使用。
单击“建模”选项卡中的“新表”命令,输入DAX_Measure={BLANK()},按Enter键,建立一张命名为“DAX_Measure”的表。目前版本的Power BI还不支持在表之间移动度量,因此需要删除前文创建的度量,并重新在_Measure内创建一次。完成以后就可以在一个表内集中管理所有的自创度量了。
对于已经建立的度量,用户可以选择修改度量,再在“建模”选项卡下的“主表”选项中选择“DAX_Measure”命令,轻松将度量转移至新表中(见图3.4.1)。准确地说,度量并不依赖于具体表存在,所以放置在任何表中都可以。用鼠标右击 字段,在弹出的右键菜单中选择相应的命令可将其隐藏。
图3.4.1
当表中的某些字段冗长时,需要将复杂的名字改为简单的名字。双击右侧字段栏中需要改名的字段名,Power BI将直接自动修改,如图3.4.2所示。修改后,引用公式里的列名也会自动调整,不需要担心修改后的名字影响相关的引用度量的使用,这极大体现了Power BI在ETL方面的灵活性。表3.4.1中显示了修改前与修改后的度量名字对比,可以看出修改功能有助于让度量名称更简洁。
图3.4.2
表3.4.1
对于冗余列,例如SpanishCountryRegionName,不仅用不上,而且占据字段列空间,影响使用体验。这里选中要删除的列,用鼠标右击,在弹出的右键菜单中选择“删除列”命令,弹出“删除列”对话框,单击“删除”按钮,如图3.4.3所示。
当需要删除大量列的时候,需要更高效的方式。选择“开始”选项卡中的“编辑查询”命令,如图3.4.4所示,进入“编辑查询”模式后批量删除冗余的行/列。“编辑查询”功能的前身为Power Query,是Power BI中的数据准备模块。
图 3.4.3
图 3.4.4
进入“编辑查询”模式后,选择产品表,在按住Shift键的同时逐个选中准备删除的列,用鼠标右击,在弹出的右键菜单中选择“删除列”命令,如图3.4.5所示。
图3.4.5
所有的编辑查询步骤都是可逆的,即使删错了,只需返回之前步骤即可复原。“查询设置”栏下的“应用的步骤”框中记录了之前对表格改动的各个步骤。单击具体某个步骤,表内容即可恢复到修改之前的某个版本。
如图 3.4.6所示,单击步骤旁的 标志,可取消对指定步骤的操作。
图3.4.6
我们已经知道模型中实际上只有2010—2014年的数据,但当使用年份作为筛选器时,筛选器会列出2005—2014年的销售历史数据,显得冗余。因此,我们可以让2010年以前的销售历史数据不显示在筛选器中。
选中Dimdate(日期表),在“FiscalYear”列的下拉菜单中仅勾选2010—2014年,单击“确定”按钮退出,如图3.4.7所示。完成后,单击界面右上角的“关闭并应用”选项,重新回到Power BI的模型界面中。
图 3.4.7
在此案例中,地理表的地理字段都是文本类型数据,应该改为正确的地理类型数据,下面讲解具体操作方法。
切换到数据模式下,选中DimGeography(地理表),然后将“City”列改为“城市”;将“State”列改为“州、省、直辖市或自治区”;将“Country”列改成“国家/地区”。此刻,对应的字段都出现了一个小地球图标,表示数据类型改为了地理类型。使用正确的数据类型可以最大程度上避免地理信息错误。
创建层级就是对有层次关系的主数据之间的维护,例如Country、State、City这些主数据之间就有层级关系。用鼠标右击“City”字段,在弹出的右键菜单中选择“新的层次结构”命令,一个新的层级“City层次结构”产生了,双击层级将名字改为“Country Hierarchy”,如图3.4.8所示。
图 3.4.8
用鼠标右击“State”字段,在弹出的右键菜单中选择“添加到层次结构”命令,再按同样方法将“Country”字段也添加进层级,如图3.4.9所示。
图 3.4.9
完成后可以看到如图3.4.10所示的层级顺序:Country→State→City。
图 3.4.10
另一个层级关系是产品类别、产品子类、产品。由于数据库遵从第三范式的标准,这3个字段都处于不同的表中,导致不能直接建立层级。对于如何查看表关系的详情,后文会介绍,此处读者只需要理解原因即可,如图3.4.11所示。
解决方法是在产品表里创建两个关联新列,再创建层级。用鼠标右击左侧列表区中的产品表,在弹出的右键菜单中选择“新建列”命令,如图3.4.12所示。
图3.4.11
图3.4.12
在新列中输入如下公式并按Enter键:
重复前面的步骤再创建另一新列,输入如下公式并按Enter键:
以上RELATED公式的原理是根据图3.4.11所示的表关系读取相应的字段值,具体公式介绍后文会补充。完成后的结果如图3.4.13所示。
图3.4.13
完成数据整理后,单击菜单栏中的“关闭并应用”命令退出操作。
注意: 以上介绍的内容仅仅是“编辑查询”功能的冰山一角。全面的“编辑查询”功能还涉及M语言的用法,内容足可写一本书。“编辑查询”是高度灵活和自动化的工具,即使在数据模型完成后,用户仍可以通过“编辑查询”命令返回修改任何ETL方面的缺失。这与传统的BI工具有很大区别。另外,所有的数据改动只是发生在数据集中,不会对数据源造成影响。