首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >增强到数据库的BI最大连接:(我们可以使用单个Sql.Database调用填充多个表吗?

增强到数据库的BI最大连接:(我们可以使用单个Sql.Database调用填充多个表吗?
EN

Stack Overflow用户
提问于 2019-04-15 06:52:50
回答 2查看 1.3K关注 0票数 1

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

当我们运行报表时,我们看到从报表数据源的特定用户到数据库的连接达到200-500个峰值,并且这些连接没有关闭。这显然是一个问题,对任何产品来说都是不可持续的。我们已经打开了一张带有微软高级支持的工单,以解决连接未关闭的问题,但同时,我想知道我们是否在报告中做错了什么?

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

代码语言:javascript
运行
复制
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时,对于报告中可以查看/排除故障/更改的内容,有什么建议吗?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2019-04-15 14:05:56

Power BI建立到数据库的多个连接,以并行加载多个表。如果你不想这样做,你可以在Options->Current file->Data Load->Enable parallel loading of tables中将其关闭

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

您可能想看看Options->Current file->Direct query中的Maximum connections per data source选项,以及整个Query reduction部分的好处。对于像您这样的情况,强烈建议在此页面上启用Slicer selectionFilter selection,但您需要训练用户,让他们知道他们需要单击apply才能看到结果。

票数 1
EN

Stack Overflow用户

发布于 2019-04-16 00:47:59

好的。

我们在源

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

这很好。

我们有使用DirectQuery的要求,

但现在你的日子不好过了。DirectQuery +复杂视图是性能不佳的秘诀。对视图的查询将添加连接,可能会跨整个模型进行筛选上下文,以及度量和计算列表达式。这些查询将根据用户与报告的交互动态更改。因此,很难看到和测试所有可能的查询。

基本指导原则是对视图使用导入模式,并且只对索引正确的表使用DirectQuery。为了解决数据新鲜性问题,您可以将视图替换为您从应用程序加载并保持最新的表,或者可能使用索引视图等。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55680741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档