使用表格層級儲存體來將 DirectQuery 模型最佳化

已完成

DirectQuery 是將資料放入 Power BI Desktop 的其中一種方式。 DirectQuery 方法涉及從 Power BI Desktop 直接連線至其來源存放庫中的資料。 這是一種將資料匯入 Power BI Desktop 的替代方法。

顯示如何使用 DirectQuery 選項來取得資料的螢幕擷取畫面。

在使用 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 可供選擇傳送較少的查詢,並停用因產生的查詢花費長時間執行,而導致不佳體驗的某些互動。 套用這些選項可避免查詢持續叫用資料來源,藉此改善效能。

在本範例中,您可編輯預設設定,以將可用的減少資料選項套用至模型。 您可以選取 [ 檔案>選項] 和 [設定>選項]、向下捲動頁面,然後選取 [ 查詢縮減 ] 選項來存取設定。

可用的減少查詢選項如下:

  • 減少傳送的查詢數目 - 根據預設,每個視覺效果都會與其他所有視覺效果互動。 選取此核取方塊會停用預設的互動。 接著,您可使用 [編輯互動] 功能來選擇哪些視覺效果需要彼此互動。

  • 交叉分析篩選器 - 預設會選取 [立即套用交叉分析篩選器變更] 選項。 若要強制報表使用者手動套用交叉分析篩選器變更,請選取 [將套用按鈕新增至每個交叉分析篩選器,以在準備好時套用變更] 選項。

  • 篩選 - 預設會選取 [立即套用基本篩選變更] 選項。 若要強制報表使用者手動套用篩選變更,請選取其中一個替代選項:

    • [將套用按鈕新增到所有基本篩選,以在準備好時套用變更]

    • [將套用按鈕新增到篩選窗格,以一次套用變更 (預覽)]

存取減少查詢設定