使用 Power BI 和 OData 查询连接数据

Azure DevOps Services |Azure DevOps Server |Azure DevOps Server 2022 |Azure DevOps Server 2020

若要将数据拉取到 Power BI 中,建议使用开放数据协议 (OData) 查询。 OData 是由结构化信息标准组织(OASIS)建立的标准,并由国际标准化组织和国际伊克委员会(ISO/IEC)批准。 OData 定义了生成和使用 REST API 的最佳做法。 有关详细信息,请参阅 OData 文档

若要快速开始,请参阅 使用 OData 查询的示例报表概述。 有关其他方法的信息,请参阅 关于 Power BI 集成

Power BI 可以运行 OData 查询,该查询可将筛选或聚合的数据集返回到 Power BI。 OData 查询具有两个优点:

  • 所有筛选都是服务器端完成的。 仅返回所需的数据,这会导致刷新时间缩短。
  • 可以在服务器端预聚合数据。 OData 查询可以执行聚合,例如工作项汇总和构建失败率。 聚合是服务器端完成的,并且仅将聚合值返回到 Power BI。 通过使用预聚合,可以跨大型数据集执行聚合,而无需将所有详细数据拉取到 Power BI 中。

在本教程中,你将:

  • 编写和测试 OData 查询。
  • 从 Power BI 运行 OData 查询。

先决条件

类别 要求
访问级别 - 项目成员
- 至少具有基本访问权限。
权限 默认情况下,项目成员有权查询 Analytics 和创建视图。 有关服务和功能启用和常规数据跟踪活动的其他先决条件的详细信息,请参阅 访问 Analytics 的权限和先决条件。

使用 Visual Studio Code 编写和测试 OData 查询

编写和测试 OData 的最简单方法是将 Visual Studio Code 与 OData 扩展配合使用。 Visual Studio Code 是 Windows、Mac 和 Linux 上可用的免费代码编辑器。 OData 扩展提供语法突出显示和其他可用于编写和测试查询的函数。

安装 Visual Studio Code 和 OData 扩展

  1. 安装 Visual Studio Code

  2. 打开 Visual Studio Code,选择“扩展,然后搜索 odata。 在结果列表中,选择 vscode-odata,然后安装此扩展。

  3. 在 Visual Studio Code 中,通过创建扩展名为 .odata 的空文件来创建 OData 文件。 你可以将其命名为所需的任何名称,例如 filename.odata。 但它必须具有 .odata 扩展才能启用 OData 扩展功能。

编写 OData 查询

编写 OData 查询。 有关示例查询,请参阅 使用 OData 查询的示例报表概述

以下查询返回特定区域路径下的前 10 个工作项。 要使用该查询,请将{organization}{project}{area path}替换为您的值。

https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItems?
      $select=WorkItemId,Title,WorkItemType,State,CreatedDate
      &$filter=startswith(Area/AreaPath,'{area path}')
      &$orderby=CreatedDate desc
      &$top=10

若要跨项目查询,请完全省略 /{project}

有关详细信息,请参阅 示例报表和快速参考索引

在 Visual Studio Code 中编写查询后,应会看到语法突出显示。

显示 Visual Studio Code 中的 OData 文件的屏幕截图。每种类型的代码元素都有自己的颜色。

测试 OData 查询

  1. 若要测试 OData 查询,请将光标置于查询文本中的任意位置,然后选择“ 查看>命令面板”。

  2. 在搜索框中,输入 odata 以显示 OData 命令。

    显示 Visual Studio Code OData 扩展命令面板的屏幕截图。

  3. 选择 OData:打开。 此作将多行查询合并为一行 URL,运行查询,并在默认浏览器中打开结果。

    • OData 查询结果集采用 JSON 格式。 若要查看结果,请为浏览器安装 JSON 格式化程序扩展。 多个选项适用于 Chrome 和 Microsoft Edge。

      浏览器的屏幕截图,其中显示了以可读格式显示的 OData 查询的 JSON 输出。

    • 如果查询出错,Analytics 服务将返回 JSON 格式的错误。 例如,以下错误指出查询选择不存在的字段。

      以可读格式显示 JSON 输出的浏览器的屏幕截图。输出中的消息指示 OData 查询中出现错误。

验证查询是否正常工作后,可以从 Power BI 运行它。

从 Power BI 运行 OData 查询

若要从 Power BI 运行 OData 查询,请执行以下步骤。

将多行 OData 查询合并为单行查询

在 Power BI 中使用查询之前,必须将多行 OData 查询转换为单行查询。 若要使用 OData: Combine 命令用于此目的,请执行以下步骤:

  1. 创建包含多行查询文本的 OData 文件的副本。 建议执行此步骤,因为无法将单行查询转换回可读的多行查询。

  2. 在 Visual Studio Code 中,打开 OData 文件的副本,并将光标放在查询文本中的任意位置。

  3. 选择查看>命令面板。 在搜索框中,输入 odata。 然后在结果列表中,选择 “OData:合并”。

    多行查询将转换为单行查询。

    Visual Studio Code 中 OData 文件的截图。该文件包含查询的多行版本和单行版本。

  4. 复制整个行,以便在下一部分使用。

从 Power BI 运行查询

  1. 在 Power BI 中,选择获取数据>OData 源。 有关详细信息,请参阅 使用 OData 查询创建 Power BI 报表。

    Power BI 的屏幕截图,其中突出显示了“获取数据和 OData 源”。

  2. OData 源 窗口中的 URL 框中,粘贴在上一部分中复制的 OData 查询,然后选择“ 确定”。

    OData 提要对话框的屏幕截图。URL 框中包含一个单行的 OData 查询。

    Power BI 显示预览页。

    Power BI 中预览页面的屏幕截图,其中包含用于加载和转换数据的按钮。表列出了有关多个工作项的信息。

指定查询选项

  1. 在预览页上,选择“ 转换数据 ”以打开 Power Query 编辑器。

    Power Query 编辑器的屏幕截图。表列出了多个工作项的 OData 源数据。

  2. 在功能区上,选择 “高级编辑器”。

    Power BI 功能区的屏幕截图。突出显示了高级编辑器。

  3. 在“高级编辑器”窗口中,水平滚动以查看 [Implementation="2.0"] 查询中的参数。

    “高级编辑器”窗口的屏幕截图。查询的末尾可见,并突出显示了实现参数。

  4. 用以下字符串替换 [Implementation="2.0"]:

    [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]

    “高级编辑器”窗口的屏幕截图。查询的末尾可见。它包含替换字符串并突出显示。

    此更改有助于防止限制错误。 新值具有以下效果:

    • 它们指示 Power BI 引用 OData 版本 4。
    • 它们指示 Analytics 服务省略 null 的任何值,从而提高查询性能。

    Power Query 试图通过为遇到的每个 null 值生成另一个查询来将 null 值解析为错误。 此操作可能会导致数千个查询。 这些查询可能迅速超过使用阈值,从而导致用户帐户受到限制。

  5. 选择“完成关闭高级编辑器并返回到 Power BI Power Query 编辑器。 可以使用Power Query 编辑器执行以下可选操作:

    • Query1 查询重命名为更具体的内容。
    • 将列转换为特定类型。 Power BI 会自动检测类型,但可能需要将列转换为特定数据类型。
    • 添加计算列。
    • 删除列。
    • 将列展开为特定字段。

使用数据创建报表

选择“ 关闭并应用 ”以保存设置并将数据拉取到 Power BI 中。 数据刷新后,可以像在 Power BI 中一样创建报表。

Power BI 功能区的屏幕截图。突出显示了“关闭和应用”按钮。