在 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屬性,或檢視其目前設定:

  1. [模型 ] 檢視中,選取您要檢視或設定其屬性的數據表。

  2. 在 [屬性] 窗格中,展開 [進階] 區段,然後展開 [儲存體 模式] 下拉式清單。

    Screenshot of Relationship view highlight the option drop-down to change the storage mode.

您可以將 儲存體 mode 屬性設定為下列三個值的其中一個:

  • 入:會快取具有此設定的匯入數據表。 提交至 Power BI 語意模型以從匯入數據表傳回數據的查詢只能從快取的數據完成。

  • DirectQuery:不會快取具有此設定的數據表。 您提交至 Power BI 語意模型的查詢,例如 DAX 查詢,以及從 DirectQuery 數據表傳回數據的查詢,只能藉由對數據源執行隨選查詢來完成。 您提交至數據源的查詢會使用該數據源的查詢語言,例如 SQL。

  • 雙重:使用此設定的數據表可以做為快取或未快取,視提交至 Power BI 語意模型的查詢內容而定。 在某些情況下,您會從快取的數據完成查詢。 在其他情況下,您可以藉由對數據源執行隨選查詢來完成查詢。

將數據表的 儲存體 模式變更匯入是無法復原的作業。 設定此屬性之後,就無法稍後將它變更為 DirectQueryDual

注意

您可以在 Power BI Desktop 和 Power BI 服務 中使用雙重儲存模式。

DirectQuery 和雙重數據表的條件約束

雙數據表的功能條件約束與 DirectQuery 數據表相同。 這些條件約束包括受限制的 M 轉換和匯出數據行中受限制的 DAX 函式。 如需詳細資訊,請參閱 DirectQuery 限制

雙重設定的傳播

請考慮下列模型,其中所有數據表都是來自支援 Import 和 DirectQuery 的單一來源。

Screenshot of the example Relationship view for storage mode.

假設此模型中的所有數據表一開始都設定為 DirectQuery。 如果您接著將 SurveyResponse 數據表的 儲存體 模式變更為 [匯入],則會顯示下列警告視窗:

Screenshot showing a warning window that describes the results of changing the storage mode to Import.

您可以將維度數據表 (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 數據表中的數據行,該數據行處於雙重模式。 因此,查詢應該會叫用快取:

Screenshot showing the text of query that refers to the Date table.

下列查詢只會參考 Sales 數據表中的數據行,此數據行處於 DirectQuery 模式。 因此,它 不應該 叫用快取:

Screenshot showing the text of query that refers the Sales table.

下列查詢很有趣,因為它結合了這兩個數據行。 此查詢不會叫用快取。 您一開始可能會預期它會從快取中擷取 CalendarYear 值,並從來源擷取 SalesAmount 值,然後合併結果,但這種方法比將 SUM/GROUP BY 作業提交至來源系統效率低。 如果作業向下推送至來源,則傳回的數據列數目可能要少得多:

Screenshot showing the text of query that refers to both the Date table and the Sales table.

注意

當合併快取和非快取數據表時,此行為與 Power BI Desktop 中的多對多關聯性不同

快取應保持同步

上一節中顯示的查詢顯示雙重數據表有時會叫用快取,有時不會。 因此,如果快取過期,則可以傳回不同的值。 例如,查詢執行不會嘗試遮罩數據問題,例如篩選 DirectQuery 結果以符合快取的值。 您有責任知道您的數據流,您應該據此設計。 如有需要,有建立的技術可在來源處理這類案例。

雙重儲存模式是效能優化。 它應該只用於不會危害符合商務需求的能力的方式。 針對替代行為,請考慮使用Power BI Desktop中多對多關聯性中所述的技術。

資料檢視

如果語意模型中至少有一個數據表的儲存模式設定為 [匯 入] 或 [雙重]則會顯示 [數據 檢視] 索引標籤。

Screenshot highlighting the Data view icon.

當您在 [數據] 檢視中 選取 [雙重] 和 [匯入數據表 ] 時,它們會顯示快取的數據。 DirectQuery 數據表不會顯示數據,而且會顯示訊息,指出無法顯示 DirectQuery 數據表。

考量與限制

目前版本的儲存模式及其與複合模型的相互關聯有幾個限制。

下列即時連線 (多維度) 來源無法與複合模型搭配使用:

  • SAP HANA
  • SAP Business Warehouse

當您使用 DirectQuery 連線到那些多維度來源時,您無法連線到另一個 DirectQuery 來源,或將它與匯入的數據結合。

當您使用複合模型時,仍適用使用 DirectQuery 的現有限制。 根據數據表的儲存模式,許多這些限制現在都是根據數據表的儲存模式。 例如,匯入數據表上的匯出數據行可以參考其他數據表,但 DirectQuery 數據表上的匯出數據行仍受限於只參考相同數據表上的數據行。 如果模型內的任何數據表是 DirectQuery,則其他限制會套用至整個模型。

如需複合模型和 DirectQuery 的詳細資訊,請參閱下列文章: