Power BI 服務 中的語意模型模式

本文提供Power BI語意模型模式的技術說明。 它適用於語意模型,這些模型代表與外部裝載 Analysis Services 模型的即時連線,以及 Power BI Desktop 中開發的模型。 本文強調每個模式的理由,以及可能對Power BI容量資源造成的影響。

這三種語意模型模式為:

匯入模式

入模式是用來開發語意模型的最常見模式。 由於記憶體內部查詢,此模式可提供快速的效能。 它也提供模型化工具的設計彈性,並支援特定的 Power BI 服務 功能(Q&A、快速見解 等)。 由於這些優點,建立新的Power BI Desktop解決方案時,這是預設模式。

請務必瞭解匯入的數據一律會儲存至磁碟。 查詢或重新整理時,數據必須完全載入 Power BI 容量的記憶體中。 在記憶體中之後,匯入模型就可以達到非常快速的查詢結果。 也請務必瞭解匯入模型沒有部分載入記憶體的概念。

重新整理時,數據會壓縮並優化,然後由 VertiPaq 儲存引擎儲存至磁碟。 從磁碟載入記憶體時,可能會看到 10 倍的壓縮。 因此,合理預期 10 GB 的源數據可以壓縮到大約 1 GB 的大小。 磁碟上的 儲存體 大小可以從壓縮的大小減少 20%。 您可以藉由比較 Power BI Desktop 檔案大小與檔案的 Task Manager 記憶體使用量來判斷大小差異。

設計彈性可以透過三種方式達成:

  • 從數據流快取數據,以及外部數據源來整合數據,無論數據源類型或格式為何。
  • 建立數據準備查詢時,請使用整個 Power Query M 公式語言,稱為 M 函數。
  • 使用商業規則增強模型時,套用整組 數據分析表示式 (DAX) 函式。 支援匯出數據行、匯出數據表和量值。

如下圖所示,匯入模型可以從任何數目支持的數據源類型整合數據。

Diagram shows an Import model can integrate data from any number of external data source types.

不過,雖然匯入模型有令人信服的優點,但也有缺點:

  • 在 Power BI 可以查詢模型之前,必須先將整個模型載入記憶體,這樣可能會對可用的容量資源施加壓力,特別是隨著匯入模型的數目和大小增加。
  • 模型數據只與最新的重新整理一樣目前,因此匯入模型需要重新整理,通常是以排程為基礎。
  • 完整重新整理會移除所有數據表中的所有數據,並從數據源重載數據。 此作業對於 Power BI 服務和數據源的時間和資源而言可能很昂貴。

注意

Power BI 可以達成累加式重新整理,以避免截斷和重載整個數據表。 如需詳細資訊,包括支援的方案和授權,請參閱 語意模型的累加式重新整理和實時數據。

從 Power BI 服務 資源的觀點來看,匯入模型需要:

  • 在查詢或重新整理模型時,有足夠的記憶體載入模型。
  • 處理資源和額外的記憶體資源以重新整理數據。

DirectQuery 模式

DirectQuery 模式是匯入模式的替代方案。 以 DirectQuery 模式開發的模型不會匯入數據。 相反地,它們只包含定義模型結構的元數據。 查詢模型時,會使用原生查詢從基礎數據源擷取數據。

Diagram shows how DirectQuery model issues native queries to the underlying data source.

有兩個主要原因需要考慮開發 DirectQuery 模型:

  • 當數據量太大時,即使套用數據縮減方法、載入模型或實際重新整理也一樣
  • 當報表和儀錶板需要提供 近乎實時 的數據時,超出排程重新整理限制內可達成的目標。 排程的重新整理限制是共用容量的每天 8 次,進階版 容量每天 48 次。

DirectQuery 模型有數個相關優點:

  • 匯入模型大小限制不適用。
  • 模型不需要排程的數據重新整理。
  • 報表使用者會在與報表篩選和交叉分析篩選器互動時看到最新的數據。 此外,報表使用者可以重新整理整個報表,以擷取目前的數據。
  • 您可以使用自動頁面重新整理功能來開發實時報表。
  • 儀錶板磚,根據 DirectQuery 模型,可以每隔 15 分鐘自動更新一次。

不過,DirectQuery 模型有一些相關聯的限制:

  • Power Query/Mashup 運算式只能是可轉置至數據源所瞭解之原生查詢的函式。
  • DAX 公式僅限於使用只能轉置至數據源所瞭解之原生查詢的函式。 不支援導出數據表。
  • 不支援 快速見解 功能。

從 Power BI 服務 資源的觀點來看,DirectQuery 模型需要:

  • 查詢模型時,載入模型的最低記憶體(僅限元數據)。
  • 有時候,Power BI 服務 必須使用大量的處理器資源來產生和處理傳送至數據源的查詢。 當這種情況發生時,它可能會影響輸送量,尤其是在並行用戶查詢模型時。

如需詳細資訊,請參閱 在Power BI Desktop 中使用 DirectQuery。

複合模式

複合 模式可以混合匯入和 DirectQuery 模式,或整合多個 DirectQuery 數據源。 以複合模式開發的模型支援設定每個模型數據表的儲存模式。 此模式也支援使用 DAX 定義的導出資料表。

數據表儲存模式可以設定為 Import、DirectQuery 或 Dual。 設定為雙重儲存模式的數據表同時為 Import 和 DirectQuery,而此設定可讓 Power BI 服務 判斷查詢依據查詢使用的最有效率模式。

Diagram shows that a Composite model is a combination of Import and DirectQuery storage modes, configured at table level.

複合模型致力於提供最佳的匯入和 DirectQuery 模式。 適當地設定時,它們可以結合記憶體內部模型的高查詢效能,以及從數據源擷取近乎實時數據的能力。

如需詳細資訊,請參閱 在Power BI Desktop 中使用複合模型。

純匯入和 DirectQuery 數據表

開發複合模型的數據模型工具可能會以匯入或雙重儲存模式設定維度類型數據表,以及在 DirectQuery 模式中設定事實類型數據表。 如需模型數據表角色的詳細資訊,請參閱 瞭解星型架構和Power BI的重要性。

例如,假設模型具有 雙重模式的 Product 維度類型數據表,以及 DirectQuery 模式中的 Sales 事實類型數據表。 Product 數據表可以有效率且快速地從記憶體中查詢,以轉譯報表交叉分析篩選器。 您也可以使用相關的 Product 數據表,在 DirectQuery 模式中查詢 Sales 數據表。 後者的查詢可以產生單一有效率的原生 SQL 查詢來聯結 ProductSales 數據表,並依交叉分析篩選器值進行篩選。

混合式數據表

開發複合模型的數據模型工具也可以將事實數據表設定為混合式數據表。 混合式數據表是具有一或多個匯入數據分割和一個 DirectQuery 分割區的數據表。 混合式數據表的優點是,它可以有效率且快速地從記憶體中查詢,同時包含上次匯入周期之後數據源的最新數據變更,如下列視覺效果所示。

Screenshot shows a hybrid table partition with Archived, Incremental refresh, and Real time rows marked.

建立混合式數據表最簡單的方式是在Power BI Desktop 中設定累加式重新整理原則,並啟用 [使用 DirectQuery 即時取得最新數據] 選項(僅限 進階版)。 當 Power BI 套用已啟用此選項的累加式重新整理原則時,它會分割數據表,例如上圖中顯示的數據分割配置。 為了確保效能良好,請在雙重儲存模式中設定維度類型數據表,讓 Power BI 可以在查詢 DirectQuery 分割區時產生有效率的原生 SQL 查詢。

注意

只有在語意模型裝載於 進階版 容量的工作區時,Power BI 才支援混合式數據表。 因此,如果您使用 選項設定累加式重新整理原則,即可使用 DirectQuery 即時取得最新數據的選項,您必須將語意模型上傳至 進階版 工作區。 如需詳細資訊,請參閱 語意模型的累加式重新整理和實時數據。

您也可以使用表格式模型文本語言 (TMSL) 或表格式物件模型 (TOM) 或使用第三方工具,將 Import 資料表轉換成混合式數據表。 例如,您可以分割事實數據表,讓大量數據留在數據倉儲中,同時只匯入最近一小部分的數據。 如果大量數據是不常存取的歷程記錄數據,此方法有助於將效能優化。 混合式數據表可以有多個匯入分割區,但只能有一個 DirectQuery 分割區。