我正在协助我的团队解决我们正在开发的 Power BI 报告的问题。我们在源 SQL 数据库中有一个相当复杂的数据模型,因此我们创建了 5-6 个 View 来更好地管理数据。我们要求使用 DirectQuery,因为报表的一项关键要求是数据库中的最新数据可见,而不是在加载/缓存数据时存在延迟。我们也有单一的数据源,只有一个数据库。
当我们运行报表时,我们看到报表数据源的特定用户与数据库的连接激增 200-500 个,并且这些连接不会关闭。这显然是一个问题,对于任何产品来说都是不可持续的。我们向 Microsoft 高级支持开出了一张票,以解决未关闭的连接问题,但与此同时,我想知道我们在报告中是否做错了什么?
当我在查询编辑器中查看查询时,我们基本上每个 View 都有一个查询,而且很简单:
let
Source = Sql.Database(Server, Database)
query_view_name = Source{[Schema ......]}[Data]
in
query_view_name
(我面前没有原始代码,但这就是它的要点。)
在我看来,根据数据库中的分析,每次调用此 View 时,“Sql.Database”都会打开一个新连接。如果有 5-6 个 View ,则至少有 5-6 个连接;然后每次更改过滤器时,都会增加更多连接,并从那里开始复合,直到数据库连接池达到最大。
有没有一种方法可以使用与数据库的单个连接来填充所有表?为什么 Power BI 要使用如此多的连接?我们可以在高级查询编辑器中填充多个表吗?使用 DirectQuery,对于我们可以在报告中查看/排除故障/更改的内容有什么建议吗?
谢谢!
最佳答案
Power BI 建立与数据库的多个连接以并行加载多个表。如果您不想这样做,可以从 Options
->Current file
->Data Load
->Enable 将其关闭表的并行加载
:
请记住,关闭此选项很可能会增加模型加载时间。
您可能需要查看选项
->当前文件
->Direct中的
和它下面的整个每个数据源的最大连接数
选项查询查询减少
部分。对于像您这样的情况,强烈建议在此页面上启用切片器选择
和过滤器选择
,但您需要培训用户,让他们知道他们需要单击应用
查看结果。
关于azure-sql-database - Power BI 最大连接到 DB :( Can we populate multiple tables with single Sql. 数据库调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55680741/