為什么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          


如果您覺得閱讀本文對您有幫助,請點一下“推薦”按鈕,您的“推薦”將是我最大的寫作動力!歡迎各位轉載。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM