使用 Power BI 可视化 Azure Cosmos DB for NoSQL 数据

了解如何将 Azure Cosmos DB 数据连接到 Power BI Desktop,以及如何为可作的业务见解创建见解报表。

正在连接

使用此选项从 Power BI Desktop 连接到 Azure Cosmos DB:

  • 使用 Power BI 的 Azure Cosmos DB 连接器将 Power BI Desktop 连接到 Azure Cosmos DB 帐户。 此选项仅在导入模式下可用,并且使用为事务工作负荷分配的请求单位(RU)。

注意

将 Power BI Desktop 中创建的报表发布到 PowerBI.com。 无法从 PowerBI.com 直接提取 Azure Cosmos DB 数据。

先决条件

在按照此 Power BI 教程中的说明作之前,请确保你有权访问这些资源:

若要在 PowerBI.com 中共享报表,需要在 PowerBI.com 中使用帐户。 若要了解有关 Power BI 和 Power BI Pro 的详细信息,请参阅 https://powerbi.microsoft.com/pricing

使用 Microsoft Fabric 中的镜像生成 BI 报表

在现有 Azure Cosmos DB 容器上启用镜像,以近乎实时地在此数据上生成 BI 报表或仪表板。

可以在现有 Azure Cosmos DB 容器上启用 Azure Synapse Link,并基于此数据生成 BI 报表,只需选择几个 Azure Cosmos DB 门户即可。 Power BI 使用直接查询模式连接到 Azure Cosmos DB,使你可以查询实时 Azure Cosmos DB 数据,而不会影响事务工作负荷。

若要生成 Power BI 报表/仪表板,请执行以下操作:

  1. 登录到 Azure 门户,导航到 Azure Cosmos DB 帐户。

  2. 在“集成”部分中,打开 Power BI 窗格,然后选择“入门”。

    注意

    此选项目前仅适用于 NoSQL 帐户的 API。 可以直接在 Synapse 无服务器 SQL 池中创建 T-SQL 视图,并为 Azure Cosmos DB for MongoDB 生成 BI 仪表板。 有关详细信息,请参阅 使用 Power BI 和无服务器 Synapse SQL 池通过 Synapse 分析 Azure Cosmos DB 数据

  3. 在“启用 Azure Synapse Link”选项卡中,可以从“为此帐户启用 Azure Synapse Link”部分在帐户上启用 Azure Synapse Link。 如果帐户已启用 Azure Synapse Link,则看不到此选项卡。此步骤是开始在容器上启用 Azure Synapse Link 的先决条件。

    注意

    启用 Azure Synapse Link 会产生成本影响。 有关详细信息,请参阅 Azure Synapse Link 定价

  4. 接下来,从“为容器启用 Azure Synapse Link”部分,选择启用 Azure Synapse Link 所需的容器。

    • 如果已在某些容器上启用 Azure Synapse Link,则会选中容器名称旁边的复选框。 可以选择根据想要在 Power BI 中可视化的数据取消选择它们。

    • 如果未启用 Azure Synapse Link,可以在现有容器上启用此功能。 如果在任何容器上启用 Azure Synapse Link 正在进行,则不包括这些容器中的数据。 应稍后返回到此选项卡,并在启用容器时导入数据。

    显示现有容器上已启用 Azure Synapse Link 的进度的屏幕截图。

  5. 根据容器中的数据量,可能需要一段时间才能启用 Azure Synapse Link。 若要了解详细信息,请参阅 在现有容器上启用 Azure Synapse Link 一文。

    可以在门户中检查进度,如以下屏幕所示。 当进度达到 100%时,容器将启用 Azure Synapse Link。

    显示所选容器上已成功启用 Azure Synapse Link 的屏幕截图。

  6. 从“选择工作区”选项卡中,选择 Azure Synapse Analytics 工作区,然后选择“下一步”。 此步骤会自动在 Synapse Analytics 中为前面选择的容器创建 T-SQL 视图。 有关将 Azure Cosmos DB 连接到 Power BI 所需的 T-SQL 视图的详细信息,请参阅准备视图一文。

    注意

    Azure Cosmos DB 容器属性表示为 T-SQL 视图中的列,包括深度嵌套 JSON 数据。 此表示形式是 BI 仪表板的快速入门。 这些视图在 Synapse 工作区/数据库中可用;还可以在 Synapse Workspace 中使用这些完全相同的视图进行数据探索、数据科学或数据工程。 高级方案可能需要更复杂的视图或微调这些视图,以提高性能。 有关详细信息, 请参阅 使用 Synapse 无服务器 SQL 池时 Azure Synapse Link 的最佳做法 文章。

  7. 选择现有工作区或创建新工作区。 若要选择现有工作区,请提供订阅、工作区和数据库详细信息。 Azure 门户使用 Microsoft Entra 凭据自动连接到 Synapse 工作区并创建 T-SQL 视图。 确保你对此工作区具有“Synapse 管理员”权限。

    显示如何连接到 Azure Synapse Link 工作区并创建视图的屏幕截图。

  8. 接下来,选择“下载 .pbids”以下载 Power BI 数据源文件。 打开下载的文件。 其中包含所需的连接信息。打开 Power BI Desktop。

    显示如何以 .pbids 格式下载 Power BI 桌面文件的屏幕截图。

  9. 现在,可以从 Power BI Desktop 连接到 Azure Cosmos DB 数据。 将显示与每个容器中的数据对应的 T-SQL 视图列表。

    例如,以下屏幕显示车队数据。 可以加载此数据进行进一步分析,或在加载前转换这些数据。

    显示对应于每个容器中的数据的 T-SQL 视图的屏幕截图。

  10. 现在,可以使用 Azure Cosmos DB 的分析数据开始生成报表。 数据复制到分析存储后,不会在报表中反映对数据所做的任何更改,这通常在几分钟内发生。

使用 Power BI 连接器生成 BI 报表

目前,仅 Azure Cosmos DB for NoSQL 和 API for Gremlin 帐户支持使用 Power BI 连接器连接 Azure Cosmos DB。

  1. 运行 Power BI Desktop。

  2. 可以直接从欢迎屏幕获取数据、查看最近来源或打开其他报表。 通过选择“X”选项关闭屏幕。 将显示 Power BI Desktop 的报表视图。

    Power BI Desktop 报表视图 - Power BI 连接器的屏幕截图。

  3. 选择“开始”功能区,然后选择“获取数据”。 此时会显示“获取数据”窗口。

  4. 在 Azure 上选择“Azure”,选择“Azure Cosmos DB”(Beta),然后选择“连接”。

    Power BI Desktop 获取数据的屏幕截图 - Power BI 连接器。

  5. 在“预览连接器”页上,选择“继续”。 此时会显示“Azure Cosmos DB”窗口。

  6. 指定要从中检索数据的 Azure Cosmos DB 帐户终结点 URL,然后选择“确定”。 若要使用自己的帐户,可以从 Azure 门户的“密钥”部分的 URI 框中检索 URL。 可选:你可以提供数据库名称、集合名称,也可以使用导航器来选择数据库和集合以标识数据来源。

  7. 如果首次连接到此终结点,系统会提示输入帐户凭据。

  8. 成功连接帐户后,将显示“导航器”窗格。 导航器显示帐户下的数据库列表。

  9. 选择并展开报表数据来自的数据库。 现在,选择包含要检索的数据的集合。

    “预览”窗格显示记录项的列表。 文档在 Power BI 中表示为记录类型。 同样,文档中的嵌套 JSON 块也是记录。 若要将属性文档视为列,请在灰色按钮上选择两个箭头,以表示记录扩展的方向。

  10. 可以在 Power BI Desktop 报表视图中开始创建报表来将数据可视化。 通过将字段拖放到报表画布中创建报表。

  11. 有两种方法可以刷新数据:计划外和计划数据。 选择“ 立即刷新 ”以刷新数据。 有关计划刷新选项的详细信息,请查看 Power BI 文档。

已知问题和限制

  • 对于分区的 Azure Cosmos DB 容器,如果查询包含分区键上的筛选器(WHERE 子句),则会将包含聚合函数的 SQL 查询传递给 Azure Cosmos DB。 如果聚合查询不包含分区键上的筛选器,连接器将执行聚合。

  • 连接器在之后TOPLIMIT或之后不会传递聚合函数。

  • 处理查询时,Azure Cosmos DB 将处理 TOP作。 例如,在以下查询中,在子查询中应用 TOP,而将聚合函数应用于该结果集的顶部:

    SELECT COUNT(1) FROM (SELECT TOP 4 - FROM EMP) E
    
  • 如果 DISTINCT 包含在聚合函数中,连接器不会将聚合函数传递给 Azure Cosmos DB。 DISTINCT 不支持聚合函数中的 Azure Cosmos DB for NoSQL。

  • SUM对于聚合函数,如果 SUM 中的任何参数为字符串、布尔或 null,Azure Cosmos DB 将返回未定义。 如果存在 null 值,连接器会将查询传递到 Azure Cosmos DB,以在 SUM 计算期间将 null 值替换为零。

  • AVG对于聚合函数,如果 SUM 中的任何参数为字符串、布尔或 null,Azure Cosmos DB 将返回未定义的结果集。 连接器公开一个连接属性,以禁用将 AVG 聚合函数传递到 Azure Cosmos DB,以防需要重写此默认的 Azure Cosmos DB 行为。 禁用传递后 AVG ,不会将其传递到 Azure Cosmos DB,连接器将处理执行 AVG 聚合作本身。 有关详细信息,请转到“高级”选项中的“启用 AVERAGE 函数传递”。

  • 连接器不支持具有大型分区键的 Azure Cosmos DB 容器。

  • 由于服务器限制,对以下语法禁用聚合传递:

    • 查询不对分区键进行筛选,或者当分区键筛选器使用 OR 运算符与子句的顶层 WHERE 的另一个谓词时。

    • 查询有一个或多个分区键出现在 IS NOT NULL 子句中的子句中 WHERE

  • V2 连接器不支持复杂的数据类型,如数组、对象和分层结构。

  • V2 连接器使用前 1,000 个文档的采样来得出推断的架构。 对于仅更新某些文档的架构演变方案,不建议使用此方法。 例如,在包含数千个文档的容器中,新添加的属性可能不会包含在推断的架构中。

  • V2 连接器不支持对象属性中的非字符串值。

  • 由于服务器限制,已禁用以下语法的筛选器传递:

    • 在子句中引用包含一个或多个聚合列的 WHERE 查询时