Power BI最大连接到DB :(我们可以使用单个Sql.Database调用填充多个表吗?

问题描述 投票:1回答:2

我正在协助我的团队解决我们正在开发的Power BI报告的问题。我们在源SQL数据库中有一个相当复杂的数据模型,因此我们创建了5-6个视图以更好地管理数据。我们需要使用DirectQuery,因为报告的一个关键要求是数据库中最新的数据是可见的,而不是延迟加载/缓存数据。我们还有单个数据源,只有一个数据库。

当我们运行报告时,我们会看到报告数据源的特定用户与数据库的连接数量达到200-500,并且这些连接不会关闭。这显然是一个问题,对任何产品都是不可持续的。我们打开了微软高级支持的门票,以解决未关闭的连接,但与此同时,我想知道我们是否在报告中做错了什么?

当我在查询编辑器中查看查询时,我们基本上每个视图都有一个查询,这很简单:

let
  Source = Sql.Database(Server, Database)
  query_view_name = Source{[Schema ......]}[Data]
in
  query_view_name

(我没有在我面前的原始代码,但这是它的要点。)

在我看来,基于数据库中的分析,“Sql.Database”每次调用此视图时都会打开一个新连接。并且有5-6个视图,这至少是5-6个连接;然后每次更改过滤器时,它就会有更多的连接,并且它是从那里开始的化合物,直到数据库连接池被最大化。

有没有办法使用单个数据库连接填充所有表?为什么Power BI会使用如此多的连接?我们可以在高级查询编辑器中填充多个表吗?使用DirectQuery,是否有任何关于我们可以在报告中查看/排除故障/更改的建议?

谢谢!

azure-sql-database powerbi powerquery
2个回答
1
投票

Power BI建立与数据库的多个连接,以并行加载多个表。如果您不想这样,可以从Options-> Current file-> Data Load-> Enable parallel loading of tables关闭它:

enter image description here

请记住,最有可能关闭此选项会增加模型加载时间。

您可能需要查看Maximum connections per data source-> Options-> Current file中的Direct query选项以及整个部分Query reduction。对于像您这样的案例,强烈建议在此页面上启用Slicer selectionFilter selection,但您需要培训您的用户,他们需要点击apply才能查看结果。


0
投票

好。

我们在源SQL数据库中有一个相当复杂的数据模型,因此我们创建了5-6个视图以更好地管理数据。

没关系。

我们需要使用DirectQuery,

但现在你将度过一段美好时光。 DirectQuery +复杂视图是性能不佳的一个因素。针对您的视图的查询将添加连接,可能在整个模型中添加过滤器上下文,以及测量和计算列表达式。并且这些查询将根据用户与报表的交互动态更改。因此很难看到并测试所有可能的查询。

基本指导是对视图使用导入模式,仅对正确索引的表使用DirectQuery。要解决数据新鲜度问题,您可以使用已加载的表替换视图并使其与应用程序保持同步,或者使用索引视图等。

© www.soinside.com 2019 - 2024. All rights reserved.