优化从Azure Cosmos DB到Power BI的数据加载

时间:2020-06-30 18:14:27

标签: powerbi azure-cosmosdb

当前,在更新有关DB的报表数据时,由于在数据库中有太多的记录并且要花费所有的时间来加载所有数据,因此在加载数据方面存在问题。问题是我如何才能仅加载上一年的数据,以避免花费那么长时间来加载所有内容。如我所见,尝试在框中连接到COSMO DB允许我放置一个SQL查询,但是我不知道如何在这种类型的非关系数据库中进行操作。

Example

3 个答案:

答案 0 :(得分:3)

Power BI具有incremental refresh功能。您应该只能刷新当前年份。

如果仍然不能达到期望,我会看一下名为Azure Synapse Link的预览功能,该功能会自动将所有Cosmos DB更新拉出到分析存储中,您可以在Azure Synapse Analytics中更快地查询以便刷新Power BI更快。

答案 1 :(得分:0)

根据数据量,您会遇到许多问题。首先是您可能超出RU限制,从而减慢了从CosmosDB提取数据的速度。第二个问题是将数据从JSON格式转换为结构化格式。

我将尝试编写查询以指定所需的字段和项目。这样可以减少处理和获取数据的时间。

对于SQL查询,就像

SELECT * FROM c WHERE c.partitionEntity = 'guid'

有关CosmosDB SQL API语法的更多信息,请参阅here以开始使用。 您可以使用Azure中的查询窗口来运行SQL命令,或使用Azure Storage Explorer来测试查询,然后将其移至Power BI。

enter image description here

强烈建议将数据提取到可以转换为表格或csv文件等结构化格式的位置。

例如,使用Azure Databricks提取,然后将JSON格式转换为表格式的对象。 您确实可以选择在其自己的实例中使用运行Databricks notebook queries in CosmosDB或Azure DataBrick。另一种选择是使用变更源发送数据,并使用Azure函数将数据发送和粉碎到Blob存储,并使用Power BI,DataBricks,Azure SQL数据库等从那里查询。

答案 2 :(得分:0)

在查询源中,您可以根据 CosmosDB _ts 系统属性进行选择,例如:

Query ="SELECT * FROM XYZ AS t WHERE t._ts > 1609455599"

在这种情况下,1609455599 是对应于 31.12.2020, 23:59:59 的时间戳。因此,只会选择 2021 年的数据。