为什么Power BI运行两次我的SQL查询?

​当从关系数据库(如Power BI中的SQL Server)导入数据时,可以选择SQL查询来获取数据,先在数据库中查看结果:       

           

                    

将SQL语句放到查询中:

输入连接信息后查看预览:

这是该查询所用到M代码:

对应该查询,它具有禁用Power Query查询中的查询折叠的副作用,因此,如果添加任何其他转换,它们将始终是在Power Query引擎内部执行-效率可能比在数据源中执行效率低。

还有一个缺点:在Power BI Desktop中刷新数据集(尽管不在Power BI Service中)时,你会看到SQL查询运行了两次。这是SQL Server Profiler提供的证据,显示了在Power BI Desktop中刷新上述查询时会发生什么:

 

如果查询速度慢,或者每次查询执行都要花时间,那么你就应该避免这种情况。

为什么会这样呢?Power BI希望在查询实际运行之前知道表的结构,因此要求Power Query返回前0行。不幸的是,在这种情况下,无法进行查询折叠,因此整个查询需要运行一次来获取结构,一次来获取数据。

解决方案是:使用Table.View M函数对查询返回的结构进行硬编码,并手动实现查询折叠。这是新查询的改编版本:

一般来说,创建视图要比用SQL嵌入Power BI数据集要好得多,因为它使维护和调整变得更加容易。当然,如果你可以直接连接到视图,就无需在Power BI中编写任何SQL,查询折叠同样将起作用,并且Power BI Desktop在刷新时仅查询一次视图。

好了,现在你应该知道为什么Power BI运行两次你的SQL查询?以及怎么解决这个问题。


活动报名

推荐阅读

【玩转数据,智启未来 ◆ 深圳】 Power BI Workshop 8月培训线下来袭!

Power BI 7月产品功能更新培训 —— 视频上线

【2020】Power BI 7月产品功能更新

All 必须码住的系列 | Power BI最佳实践的十大秘密武器(第3部分)

如何动态显示用户的报告页面

技术交流

1.Power BI免费下载:http://www.yeacer.com/

    Microsoft Power BI Desktop中文最新版:下载地址

2.欢迎加入的Power BI技术群,目前正在学习阶段,有兴趣的朋友可以一起学习讨论。 

   Power Data技术交流群:702966126 (验证注明:博客园Power BI) 

   更多精彩内容请关注微信公众号:悦策PowerBI          


如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载。
原文地址:https://www.cnblogs.com/yeacer/p/13445161.html