參考 Power Query 查詢
此文章以使用 Power BI Desktop 的資料模型製作人員為目標。 它提供的指導方針,適用於定義參考其他查詢的 Power Query 查詢。
讓我們清楚說明這是什麼意思:當某個查詢參考第二個查詢時,就如同第二個查詢中的步驟與第一個中的結合而且先執行。
請考慮數個查詢:Query1 的資料來源是 Web 服務,且其載入已停用。 Query2、Query3 與 Query4 都參考 Query1,且其輸出會載入至資料模型。
當資料模型重新整理時,通常會假設 Power Query 是擷取 Query1 的結果,且參考查詢會重複使用它。 此想法不正確。 事實上,Power Query 會分別執行 Query2、Query3 與 Query4。
您可以想成 Query1 步驟內嵌在 Query2 中。 Query3 與 Query4 的情況也是如此。 下列圖表呈現更清楚的查詢執行方式。
Query1 會執行三次。 多個執行可能會導致數據重新整理變慢,並對數據源造成負面影響。
在 Query1 中使用 Table.Buffer 函式,不會消除額外資料擷取。 此函式會將資料表緩衝至記憶體,而已緩衝的資料表只能在相同查詢執行中使用。 因此,在範例中,如果在執行 Query2 時緩衝 Query1,則在執行 Query3 與 Query4 時,會無法使用已緩衝的資料。 它們本身會再緩衝資料兩次。 (事實上,此結果可能會造成負面效能惡化,因為每個參考查詢都會緩衝該資料表。)
注意
Power Query 快取架構很複雜,而且不是此文章的焦點。 Power Query 可以快取從資料來源擷取的資料。 不過,當它執行查詢時,可能會多次從資料來源擷取資料。
建議
一般來說,我們建議您參考查詢,以避免在整個查詢中重複邏輯。 不過,如此文章所述,此設計方法可能造成資料重新整理變慢,且使資料來源負擔過重。
我們建議您改為建立資料流程。 使用資料流程可以改善資料重新整理時間,並降低對資料來源的影響。
您可以設計資料流程來封裝來源資料和轉換。 因為資料流程是 Power BI 服務中的持續性資料存放區,所以其資料擷取速度很快。 因此,即使參考查詢導致多個資料流程要求,資料重新整理時間仍可獲得改善。
在此範例中,如果將 Query1 重新設計為資料流程實體,則 Query2、Query3 與 Query4 可以將它作為資料來源使用。 若使用此設計,系統只會評估 Query1 的來源實體一次。
相關內容
如需本文的詳細資訊,請參閱下列資源:
- Power BI 中的自助資料準備
- 在 Power BI 中建立及使用資料流程
- 有任何問題嗎? 嘗試在 Power BI 社群提問
- 有任何建議嗎? 貢獻想法來改善 Power BI