什么是 Power Query?
Power Query 是一个数据转换和数据准备引擎。 Power Query 有一个用于从源获取数据的图形界面和用于应用转换的 Power Query 编辑器。 由于该引擎可用于许多产品和服务,因此存储数据的目标位置取决于 Power Query 的使用位置。 使用 Power Query,可以对数据进行提取、转换和加载 (ETL) 处理。
左侧具有符号化数据源的关系图,在中心传递 Power Query 进行转换,然后转到右侧的四个目标:Microsoft Azure Data Lake Storage、Microsoft Dataverse、Microsoft Excel 和 Microsoft Power BI。
Power Query 如何帮助获取数据
企业用户将多达 80% 的时间花在数据准备上,这会延误分析和决策工作。 造成这种情况的挑战有很多,Power Query 可帮助解决其中许多难题。
现存挑战 | Power Query 如何提供帮助? |
---|---|
查找和连接数据太困难 | 借助 Power Query,可以连接到各种数据源,包括所有大小和形状的数据。 |
数据连接体验过于分散 | 所有数据源的体验一致性和查询功能一致性。 |
数据在使用前往往需要重构 | 高度交互式和直观的体验,可对任何规模的任何数据源快速、反复地构建查询。 |
任何构形都是一次性的,不可重复 | 使用 Power Query 访问和转换数据时,需要定义一个可重复的过程(查询),以便将来轻松刷新,获取最新数据。 如果需要修改进程或查询来考虑基础数据或架构更改,则可以使用与最初定义查询时相同的交互式直观体验。 |
数据量(数据大小)、速度(变化率)和多样性(数据源和数据形状的广度) | Power Query 能够针对整个数据集的子集定义所需的数据转换,从而轻松地筛选数据并将数据转换为易于管理的大小。 可以手动刷新 Power Query 查询,也可以利用特定产品(例如 Power BI)中的计划刷新功能,甚至以编程方式(通过使用 Excel 对象模型)刷新。 由于 Power Query 可连接数百个数据源,并为上述每个源提供 350 多种不同类型的数据转换,因此你可以处理来自任何数据源和任何形状的数据。 |
Power Query 体验
Power Query 用户体验通过 Power Query 编辑器用户界面提供。 此界面的目的是通过与一组用户友好的功能区、菜单、按钮和其他交互式组件进行交互,帮助你应用所需的转换。
Power Query 编辑器是主要的数据准备体验,你可以在其中连接到各种数据源,并通过预览数据和从 UI 中选择转换来应用数百个不同的数据转换。 无论基础数据源有什么限制,这些数据转换功能在所有数据源中都是通用的。
通过与 Power Query 界面的组件交互创建新转换步骤时,Power Query 会自动创建完成转换所需的 M 代码,因此无需编写任何代码。
目前,有两种 Power Query 体验可用:
- Power Query Online - 可在 Power BI 数据流、Microsoft Power Platform 数据流、Azure 数据工厂处理数据流等集成中找到,通过在线网页提供体验。
- Power Query for Desktop - 存在于 Power Query for Excel 和 Power BI Desktop 等集成中。
注意
尽管存在两种 Power Query 体验,但它们在每中情况下都能提供几乎相同的用户体验。
转换
Power Query 中的转换引擎包含许多预生成的转换函数,这些函数可通过 Power Query 编辑器的图形界面使用。 这些转换可以像删除列或筛选行一样简单,也可以是常见的将第一行用作表头。 还有高级转换选项,例如合并、追加、分组、透视和逆透视。
所有这些转换都可以通过选择菜单中的转换选项,然后应用该转换所需的选项来实现。 下图显示了 Power Query 编辑器中可用的一些转换。
有关详细信息,请参阅:快速入门:使用 Power BI Desktop 中的 Power Query。
数据流
Power Query 可在 Power BI 和 Excel 等许多产品中使用。 但是,在某个产品中使用 Power Query 会将其用途限制在该特定产品中。 数据流是 Power Query 体验的产品无关服务版本,可在云中运行。 使用数据流,你可以以相同的方式获取数据和转换数据,但不能将输出发送到 Power BI 或 Excel,而是将输出存储在其他存储选项(如 Dataverse 或 Azure Data Lake Storage)中。 这样,就可以在其他产品和服务中使用数据流输出。
详情请见:什么是数据流?
Power Query M 公式语言
在任何数据转换方案中,都有一些转换无法通过图形编辑器以最佳方式完成。 其中一些转换可能需要图形界面目前不支持的特殊配置和设置。 Power Query 引擎在所有 Power Query 转换中使用后台脚本语言:Power Query M 公式语言,也称为 M 语言。
M 语言是 Power Query 的数据转换语言。 查询中发生的任何操作最终都以 M 语言编写。如果要使用 Power Query 引擎执行高级转换,可以使用高级编辑器访问查询的脚本,并根据需要对其进行修改。 如果发现用户界面函数和转换无法准确执行所需的更改,可以使用高级编辑器和 M 语言对函数和转换进行微调。
let
Source = Exchange.Contents("xyz@contoso.com"),
Mail1 = Source{[Name="Mail"]}[Data],
#"Expanded Sender" = Table.ExpandRecordColumn(Mail1, "Sender", {"Name"}, {"Name"}),
#"Filtered Rows" = Table.SelectRows(#"Expanded Sender", each ([HasAttachments] = true)),
#"Filtered Rows1" = Table.SelectRows(#"Filtered Rows", each ([Subject] = "sample files for email PQ test") and ([Folder Path] = "\Inbox\")),
#"Removed Other Columns" = Table.SelectColumns(#"Filtered Rows1",{"Attachments"}),
#"Expanded Attachments" = Table.ExpandTableColumn(#"Removed Other Columns", "Attachments", {"Name", "AttachmentContent"}, {"Name", "AttachmentContent"}),
#"Filtered Hidden Files1" = Table.SelectRows(#"Expanded Attachments", each [Attributes]?[Hidden]? <> true),
#"Invoke Custom Function1" = Table.AddColumn(#"Filtered Hidden Files1", "Transform File from Mail", each #"Transform File from Mail"([AttachmentContent])),
#"Removed Other Columns1" = Table.SelectColumns(#"Invoke Custom Function1", {"Transform File from Mail"}),
#"Expanded Table Column1" = Table.ExpandTableColumn(#"Removed Other Columns1", "Transform File from Mail", Table.ColumnNames(#"Transform File from Mail"(#"Sample File"))),
#"Changed Type" = Table.TransformColumnTypes(#"Expanded Table Column1",{{"Column1", type text}, {"Column2", type text}, {"Column3", type text}, {"Column4", type text}, {"Column5", type text}, {"Column6", type text}, {"Column7", type text}, {"Column8", type text}, {"Column9", type text}, {"Column10", type text}})
in
#"Changed Type"
详情请见:Power Query M 公式语言
在何处使用 Power Query?
下表列出了可在使用 Power Query 的 Microsoft 产品和服务。
产品 | M 引擎1 | Power Query 台式计算机2 |
Power Query 联机3 |
数据流4 |
---|---|---|---|---|
Excel for Windows | 是 | 是 | 否 | 否 |
Excel for Mac | 是 | 是 | 否 | 否 |
Power BI | 是 | 是 | 是 | 是 |
Power Apps | 是 | No | 是 | 是 |
Power Automate | 是 | No | 是 | 否 |
Power BI 报表服务器 | 是 | 是 | 否 | 否 |
Azure 数据工厂 | 是 | No | 是 | 是 |
Microsoft Fabric 中的数据工厂 | 是 | No | 是 | 是 |
SQL Server Integration Services | 是 | 否 | No | 否 |
SQL Server Analysis Services | 是 | 是 | 否 | 否 |
Dynamics 365 Customer Insights | 是 | No | 是 | 是 |
1M 引擎 | 运行以 Power Query 公式语言(“M”)表达的查询的基础查询执行引擎。 |
2Power Query Desktop | 桌面应用程序中的 Power Query 体验。 |
3Power Query Online | Web 浏览器应用程序中的 Power Query 体验。 |
4数据流 | Power Query 是在云中运行的服务,与产品无关。 存储的结果可作为服务用于其他应用程序中。 |
另请参阅
Power Query 中的数据源
获取数据
Power Query 快速入门
使用 Power Query 塑造和合并数据
什么是数据流