本章内容包含:
在数据进入Power BI后对其进行操作既是一门艺术,也是一门科学。导入到任何应用程序中的数据不仅需要注意数据集,还需要注意数据的定义方式。如果你学到了关于数据的一件事,你需要从一开始就对其进行改进。这意味着利用表,创建新的层次结构,建立有意义的连接和关系,并对数据进行分类。当然,您希望您的输出是有意义的,所以您必须密切关注如何在数据模型中安排数据。在本章中,您将了解如何在Power BI Desktop中处理数据,以便设计和部署用于可视化、报告和仪表板的有效数据模型。本章首先教您如何在Power BI Desktop环境中设计和开发基本数据模型,然后向您展示如何在准备好放映时将模型发布到Power BI Services。
创建可视化需要一个数据模型——这只是其中之一。您的数据源还需要正确、具体和精心编制。的确,Power BI可以做一些令人惊叹的事情,通过利用其ETL(提取、转换和加载)框架在多个数据集之间转换数据来支持开发和设计活动。不过,在数据安全地放入桌面应用程序后,可访问的数据仍然需要您的注意。您需要采取一些特定的操作来准备数据,以便可以精心制作模型,并将其作为一个良好的数据集进行可视化和报告。定义良好的数据集可以帮助您分析数据,并获得规范性和描述性的见解。
模型的创建并不会停留在数据摄取上。它需要定义数据类型、利用表设计、创建层次结构、创建联接和关系,以及对模型中的数据进行分类。
将数据导入Power BI Desktop环境后,您的目标是现在操作数据,使其按照您的模型所需的方式工作。旅程的第一站是探索“数据视图”选项卡和“模型视图”选项卡。两者的区别在于,“数据视图》选项卡显示导入数据模型的所有数据。相反,“模型视图”选项卡是基于Power BI认为模型在某个时间点所处位置的模型可视化。
您有责任更新模型,因为导入数据后,这是您的一部分责任。可以在“数据视图”选项卡(通过查看所有数据实例)或“模型视图”选项卡上(通过查看模型本身)执行此操作。数据视图选项卡上的输出示例如图9-1所示;图9-2显示了Model View选项卡上的输出。
无论您在Power BI Desktop中的哪个视图中,模型视图的主功能区都被视为管理许多数据操作的驾驶舱。如图9-3所示,模型视图的主功能区被分解为不同的区域:数据、查询、关系、计算、安全性和共享。每个区域都有自己的一组特征,如表9-1所示。
Power BI模型视图主功能区上的按钮
按钮 | 功能 |
获取数据 | 从数据源获取数据。您可以从100多个数据源选项中进行选择,包括关系型和非关系型。 |
Excel工作簿 | 从常见的Microsoft数据源Excel文件获取数据 |
PowerBI数据集 | 从以前创建的Power BI数据集中获取数据 |
SQL Server | 从SQL Server连接获取数据 |
输入数据 | 在Power BI中创建新表 |
Dataverse | 使用查询字符串(包括DirectQuery支持的字符串)从Power BI连接到环境 |
最近使用的源 | 允许用户访问最近在Power BI中创建的数据源 |
转换数据 | 作为通往Power Query Editor的网关,可以找到编辑和转换数据集的工具 |
刷新 | 以简单的方式刷新数据 |
管理关系 | 在Power BI中建立表之间的关系 |
新建列 | 为特定表创建新列 |
新建表 | 创建新表 |
管理角色 | 确定谁应该能够查看特定的数据模型 |
通过以下身份查看 | 将数据集限制为特定用户 |
发布 | 将数据集发布到Power BI Services |
Power Query Editor与表9-1中所示的许多相同功能,尽管它也有(不足为奇的)用于查询编辑的特定功能,如图9-4所示。
模型视图和高级查询编辑器之间的一个显著区别是,高级查询编辑器允许您设置数据源设置、管理参数、配置编辑器参数、配置行和列、分组依据、排序依据和处理数据类型。它还专注于文本分析的人工智能功能。当您开始管理数据集的设计时,您自然希望了解更多关于行和列管理的信息,因为将行和列配置为您认为合适的行为是数据集行为不可或缺的一部分。因此,正如您可能猜到的那样,您在Power Query Editor下还有一些小技巧要玩,因为您在操作查询而不是模型构建。
之前的章节中向您介绍了导入Excel文件的过程,但练习导入一个或多个Excel文件以建立新的查询永远不会有什么坏处——我给您另一次机会。请记住,您可以使用几个导入选项之一将查询导入Power BI Desktop。首先使用屏幕左侧的“导航”窗格切换到“数据”视图,其中所有现有表都可用。如果要重新启动,请选择“文件”打开一个新文件 ⇒ 主菜单中的新建。但是,如果要导入,请执行以下步骤:
如果选择“加载”,则表示数据不会映射到特定的数据类型。如果选择“转换数据”,Power BI会根据ETL属性尽最大努力映射正确的数据类型。
尽管“数据”视图类似于“增强查询编辑器”,但请记住,“增强查询”编辑器中只显示数据的一个样本,而所有数据在导入数据模型后都可以在“数据”中使用。在“数据”视图中,您正在处理整个数据集,并根据仪表板要求和规范进行实时修改。不过,数据视图和高级查询编辑器都可以实时处理计算列的创建。
加载数据后,可以对其进行操作、添加查询、添加或删除列,或管理现有关系。以下各节详细说明了如何完成每项活动。
Power BI导入数据集时,默认为特定的数据类型。例如,在图9-6中,您可以看到Products表有几列,其中两列表示十进制数作为选项。此处显示的列是ProductMSRP和ProductWhsPrice。数据类型可能不准确,因为这些列本质上是货币列。您可以选择十进制数或固定十进制数。在这种情况下,货币值需要小数。用户还可以在列中放置格式,以更好地表示每个单元格中数据的上下文。
要查看给定列的数据类型,请执行以下步骤。
无论您是尝试将数字数据更改为文本还是将文本更改为数字,此过程在整个Power BI中都是一致的,用于修改数据类型。
根据列是文本还是数字,可以使用“列工具”选项卡上的“格式”下拉菜单将特定属性应用于列,以确保特定行为。在上一节的末尾,我对列应用了Currency格式,但如果列是数字列,您也可以应用其他行为,包括十进制数、整数、百分比和科学数字格式。(见图9-8。)
假设您希望对列应用度量、地理标记或数学行为等属性。在这种情况下,您可以应用摘要(一种从数学上进一步评估数据的方法)或数据类别(一种对基于地理位置的数据进行分类的方法)。Column Tools选项卡的摘要选项如图9-9所示,Data Category选项如图9-10所示。
汇总选项允许将表中的任何一列数字数据汇总为单个值。数据类别选项适用于Power BI映射——换句话说,就是纬度和经度或度数。
您至少导入了一个表并创建了一个数据集。有时,表的名称可能并不完全符合您的要求。或者你想删除一个表。这些都是数据专家在Power BI Desktop中完成数据模型的设计、开发和部署时所面临的常见操作。
在将数据集导入Power BI Desktop后,有时可能需要将一个或多个表添加到数据模型中。也许您想为事务活动创建一个额外的事实表,或者创建一个维度表来支持新的查找。这两种场景都很标准,但幸运的是,添加一个表很简单。不过,在设置了列名之后,您仍然需要进行一些配置。
以下是添加表的方法:
只要没有表具有相同的名称,重命名表就是一项简单的活动。使用Power BI,数据模型中的每个表都必须具有唯一的名称。例如,两个表的名称不能为Product。(您可以有一个名为Product的表和另一个名称为Products的表,但这会非常令人困惑。)最佳实践建议您尽可能具有描述性。要在Power BI Desktop中重命名表,请执行以下步骤:
如果要从模型中删除表,则会面临一些风险。如果关系与表相关联,则这些关系将断开。此外,如果计算字段嵌入到报表中,这些字段也将消失。也就是说,删除表就像移动列一样,是一个相对简单的过程。要删除表,请执行以下步骤:
表将从模型中删除。
重命名或删除列遵循与重命名或删除表相同的做法。唯一需要注意的是,当发生依赖关系(如密钥强制)时,删除列可能会导致潜在的关系破裂。
要重命名列,请执行以下步骤:
删除该列时,如果两个表之间存在关系,则会注意到链接已断开。图9-16显示了Products和Location之间的CityID的Before和After视图。
要删除列,请执行以下步骤
该列将被删除,模型将自动更新。
如果关系断开,表之间的链接将相应更新。
有时,您可能希望添加或修改现有表中的数据。此过程是透明度较低的过程之一,因为它需要用户进入Power Query Editor才能完成操作。如果您已经在Power BI中创建了数据,那么添加或修改的过程比使用文件导入或使用DataQuery获取的数据集要简单一些。要向自己创建的表的行添加行或修改单元格,请执行以下步骤:
如图9-18所示,Manufacturers表有一个空字段,还有一行表示应该更改它。
导入或使用DirectQuery,然后在Power BI中转换数据时,只能在本机数据源中才能添加或更改数据。当然,有一个例外:如果您创建自定义列或计算列,这些列是可编辑的,并在Power BI中进行管理。
假设您想要对图9-19中的Location表进行修改。数据存在于Products.xlsx文件中。您可以添加额外的三个城市或州,并直接在Excel中更改一个城市或县的名称。更新文件后,单击“模型”视图主功能区的“查询”区域中的“刷新”图标。结果会立即更新,如图9-20所示。
在更改Products.xlsx文件之前。
当两个表通过一个公共键连接时,通常意味着一个关系通过键存在。它可以是主主键关系,也可以是主外键关系。在某些情况下,一个表甚至可以在一个字段中连接在一起。单个字段可以映射到具有同类字段的另一个表,从而创建查找。在本节中,我将介绍关系在设计和开发数据模型中的价值。
Power BI认识到,当数据转换时,存在一种关系。例如,如果有两个具有数字数据类型的表,并且它们的名称相似,则认为它们处于一种关系中。Power BI将检测这些关系作为ETL过程的一部分。自动检测有助于减少自己识别关系所需的手动工作。此外,您还可以降低表之间发生错误的风险。
要查看Power BI如何查看数据集之间的关系,请执行以下步骤:
有时主键和外键的名称可能不匹配,但您知道它们之间的数据会创建关系。例如,LocationID和CityID可能是同一个,也可能是StateID和StateAbbott。所有这些都是数据分析师需要手动映射两个表之间关系的示例,即使Power BI本应能够获取模式。要手动建立表和键之间的关系,请执行以下步骤:
删除关系有三种方式之一。您可以删除两个表中的一个表中设置两个表之间联接的字段,也可以使用管理关系接口断开关系,方法与创建接口相同。您可以取消选中“活动”框。然后按Delete。此时会出现一条警告,显示关系中断。你会承认这段关系已经破裂,然后按“确定”
断开关系的最简单方法是转到“模型”视图并在链接上单击鼠标右键。选择“删除”。系统会提示你承认这段关系将会破裂。
随着时间的推移,当您在Power BI中构建数据集时,添加上下文非常重要,这样任何访问您开始创建的数据集的用户都可以将拼图拼在一起。无论您的描述性数据是与单个数据集还是与多个数据集绑定,对于负责管理数据的人员来说,这都是一项持续的活动。帮助任何遇到您的数据的用户更好地了解他们正在查看的内容的一种方法是在每个表或列属性中添加元数据——换句话说,是更好地描述数据的数据。
要向每个表或列添加元数据,请执行以下步骤,具体取决于它是表还是列:
注意:不要将数据类别与数据类型混淆。数据类别是对模型中的数据进行分组的一种方式。而如果数据是文本、数字或混合数据,则数据类型是特定的,有助于进行限定。将城市视为一个数据类别,将数据类型视为文本。
在数据集中排列数据与在可视化数据中转换数据时的体验不同。Power BI中的排列数据可以通过几种不同的方式进行分类:排序依据、分组依据和隐藏数据。接下来的几节将深入了解每种类型的细节。
您很容易被“排序依据”和“分组依据”混淆。“排序依据》按列按升序(A–Z)和降序(Z–A)对数据进行排序。要提升或降低数据集中的数据,您需要转到Power Query Editor来完成任何形式的操作排序。一次只能按一列进行排序。
分组依据允许根据数学运算(例如计数、总和和平均值)和另一个字段对字段进行分组。高级选项允许您使用一个或多个字段进行分组,如图9-22所示。
有时,您可能希望抑制表中的列数据。在显示结果时,列可能在数据集中提供的价值很小,或者数据给可视化增加了太多复杂性。这可能是因为该列包含在数据集中时,实际上提供了不准确的数据。隐藏数据的原因可能有很多。但是,您可以暂时隐藏它,而不是在以后可能仍然需要数据时简单地删除列。
要隐藏列,如图9-23所示,请执行以下步骤:
您可以看到一只眼睛出现在字段中,其中有一条线穿过它,表明它已被隐藏。
如果您想在任何时候取消隐藏列,只需重复这些步骤,但这次将“隐藏”滑块滑动到“否”。
无论您对Power BI Desktop使用哪种导入方法,都会受到限制。并非所有的数据模型都需要计算,但基本要求是需要数学计算来帮助在某个时刻分析定性数据。计算百分比和比较数字太常见了。
DAX(Data Analysis eExpression的缩写)是为Power Bi Desktop中的计算而编写的语言。
这种基于公式的语言由300多个单独或组合使用的公式组成,用于创建面向数学的度量。DAX中的许多公式与Excel中的公式完全相同。
每次导入数据或通过DirectQuery连接到数据源以创建可视化时,您可能会惊讶地发现Power BI让您的生活变得轻松多了,因为您几乎不需要对数据集进行转换。不过,有一个问题:假设你需要量化你正在可视化的数据。您的目标可能是从表中开发计算,以便扩展数据集。
Power BI Desktop允许从源计算和导入所有度量类型。
这些组件不仅对可视化工作很重要,而且对DAX计算也很重要:
不管是什么原因,使用其中一种技术扩展数据集都是因为导入数据或连接到实时数据集无法为用户提供量化和公式丰富的选择。请记住,这份清单并非详尽无遗。对计算数据进行量化处理还有其他原因。没有办法从一开始就知道数据集的期望模式、趋势和需求。
尽管我在本章中倾向于讨论仅从单一来源导入数据,但企业组织将多个来源的数据导入单一来源并不罕见。在这种情况下,组织必须合并这些数据源中的列,并将它们连接到表和列中。
假设您想要创建一个列,其中包含与公司位置数据相关联的所有股票代码的数据。数据源位于两个不同的源中。您需要做的是创建一个新列,该列从两列中获取数据,并在导入和转换后在其中一个表中创建一个条目。要执行此操作,请执行以下步骤:
这样做可以创建列内容的联合视图,该视图基于一个公共字段(Ticker Symbols字段)聚合内容。不同之处在于,这两个表中都没有位置,如图9-25所示。
当数据模型准备好发布到Power BI Services时,这个过程就像按下按钮一样简单——假设您已经在https://powerbi.microsoft.com.要求您提供用户名和登录所有Power Platform/Office 365应用程序的电子邮件地址。根据您拥有的许可证类型,您的型号的数据量和刷新率会有所不同。
要发布您的模型,请转到Power BI Desktop上的Home选项卡,然后按publish,如图9-26所示。