本章内容将介绍
- 发现如何从关系数据库和非关系数据库中提取数据
- 学习如何使用Power BI使用在线和实时数据源
- 跨多个数据源应用分析服务
- 使用Power BI通过静态和动态数据解决纠正措施
数据有时可能有点复杂。诚然,上传一个包含几个电子表格的文件,或者一个包含单个数据流的提要来加载和转换是孩子的游戏。然而,当您将数据集放在公司范围的企业应用程序中,并不断向其写入事务时,会发生什么?这种情况完全不同。企业应该(出于充分的理由)关注商业智能(BI)结果的集成和输出。使用Power BI,当涉及到他们的数据系统或与第三方数据源的通信时,组织不需要担心复杂的技术操作。正如您在本章中所看到的,集成是流动的——无论连接要求如何,Power BI都有能力使用标准化的连接过程。
从基于Microsoft的文件系统获取数据
在第5章中,我将讨论直接从PowerBI桌面加载数据,甚至从桌面上存储的文件夹加载数据。现在,我希望您将注意力集中在与基于Microsoft的应用程序的集成上,如OneDrive for Business和SharePoint 365,这两个应用程序都是基于Microsoft 365的应用程序。
记住使用OneDrive时,您需要登录到Microsoft 365。只要登录,就可以访问文件和文件夹,就像访问本地硬盘一样。唯一的区别是你的硬盘是Microsoft OneDrive。在图6-1中,您可以看到OneDrive for Business文件夹的路径与硬盘上标准文件或文件夹的路径没有什么不同。
另一方面,SharePoint 365为文档管理和协作提供了多种选项。第一个选项是搜索网站集、网站或子网站(在Power BI中称为SharePoint文件夹)。在这种情况下,您必须输入完整的SharePoint网站URL。例如,如果您的公司有内部网,则该网站可能http://xxx.sharepoint.com.
在输入完整的URL并使用Active Directory凭据登录后,您会看到一个示例,如图6-2所示。
您还可以在Power BI中收集、加载和转换一个或多个SharePoint列表。(在SharePoint中,列表看起来像一个简单的容器,有点像Excel电子表格,但更像一个数据库。)使用列表,用户可以在可能收集文档的SharePoint网站上收集信息,尤其是元数据。对于列表,数据是按行收集的,每一行都表示为类似于数据库或电子表格项目的行项目。若要加载SharePoint列表,您必须知道SharePoint网站集、网站或子网站的URL路径。一旦用户通过身份验证,就会加载该用户的所有可用列表。
提示:当你刚开始使用Power BI时,你可能会想把所有文件都放在桌面上,作为管理数据的一种方式。然而,过了一段时间,处理同一数据集的多个版本变得难以管理。这就是为什么你应该使用OneDrive或SharePoint网站等云选项来管理你的文件和数据集、报告、仪表板和连接文件。它有助于保持所有的流线型。
使用关系数据源
许多组织使用关系数据库来记录事务活动。通常运行关系数据库的系统示例有基于企业资源规划(ERP)、客户关系管理(CRM)和供应链管理(SCM)的系统。另一种类型的系统可能是电子商务平台。这些系统中的每一个都有一个共同点:所有系统都可以通过与关系数据库连接而不是提取单个数据文件来评估数据,从而受益于Power BI等商业智能工具。
企业依赖Power BI等解决方案,通过识别趋势并帮助他们预测指标、指标和目标来帮助他们监控运营状态。您可以开始使用Power BI Desktop连接到云中或市场上的任何关系数据库。
在图6-3所示的示例中,我让Power BI连接到Azure SQL Server,这是微软基于web的企业数据库。根据您的关系数据库解决方案,您有几个选择。一种是选择“获取数据”⇒ “更多…”命令,然后查找“数据库”。在这里,您可以找到Microsoft特定的数据库。否则,如果要查找其他类型的数据源,请选择“获取数据”⇒ 更多…并寻找其他。您将在本节中找到40多个备用数据库选项。
在这种情况下,由于所选解决方案是基于Microsoft Azure的产品,您可以在“搜索”框中搜索该产品,也可以在选择“更多”后单击Azure选项。
在“获取数据”下选择数据库源类型后,必须输入关系数据库的凭据。在这种情况下,您输入以下信息:
- Server name
-
Database name
-
模式类型--导入或DirectQuery
从关系数据源导入数据
连接到数据源通常很棘手,因为您需要确保数据库源和命名约定正确无误。然而,一旦你克服了这两个事实,你通常会一帆风顺——好吧,至少在你需要选择要导入的数据之前。如果数据库中有很多表,那么您可能会不知所措。
将数据库连接到Power BI Desktop后,Navigator将显示数据源中的可用数据,如图6-6所示。在这种情况下,将显示来自Azure SQL数据库的所有数据。可以选择一个表或其中一个实体来预览内容。
请记住,在转移到以下数据集之前,加载到模型中的数据必须是正确的数据。要从要摄入到Power BI Desktop的关系数据源导入数据,然后加载或转换并加载数据,请执行以下步骤:
- 在导航器中选择一个或多个表。
所选数据将导入Power Query Editor。 - 如果您希望根据Power BI模型的当前状态自动将数据加载到该模型中而不做任何更改,请单击“加载”按钮。
- 如果希望Power BI执行Power Query引擎,请单击“转换数据”按钮。
引擎执行诸如清理过多的列、分组数据、删除错误和提高数据质量等操作。
SQL query
您可能不应该感到惊讶,但是PowerBI有一个智能的SQL查询编辑器。假设您确切地知道需要从Azure SQL数据库中获得哪些表。在这种情况下,您所需要做的就是只需几次按键即可调用SQL查询中的表,而不是从Azure SQL Server请求所有表。例如,图6-7为dataorpowerbi数据库中的一个表提供了一个有代表性的SELECT查询。
从非关系数据源导入数据
一些组织使用非关系数据库,如Microsoft Cosmos DB或Apache Hadoop来处理其无数重大数据挑战。你会问,有什么区别?这些数据库不使用表来存储数据。在非关系(NoSQL)数据的情况下,数据可能以各种方式存储。选项包括文档、键值、宽列和图形。所有数据库选项都提供了灵活的模式,并且可以轻松地扩展大数据量。
尽管仍然需要对数据库进行身份验证,但查询方法有点不同。例如,对于Microsoft Cosmos DB(由Microsoft创建的NoSQL数据库,它是Power BI的补充),用户必须识别端点URL、主键和只读键,以便可以在Azure门户中创建与Cosmos DB实例的连接。要连接到Cosmos数据库,请执行以下步骤:
- 选择“获取数据”⇒ 更多…来自Power BI的“主页”选项卡。
- 在出现的子菜单中,找到Azure子菜单。
- 单击以选择Azure Cosmos DB选项,如图所示6-8,允许您创建一个非关系数据库连接。
- 在URL字段中输入Cosmos DB的URL,然后单击OK。(见图6-9)
警告:使用NoSQL数据库时,需要知道密钥才能进行身份验证。对于Cosmos DB,您可以在Azure门户中的Cosmos DB实例设置、密钥链接下找到这些密钥。请确保向下复制主读写密钥和辅助读写密钥以及主只读密钥和辅助只读密钥。
将JSON文件数据导入Power BI
JSON文件看起来根本不像结构化数据文件。为什么会这样?JSON(JavaScriptObjectNotation的缩写)是一种轻量级的数据交换格式。JSON文件类型既不是结构化的,也不是非结构化的,它被称为半结构化的,因为默认情况下该文件类型是作为键值对编写的。对于基于JSON的记录,在Power BI中成为报表之前,必须提取并规范化数据。这就是为什么必须使用Power BI Desktop的Power Query Editor转换数据。
如果您的目标是从JSON文件中提取数据,请单击“转换”选项卡并在“转换”组中选择“到表”,将列表转换为表。另一个选项是通过单击记录链接来深入查看特定记录。如果要预览记录,请在不单击链接的情况下单击单元格。这样做会在Power Query Editor底部打开一个数据预览窗格。
需要在杂草中多挖一点吗?您可以在“查询设置”中单击源步骤旁边的齿轮,打开一个指定高级设置的窗口。在那里,您可以在“文件原点”下拉列表中指定文件编码等选项。当您准备好进行展示并且JSON文件已转换时,请单击“关闭并应用”将数据加载到Power BI数据模型中。在图6-10中的示例中,员工记录已经从JSON文件转换而来。
在Power Query Editor转换文件后,您可能仍然需要编辑特定字段。在本例中,Country字段包含所有空条目,因此它是字段删除的主要候选项。在下拉菜单的帮助下,可以很容易地进行这样的选择,如图6-11所示,您可以在其中向下钻取和删除特定的记录。
从在线数据源导入数据
Power BI中广泛提供企业应用程序和第三方数据源。事实上,微软有100多个连接器,可连接其他供应商开发和管理的应用程序,包括Adobe、Denodo、Oracle和Salesforce等。当然,微软也支持自己的企业应用程序解决方案,包括Dynamics 365、SharePoint 365和Power Platform系列中的解决方案。使用Power BI Desktop中的“获取数据”功能,可以在多个类别中找到在线资源,但最好的选择是在“在线服务”标题或“其他”标题下。
在该示例中,如图6-12所示,我已经建立了到Dynamics365BusinessCentral的连接。
要连接到在线服务,请执行以下步骤:
- 转到Power BI的“主页”选项卡中的“获取数据”。
- 在“转到数据”菜单的底部,选择“更多…”选项。选择“更多”可为用户提供更多数据源选项。
- 从“更多…”子菜单中选择“联机服务”。在线服务包括企业应用程序,其中提供了大型数据集(假设用户凭据可以访问)。
- 在右侧,单击Dynamics365BusinessCentral(见图6-13)。
这样可以连接到Microsoft的Small Business ERP解决方案。 - 在屏幕底部,单击“连接”。最终结果是建立了与Microsoft Dynamics 365 Business Central的连接。
然后要求您输入您的在线组织凭据。通常,此部分已预填充,因为它是与Azure Active Directory关联的单一登录登录。(参见图6-13。)
验证会话后,数据库中特定源的所有可用数据都将加载到Power Query Editor中的Navigator窗格中,如图6-14所示。Power Query在将数据加载到Navigator之前对其进行转换。
创建数据源组合
当数据来自多个来源时,事情可能会变得复杂。创建数据之间的关系,以期产生计算和数据规则,这将创建一组新的“gotchas”。在Power BI中,计算是使用数据分析表达式语言(DAX)构建的。因此,不用说,当您需要将包含计算、函数和规则集的多个源汇集在一起时,这个过程可能是一项艰巨的活动。然而,微软凭借其Azure Analysis Services大大减轻了负担。
Azure Analysis Services类似于Power BI中的数据建模和存储产品。当组织需要集成来自多个数据源(包括数据库和在线源)的数据时,Azure Analysis Services可以帮助组织将数据简化为单个包。一旦数据在所谓的Azure Analysis Services多维数据集中组织并可使用,用户就可以进行身份验证、选择要访问的多维数据集,并查询一个或多个表。
从Azure Analysis Services连接和导入数据
与其他数据源一样,您可以单击Power BI Desktop Home选项卡的Get data按钮来访问Analysis Services,如图6-15所示。
选择Analysis Services后,需要提供Analysis Services服务器地址和数据库名称。此外,还会要求您选择是导入数据还是使用实时连接。一个可选参数是输入MDX或DAX参数。(图6-16显示了您需要填写的字段。)
技术:你必须知道DAX和MDX之间的区别。MDX概念与多维性有关——换句话说,是同一数据的几个方面。因此,您可以查询Azure Analysis Cube以获取数据维度和度量值作为结果。不过,使用DAX,您可以查询的结果是Power BI独有的计算和度量。
使用Connect Live访问数据
不要将Connect Live与Live Connection模式混淆。Connect Live特定于Azure Analysis Services,它使用表模型和DAX来构建计算。构建这样的模型与Power BI相当。不过,使用Connect Live,您可以将数据和DAX计算保留在其原始托管位置,这意味着没有理由将它们导入Power BI。由于Azure Analysis Services提供了高速刷新率,因此Power BI中的数据刷新周期几乎是即时的。
您永远不必担心达到Power BI数据刷新阈值,这有助于提高组织的数据质量,尤其是在交付报告时。
Connect Live还允许您使用DAX或MDX直接查询Azure Analysis Services中的表,类似于关系数据库。也就是说,大多数用户可能会将他们想要的所有数据直接导入Power BI,无论是来自文件、数据库还是使用Azure Analysis Services模型的服务。另一种选择是使用实时连接模式。
通过使用数据建模和DAX度量,所有活动都可以集中执行,从而实现类似的数据可维护性。
处理动态数据的模式
可靠无限制地导入数据的行之有效的方法是使用“直接导入”方法。导入数据意味着数据存储在Power BI文件中,并由用户从Power BI桌面与报告一起发布到Power BI服务。因此,您可以放心,如果可以直接与数据集交互,数据将按照您希望的方式进行转换和清理。当然,有时这种方法可能不适合您或您的组织。
两全其美:双模
当您处理动态数据时,某些数据集可能允许一些直接导入。另一方面,其他只能通过查询来处理。当可以使用Import和DirectQuery模型导入数据时,另一种存储模式可用:Dual模式。在双模式下,Power BI选择最有效的方式来处理数据。
不要在以下两种情况中的任何一种情况下使用“直接导入”:
- 具有复杂安全要求的环境
- 大型、难以管理的数据集,其中瓶颈的可能性很高
在这种情况下,请使用DirectQuery来获取动态数据,因为您可以直接查询数据源,而无需担心将数据集的副本导入Power BI中——这是一个可能过大的数据集。使用DirectQuery还可以帮助您避免直接导入经常带来的另一个挑战:数据的最近性和相关性。使用DirectQuery,您总是知道您的数据是新鲜的。相比之下,使用Direct Import,您需要自己更新数据集。
请记住,如果您曾经需要切换存储模式,您可以通过从Power BI导航转到Model视图来执行此操作。首先,在“属性”窗格中选择需要修改的数据表。然后从列表底部的存储模式下拉菜单中更改模式。有三个选项:导入、DirectQuery和双重。
修复数据导入错误
一路上,如果你发现自己遇到一两个导入错误,不要感到惊讶。大多数情况下,罪魁祸首与查询超时、数据映射错误或数据类型问题有关。了解错误消息后,这些问题很容易解决。本节介绍了每种情况。
“超时已过期”
你已经读到过一些系统经历了繁忙的交通,而其他系统几乎没有被触及。当您大量使用数据库时,管理部门通常会限制给定用户的带宽,以确保没有一个用户占用所有基础设施容量。假设Power BI查询需要一个重要的数据集。同时,系统负载很重,数据集无法在系统设置的分布式时间内完全返回。在这种情况下,结果是查询超时,因为系统会使查询过期。
“数据格式无效”
假设您将一个表导入Power BI,然后您看到一条消息,上面写着:“我们找不到任何格式化为表的数据。”这到底意味着什么?从Excel导入数据时,Power BI希望数据的最上面一行包含列标题。如果不是这样,则需要修改Excel工作簿,以便将第一行视为页眉。否则,您将继续收到此错误,直到第一行的格式正确为止。
“--缺少数据文件”
无论何时更改文件的目录或路径,无论是在本地桌面上还是在云目录中,Power BI desktop都会出现错误。尽管Power BI是一个智能应用程序,但它并不能跟踪文件的每一次移动。
另一种可能出现丢失数据文件问题的情况是更改文件的安全权限。不要以为Power BI会允许您访问应用程序,因为您之前被授予了访问权限——事实恰恰相反。要纠正此问题,请执行以下步骤:
- 单击“转换数据”按钮打开Power BI查询编辑器。
- 打开Power BI查询编辑器后,找到“查询”窗格。您将在此处找到一个或多个错误。
- 突出显示报告错误的查询。
- 在屏幕右侧的“查询设置”下,找到“应用的步骤”,然后选择“源”。您将重新配置源设置。
- 通过单击源旁边的“设置”按钮(齿轮图标)并根据需要进行任何权限调整,修改源以匹配新位置。
- 完成后按OK。
“转换并不总是完美的”
这可能很难相信,但即使是技术也会在进口时产生数据错误。(等等,技术是容易出错的?真的吗?)当你试图将数据导入Power BI时,可能会发生这种情况。经过你的努力,一列是空白的,或者充满了各种错误的数据类型。当系统难以解释Power BI中的数据类型时,会引发错误。
解决问题的方法对于每个数据源都是独一无二的。尽管一个源可能需要数据转换,但另一个源也可能需要完全删除。
请记住,始终从一开始就在数据源中指定正确的数据类型。与DirectQuery相比,完成直接导入还可以消除许多标准数据源错误。