備註
在閱讀本文前,請先閱讀 Power Query 中查詢評估與查詢摺疊的概述,以更了解 Power Query 中摺疊的運作方式。
查詢摺疊指標能幫助你了解哪些步驟會摺疊,哪些步驟不會。 當 Power Query 將其轉換轉換轉換成資料來源查詢並在該資料來源執行時,步驟就會摺疊。
使用查詢摺疊指示器時,若你進行會中斷查詢摺疊的變更,就能清楚看出來。 此功能幫助您解決問題、避免效能問題,並更深入了解您的查詢。 大多數情況下,階梯要麼摺疊,要麼不摺疊。 但也存在許多結果並不明顯的情況。 步驟診斷指標一節涵蓋下列情況(可能折疊、不透明和未知)。
備註
查詢折疊指標功能僅適用於Power Query Online。
解讀查詢摺疊診斷
在 Power Query Online 中,步驟旁的查詢摺疊指示器會顯示查詢整體截至該步驟為止是否會摺疊。 診斷狀態並非連續的。 如果某個指示器顯示查詢不會摺疊,接著又出現另一個指示器顯示查詢會摺疊,則表示查詢直到該點為止確實會摺疊。
即使對 SQL 來源使用簡單的查詢,此解譯也能運作。 例如,連接 AdventureWorks 範例資料庫中的 Production.Product 資料表,然後載入資料。 透過 Power Query 導覽器載入此範例可提供下列查詢:
let
Source = Sql.Database("ServerName", "AdventureWorks"),
Navigation = Source{[Schema = "Production", Item = "Product"]}[Data]
in
Navigation
如果您查看這段程式碼在查詢摺疊指標中的呈現方式,您會注意到第一個步驟是無法確定的。 但第二個步驟會折疊,這表示查詢會折疊到該點。
在這個例子中,初始步驟無法確定會摺疊(因此無法確定),但當你載入資料時產生的最後一步確實會摺疊。 處理第一個步驟(來源,有時其他 流覽 步驟)的方式取決於連接器。 例如,使用 SQL 時,步驟會當做目錄數據表值來處理,但不會折疊。 不過,一旦您選取該連接器的數據,就會折疊。
相反地,這個指示也可能表示您的查詢折疊到某個點,然後停止折疊。 未摺疊的指示器並不代表什麼都不會摺疊。 相反地,這代表並非所有東西都會崩潰。 一般而言,所有項目在最後一個折疊指標之前都會折疊,之後會進行更多的操作。
修改上一個範例,您可以提供不會被簡化的轉換—將每個字詞大寫。
let
Source = Sql.Database("ServerName", "AdventureWorks"),
Navigation = Source{[Schema = "Production", Item = "Product"]}[Data],
#"Capitalized each word" = Table.TransformColumns(Navigation, {{"Name", each Text.Proper(_), type text}})
in
#"Capitalized each word"
在查詢折迭指標中,您具有與先前相同的指標,但最後一個步驟不會折疊。 在數據源上執行所有步驟,直到最後一步,而最後一步則是在本機執行。
步驟診斷指標
查詢摺疊指示器使用底層查詢計畫,並要求其報告查詢的資訊。 查詢計劃目前僅支援資料表,因此某些案例(清單、記錄、基本數據類型)不會報告是否為折疊。 同樣地,常量表被報告為不透明。
| 指示器 | 圖標 | 說明 |
|---|---|---|
| 摺疊 |
|
折疊指標會告訴您數據來源會將查詢執行到此步驟。 |
| 不折疊 |
|
不折疊指標會告訴您,部分查詢在資料來源之外進行評估,直至此步驟。 您可以比較它與最後一個折疊指標,如果有的話,看看是否可以重新排列查詢,使其效能更高。 |
| 可能折疊 |
|
可能折疊指標並不常見。 這些表示查詢「可能」會折疊。 它們表明在提取查詢結果時,運行時間會決定是折疊還是不折疊,並且查詢計劃是動態的。 這些指標可能只會與 ODBC 或 OData 連線一起出現。 |
| 不透明 |
|
不透明的指標會告訴您,產生的查詢計劃因某種原因而無法確定。 它通常表示有真正的「常數」數據表,或指標和查詢計劃工具不支援該轉換或連接器。 |
| 未知 |
|
未知的指示符代表沒有查詢計劃,可能是因為錯誤或嘗試在資料表以外的項目上執行查詢計劃評估(例如記錄、清單或基本類型)。 |
分析查詢摺疊指標
要分析查詢摺疊指標,請連接 AdventureWorks 中的 Production.Product 表格(SQL)。 初次載入時,會顯示 Source 步驟的結果不明,而 Navigation 步驟則處於摺疊狀態,如下圖所示。
當你加入更多可折疊的步驟時,右側的綠線就會延長。 因為此步驟也會折疊,因此會發生此擴充功能。
當你加入一個不會摺疊的階梯時,你會看到不同的指示器。 例如, 將每個單字大寫 從不變動。 指標會變更,顯示從此步驟開始,它已停止折疊。 如先前所述,先前的步驟仍然適用。
當你在下游新增更多依賴 每個字詞大寫 的步驟時,這些步驟仍然無法折疊。
然而,如果你移除了大寫欄位,優化後的查詢計畫可能會再次倒閉。 在這種罕見的情況下,最後一步會折疊,儘管前面的某一步不會折疊,如下圖所示。 此結果說明摺疊如何依賴步序順序及所適用的變換。