當從關系數據庫(如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月培訓線下來襲!
All 必須碼住的系列 | Power BI最佳實踐的十大秘密武器(第3部分)
技術交流
1.Power BI免費下載:http://www.yeacer.com/
Microsoft Power BI Desktop中文最新版:下載地址
2.歡迎加入的Power BI技術群,目前正在學習階段,有興趣的朋友可以一起學習討論。
Power Data技術交流群:702966126 (驗證注明:博客園Power BI)
更多精彩內容請關注微信公眾號:悅策PowerBI
如果您覺得閱讀本文對您有幫助,請點一下“推薦”按鈕,您的“推薦”將是我最大的寫作動力!歡迎各位轉載。
