使用表格層級儲存體來將 DirectQuery 模型最佳化
DirectQuery 是將資料放入 Power BI Desktop 的其中一種方式。 DirectQuery 方法涉及從 Power BI Desktop 直接連線至其來源存放庫中的資料。 這是一種將資料匯入 Power BI Desktop 的替代方法。
在使用 DirectQuery 方法時,整體使用者體驗在很大程度上取決於基礎資料來源的效能。 緩慢的查詢回應時間會造成使用者體驗不佳,而在最壞情況下,查詢可能會逾時。此外,在任何時間點同時開啟報表的使用者數量也會影響資料來源上負載。 例如,如果報表有 20 個視覺效果,且有 10 個人正在使用報表,則資料來源上會有超過 200 的查詢,因為每個視覺效果都會發出一或多個查詢。
不幸的是,Power BI 模型效能不只會受到基礎資料來源的效能影響,也會受到其他無法控制因素的影響,例如:
網路延遲;較快速的網路會更快傳回資料。
資料來源伺服器的效能,以及該伺服器上還有多少其他工作負載。 例如,思考一下當數百名使用者基於不同理由使用同一部伺服器,這時候重新整理伺服器代表什麼含意。
因此,使用 DirectQuery 會對模型效能的品質形成風險。 若要在這種情況下將效能最佳化,則必須擁有來源資料庫的控制權或存取權。
如需詳細資訊,請參閱 Power BI Desktop 中的 DirectQuery 模型指南。
使用 DirectQuery 的含意
將資料匯入 Power BI Desktop 是最佳做法,但是組織也可能基於下列其中一項原因 (DirectQuery 的優點),而需要使用 DirectQuery 資料連線模式:
適用於經常需要變更資料與接近即時報告的情況。
其可處理大型資料,而不需要預先彙總。
其可套用資料主權限制以符合法規需求。
其可與包含如 Business Warehouse (BW) 等量值的多維度資料來源搭配使用。
如果組織需要使用 DirectQuery,則您應該要清楚了解其在 Power BI Desktop 內的行為,並注意其限制。 如此一來,您即可採取行動以盡可能將 DirectQuery 模型最佳化。
DirectQuery 連線的行為
當使用 DirectQuery 來連線至 Power BI Desktop 中的資料時,該連線會下列方式運作:
當一開始使用 Power BI Desktop 中的 [取得資料] 功能時,您將選取來源。 如果連線到關聯式來源,則可選取一組資料表,且每一個都將定義以邏輯方式傳回一組資料的查詢。 如果選取多維度來源 (例如 SAP BW),則只能選取該來源。
當載入資料時,並不會將任何資料匯入至 Power BI Desktop,只會載入結構描述。 當在 Power BI Desktop 內建置視覺效果時,會將查詢傳送至基礎來源,以擷取必要的資料。 重新整理視覺效果所需時間取決於基礎資料來源的效能。
如果對基礎資料進行變更,由於需執行快取,變更不會立即反映在 Power BI 的現有視覺效果中。 您需要重新整理才能看到這些變更。 系統會針對每個視覺效果重新傳送必要的查詢,並相應地更新視覺效果。
當您將報表發佈至 Power BI 服務 時,會導致 Power BI 服務 語意模型,與匯入相同。 不過,該語意模型不會包含任何數據。
當在 Power BI 服務中開啟現有報表或建置新報表時,系統會重新查詢基礎來源,以擷取所需的資料。 視原始來源的位置而定,您可能需要設定內部部署資料閘道。
您可將視覺效果或整個報表頁面釘選為儀表板磚。 此磚會依排程自動重新整理,例如每小時一次。 您可控制重新整理的頻率,以符合需求。 當開啟儀表板時,此磚會反映上次重新整理時的資料,且可能不包含對基礎資料來源所做的最新變更。 您可隨時重新整理開啟的儀表板,確保處於最新狀態。
DirectQuery 連線的限制
使用 DirectQuery 可能會帶有負面影響。 此限制有所不同,視所使用的特定資料來源而定。 請考量下列幾點:
效能 - 如先前所討論,整體使用者體驗在很大程度上取決於基礎資料來源的效能。
安全性 - 如果在 DirectQuery 模型中使用多個資料來源,請務必了解資料在基礎資料來源之間的移動方式,以及其對安全性的可能影響。 您也應該了解安全性規則是否適用於基礎來源中的資料,因為在 Power BI 中,每個使用者都可看到該筆資料。
資料轉換 - 相較於匯入的資料,來自 DirectQuery 的資料在 Power Query 編輯器內套用資料轉換技術時,會有一些限制。 例如,如果連線到 OLAP 來源 (例如 SAP BW),即無法完全進行任何轉換;即整個外部模型均取自資料來源。 如果想要對資料進行任何轉換,則需要在基礎資料來源中執行此動作。
模型化 - 當使用 DirectQuery 時,某些使用匯入資料的模型化功能無法使用或受到限制。
報表 -- 如果基礎來源擁有適當的效能等級,則 DirectQuery 模型也支援搭配匯入資料使用的所有報表功能。 不過,在 Power BI 服務中發佈報表時,則不支援 [快速見解] 和 [問與答] 功能。 此外,在 Excel 中使用 [探索] 功能可能會導致效能下降。
如需 DirectQuery 使用限制的詳細資訊,請參閱使用 DirectQuery 的影響。
既然您已經概略了解 DirectQuery 的運作方式和其所帶來限制,即可採取動作來改善效能。
效能最佳化
在檢閱語意模型期間,繼續進行Tailwind Traders案例,您會發現查詢使用 DirectQuery 將 Power BI Desktop 連接到源數據。 這種 DirectQuery 使用方式便是使用者報表效能不佳的原因。 載入報表頁面花費的時間太長,且進行特定選取時,資料表重新整理的速度不夠快。 您必須採取動作來最佳化 DirectQuery 模型的效能。
您可檢查要傳送至基礎來源的查詢,並嘗試找出查詢效能不佳的原因。 然後您可在 Power BI Desktop 和基礎資料來源中進行變更,以最佳化整體效能。
最佳化 Power BI Desktop 中的資料
當已盡可能將資料來源最佳化後,即可使用 [效能分析器],在 Power BI Desktop 中採取進一步動作,您可在其中將查詢隔離以驗證查詢計劃。
您可分析查詢傳送至基礎來源花費的時間,以找出花費較長時間載入的查詢。 換句話說,您可找出效能瓶頸所在之處。
無需使用特殊的方法來最佳化 DirectQuery 模型;您可套用在匯入資料上使用的相同最佳化技巧,以調整來自 DirectQuery 來源的資料。 例如,您可減少報表頁面上的視覺效果數目,或減少在視覺效果中使用的欄位數目。 您也可以移除不必要的資料行和資料列。
如需有關如何將 DirectQuery 查詢最佳化的詳細指引,請參閱:Power BI Desktop 中的 DirectQuery 模型指引和成功使用 DirectQuery 的指引。
最佳化基礎資料來源 (已連線的資料庫)
您應該從資料來源開始。 您必須盡可能地調整來源資料庫,因此只要改善來源資料庫的效能,即可同時改善 Power BI DirectQuery。 您在資料庫中採取的動作將會發揮最大作用。
請考慮使用下列適用於大部分情況的標準資料庫做法:
避免使用複雜的計算結果欄,因為計算運算式會內嵌至來源查詢中。 將運算式推送回來源會更有效率,因為可避免向下推送。 您也可以考慮將代理索引鍵資料行新增至維度類型的資料表。
請檢閱索引,並確認目前的索引是否正確。 如果需要建立新的索引,請確定這些索引的適當性。
參閱資料來源的指引文件,並實作文件中的效能建議。
自訂減少查詢選項
Power BI Desktop 可供選擇傳送較少的查詢,並停用因產生的查詢花費長時間執行,而導致不佳體驗的某些互動。 套用這些選項可避免查詢持續叫用資料來源,藉此改善效能。
在本範例中,您可編輯預設設定,以將可用的減少資料選項套用至模型。 您可以選取 [ 檔案>選項] 和 [設定>選項]、向下捲動頁面,然後選取 [ 查詢縮減 ] 選項來存取設定。
可用的減少查詢選項如下:
減少傳送的查詢數目 - 根據預設,每個視覺效果都會與其他所有視覺效果互動。 選取此核取方塊會停用預設的互動。 接著,您可使用 [編輯互動] 功能來選擇哪些視覺效果需要彼此互動。
交叉分析篩選器 - 預設會選取 [立即套用交叉分析篩選器變更] 選項。 若要強制報表使用者手動套用交叉分析篩選器變更,請選取 [將套用按鈕新增至每個交叉分析篩選器,以在準備好時套用變更] 選項。
篩選 - 預設會選取 [立即套用基本篩選變更] 選項。 若要強制報表使用者手動套用篩選變更,請選取其中一個替代選項:
[將套用按鈕新增到所有基本篩選,以在準備好時套用變更]
[將套用按鈕新增到篩選窗格,以一次套用變更 (預覽)]