在 Power BI Desktop 中管理儲存模式
在 Microsoft Power BI Desktop 中,您可以指定資料表的儲存模式。 儲存模式可讓您控制 Power BI Desktop 是否快取報表記憶體中的數據表數據。 快取表示暫時將數據儲存在記憶體中。
設定儲存模式提供許多優點。 您可以在模型中個別設定每個資料表的儲存模式。 此動作會啟用單一語意模型,其提供下列優點:
查詢效能:當使用者與 Power BI 報表中的視覺效果互動時,數據分析表達式 (DAX) 查詢會提交至語意模型。 藉由正確設定儲存模式將數據快取至記憶體,可以提升報表的查詢效能和互動性。
大型語意模型:未快取的數據表不會耗用記憶體來進行快取。 您可以透過大型語意模型啟用互動式分析,這些模型太大或太昂貴,無法完全快取到記憶體中。 您可以選擇值得快取的數據表,以及哪些數據表不值得快取。
數據重新整理優化:您不需要重新整理未快取的數據表。 您可以只快取符合服務等級協議和商務需求所需的數據,以減少重新整理時間。
近乎即時的需求:具有近乎即時需求的數據表可能受益於未快取,以減少數據延遲。
回寫:回寫可讓商務用戶藉由變更單元格值來探索假設案例。 自訂應用程式可以將變更套用至數據源。 未快取的數據表可以立即顯示變更,這可讓您立即分析效果。
Power BI Desktop 中的儲存模式設定是三個相關功能之一:
複合模型:允許報表具有兩個或多個數據連接,包括 DirectQuery 連接或匯入,無論組合如何。 如需詳細資訊,請參閱 在Power BI Desktop 中使用複合模型。
多對多關聯性:使用複合模型,您可以在 數據表之間建立多對多關聯 性。 在多對多關聯性中,會移除數據表中唯一值的需求。 它也會移除先前的因應措施,例如只引進新的數據表來建立關聯性。 如需詳細資訊,請參閱 Power BI Desktop 中的多對多關聯性。
儲存體 模式:使用儲存模式,您現在可以指定哪些視覺效果需要後端數據源的查詢。 即使查詢是以 DirectQuery 為基礎,也不會匯入不需要查詢的視覺效果。 這項功能有助於改善效能並減少後端負載。 先前,即使是簡單的視覺效果,例如交叉分析篩選器,也會起始已傳送至後端來源的查詢。
使用 儲存體mode屬性
儲存體 mode 屬性是您可以在模型中的每個數據表上設定的屬性,並控制 Power BI 如何快取資料表數據。
若要設定 儲存體mode屬性,或檢視其目前設定:
在 [模型 ] 檢視中,選取您要檢視或設定其屬性的數據表。
在 [屬性] 窗格中,展開 [進階] 區段,然後展開 [儲存體 模式] 下拉式清單。
您可以將 儲存體 mode 屬性設定為下列三個值的其中一個:
匯入:會快取具有此設定的匯入數據表。 提交至 Power BI 語意模型以從匯入數據表傳回數據的查詢只能從快取的數據完成。
DirectQuery:不會快取具有此設定的數據表。 您提交至 Power BI 語意模型的查詢,例如 DAX 查詢,以及從 DirectQuery 數據表傳回數據的查詢,只能藉由對數據源執行隨選查詢來完成。 您提交至數據源的查詢會使用該數據源的查詢語言,例如 SQL。
雙重:使用此設定的數據表可以做為快取或未快取,視提交至 Power BI 語意模型的查詢內容而定。 在某些情況下,您會從快取的數據完成查詢。 在其他情況下,您可以藉由對數據源執行隨選查詢來完成查詢。
將數據表的 儲存體 模式變更為匯入是無法復原的作業。 設定此屬性之後,就無法稍後將它變更為 DirectQuery 或 Dual。
注意
您可以在 Power BI Desktop 和 Power BI 服務 中使用雙重儲存模式。
DirectQuery 和雙重數據表的條件約束
雙數據表的功能條件約束與 DirectQuery 數據表相同。 這些條件約束包括受限制的 M 轉換和匯出數據行中受限制的 DAX 函式。 如需詳細資訊,請參閱 DirectQuery 限制。
雙重設定的傳播
請考慮下列模型,其中所有數據表都是來自支援 Import 和 DirectQuery 的單一來源。
假設此模型中的所有數據表一開始都設定為 DirectQuery。 如果您接著將 SurveyResponse 數據表的 儲存體 模式變更為 [匯入],則會顯示下列警告視窗:
您可以將維度數據表 (Customer、Geography 和 Date) 設定為 [雙重],以減少語意模型中有限關聯性的數目,並改善效能。 有限的關聯性通常至少牽涉到一個 DirectQuery 數據表,其中聯結邏輯無法推送至來源系統。 因為雙重數據表可以做為 DirectQuery 或 Import 數據表,因此可以避免這種情況。
傳播邏輯是設計來協助包含許多數據表的模型。 假設您有一個具有50個數據表的模型,而且只需要快取特定事實 (交易式) 資料表。 Power BI Desktop 中的邏輯會計算必須設定為 [雙重] 的維度數據表下限集,因此您不需要。
傳播邏輯只會周遊至一對多關聯性的一端。
儲存體 模式使用範例
假設套用下列儲存模式屬性設定:
Table | 儲存體模式 |
---|---|
Sales | DirectQuery |
SurveyResponse | Import |
Date | 雙重 |
客戶 | 雙重 |
地理位置 | 雙重 |
設定這些儲存模式屬性會導致下列行為,假設 Sales 數據表具有大量的數據量:
Power BI Desktop 會快取維度數據表、 日期、 客戶和 地理位置,因此在擷取要顯示的交叉分析篩選器值時,初始報表的載入時間會很快。
Power BI Desktop 不會快 取 Sales 數據表。 Power BI Desktop 會藉由不快取此數據表來提供下列結果:
- 數據重新整理時間已改善,記憶體耗用量會降低。
- 以 Sales 數據表為基礎的報表查詢會在 DirectQuery 模式中執行。 這些查詢可能需要較長的時間,但較接近即時,因為不會引入快取延遲。
以 SurveyResponse 數據表為基礎的報表查詢會從記憶體內部快取傳回,因此相對快速。
叫用或遺漏快取的查詢
如果您將 SQL Profiler 連線到 Power BI Desktop 的診斷埠,您可以執行以下列事件為基礎的追蹤,查看哪些查詢命中或遺漏記憶體內部快取:
- 查詢事件\查詢開始
- 查詢處理\Vertipaq SE 查詢開始
- 查詢處理\DirectQuery Begin
針對每個 Query Begin 事件,檢查具有相同 ActivityID 的其他事件。 例如,如果沒有 DirectQuery Begin 事件,但有 Vertipaq SE Query Begin 事件,則會從快取中回答查詢。
如果可能的話,參考雙重數據表的查詢會從快取傳回數據;否則,它們會還原為 DirectQuery。
下列查詢會從上一個數據表繼續進行。 它只會參考 Date 數據表中的數據行,該數據行處於雙重模式。 因此,查詢應該會叫用快取:
下列查詢只會參考 Sales 數據表中的數據行,此數據行處於 DirectQuery 模式。 因此,它 不應該 叫用快取:
下列查詢很有趣,因為它結合了這兩個數據行。 此查詢不會叫用快取。 您一開始可能會預期它會從快取中擷取 CalendarYear 值,並從來源擷取 SalesAmount 值,然後合併結果,但這種方法比將 SUM/GROUP BY 作業提交至來源系統效率低。 如果作業向下推送至來源,則傳回的數據列數目可能要少得多:
注意
當合併快取和非快取數據表時,此行為與 Power BI Desktop 中的多對多關聯性不同。
快取應保持同步
上一節中顯示的查詢顯示雙重數據表有時會叫用快取,有時不會。 因此,如果快取過期,則可以傳回不同的值。 例如,查詢執行不會嘗試遮罩數據問題,例如篩選 DirectQuery 結果以符合快取的值。 您有責任知道您的數據流,您應該據此設計。 如有需要,有建立的技術可在來源處理這類案例。
雙重儲存模式是效能優化。 它應該只用於不會危害符合商務需求的能力的方式。 針對替代行為,請考慮使用Power BI Desktop中多對多關聯性中所述的技術。
資料檢視
如果語意模型中至少有一個數據表的儲存模式設定為 [匯 入] 或 [雙重], 則會顯示 [數據 檢視] 索引標籤。
當您在 [數據] 檢視中 選取 [雙重] 和 [匯入數據表 ] 時,它們會顯示快取的數據。 DirectQuery 數據表不會顯示數據,而且會顯示訊息,指出無法顯示 DirectQuery 數據表。
考量與限制
目前版本的儲存模式及其與複合模型的相互關聯有幾個限制。
下列即時連線 (多維度) 來源無法與複合模型搭配使用:
- SAP HANA
- SAP Business Warehouse
當您使用 DirectQuery 連線到那些多維度來源時,您無法連線到另一個 DirectQuery 來源,或將它與匯入的數據結合。
當您使用複合模型時,仍適用使用 DirectQuery 的現有限制。 根據數據表的儲存模式,許多這些限制現在都是根據數據表的儲存模式。 例如,匯入數據表上的匯出數據行可以參考其他數據表,但 DirectQuery 數據表上的匯出數據行仍受限於只參考相同數據表上的數據行。 如果模型內的任何數據表是 DirectQuery,則其他限制會套用至整個模型。
相關內容
如需複合模型和 DirectQuery 的詳細資訊,請參閱下列文章:
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應