改善模型重新整理和函式

已完成

在您進一步探索如何改善模型重新整理和函式之前,您應該了解 Power BI 儲存資料的方式。 類似於 Tableau 的 Hyper 檔案,Power BI 會將資料儲存為單欄式資料庫。

以資料列為基礎的資料庫和 Power BI 單欄式資料庫螢幕擷取畫面。

注意

單欄式資料庫會將每個資料行儲存為其本身的檔案,而不會逐列儲存資料 (以資料列為基礎的資料庫)。

將資料儲存為單欄式資料庫有助於加速擷取某個資料行的多個資料列,因此在資料表很長的情況下會很理想。 同一個資料行中的資料類型一律相同,例如同為字串或整數。 由於將同一種類型的所有項目分組在一起,因此可以更有效率地進行壓縮,進而在分析大量資料時提升效能。

注意

Power BI 也會嘗試以分組在一起的最佳方式儲存這些資料行 (例如項目)。 將資料行分組之後,系統會建立對應相異值的字典。

改善模型

當想要提升模型的效能時,請考慮下列因素:

  • 基數

  • 將空白變更為值

  • 移除多餘且不必要的欄位

  • 星狀結構描述

  • 自動日期/時間

  • 整數與字串的比較

移除高基數欄位

基數是指資料庫數據行或欄位中所包含的唯一值數目。 高基數值通常是識別碼、電子郵件地址或使用者名稱。

具有高基數之數據表數據行的螢幕快照範例是USERS數據表,其數據行名為 USER_ID。

您的第一個考量應該是移除高基數欄位。 如果每個資料列都有唯一識別碼,請移除該欄位。 基數越高,儲存的成本就越高;相異值等於高成本。

一個常見的問題是 [日期/時間] 欄位,其中日期和時間的組合會增加欄位基數。 若要解決此問題,請考慮將欄位分割成不同的日期和時間欄位。

將空白變更為值

寫入量值時,您可能會遇到無法傳回有意義值的情況。 在這些情況下,您可能會想要改為傳回值 (例如零)。 基於效能考量,您應該重新考慮不要貿然行事。

在大部分的計算期間,會忽略空白值,但不會忽略零值。 將空白值轉換成零會強制進行計算以評估更多資料列,因而傳回大型查詢結果集,這通常會導致報表轉譯速度變慢。 換句話說,將空白值轉換成零會增加計算成本。

移除多餘且不必要的欄位

拿掉多餘的和不必要的欄位很重要,因為您嘗試限制資料表的寬度,這可改善重新整理效能。 一般而言,您可以移除多餘的欄位,因為您已建立 star 架構,而且您不需要相同的字段來顯示多次。 如有不必要的欄位,則必須識別要在匯入時使用的欄位。 最好從小型開始並成長,而不是在一個大型數據集中一起擲回所有數據。

建立具有星型結構描述的高效能模型

星型架構設計與開發高效能、可使用的Power BI模型相關。 每個 Power BI 報表都會建立一個傳送至 Power BI 模型的查詢。 這些查詢可用來篩選、分組和摘要模型資料。 擁有設計完善的模型可提供資料表進行篩選、群組和摘要。

注意

star 架構是一種數據模型化架構,中間有一個事實數據表,而事實數據表周圍有數個相關聯的維度數據表。 星型結構描述最適用於查詢大型資料集。

此設計完善的模型適合搭配星型結構描述需求:

  • 維度數據表支持篩選和分組

  • 事實數據表支援摘要

star 架構可防止從雪花式架構取得的加法聯結的計算和處理,但仍提供一般數據表無法提供之壓縮數據的優點。

關閉自動日期/時間

自動日期/時間是 Power BI Desktop 中的數據載入選項,可支援根據載入模型之日期數據行的實用時間智能報告。 開啟此選項后,Power BI Desktop 會在數據集中的每個日期欄位後方建立隱藏的日期/時間數據表。

所有這些隱藏的日期/時間資料表和日期欄位結合在一起,將會大幅增加模型大小。 減少模型大小有助於獲得最佳效能,特別是針對較大的資料集。 以最佳方式,您會建立一個日期數據表並連結至該數據表。 您也可以使用自己的日期資料表來新增其他日期維度,以提供比隱藏的自動日期/時間資料表更多的功能。

若要在 Power BI 中關閉 [自動日期/時間] 選項,請使用下列程序。

  1. 選取 [檔案 > 選項和設定]。

  2. 選取 [選項]。

    用於關閉 [自動日期/時間] 的選項和設定螢幕擷取畫面。

  3. 在 [全域] 或 [目前檔案] 區段中,選取 [資料載入] 選項。

  4. 取消核取 [時間智慧] 區段中 [新檔案的自動日期/時間] 方塊。

使用整數而非字串

整數優於字串的原因有兩個:

  • 比對兩個整數會快於比對兩個字串。

  • 字串必須以您必須先找到其索引的方式儲存,然後您就會找到值。

字串會參考兩次,而整數只會參考一次。

如需詳細資訊,請參閱了解星型結構描述及其對 Power BI 的重要性