共用方式為


避免將 BLANK 轉換成 values

身為數據模型師,在撰寫 measure 表示式時,您可能會遇到無法傳回有意義的 value 的情況。 在這些情況下,您可能會想要改為傳回 value,類似於零。 建議您仔細判斷此設計是否有效 and 實用。

請考慮下列 measure 定義,明確將 BLANK 結果轉換成零。

Sales (No Blank) =
IF(
    ISBLANK([Sales]),
    0,
    [Sales]
)

請考慮另一個 measure 定義,該定義也會將 BLANK 結果轉換成零。

Profit Margin =
DIVIDE([Profit], [Sales], 0)

DIVIDE 函式會將 Profitmeasure 除以 Salesmeasure。 如果結果為零 orBLANK,則會傳回第三個自變數—替代結果(這是選擇性的)。 在此範例中,由於零會當做替代結果傳遞,所以保證 measure 一律會傳回 value。

這些 measure 設計效率不佳,and 導致報表設計不佳。

當它們被新增至報表的視覺效果時,Power BI 會嘗試擷取 filter 環境中的 all 群組。 評估 and 擷取大型查詢結果通常會導致報表轉譯變慢。 每個範例 measure 有效地將疏鬆計算轉換成密集計算,迫使 Power BI 使用比必要更多的記憶體。

此外,太多群組通常會造成報表使用者負擔過重。

讓我們看看當 利潤率measure 新增至表格視覺化時,按客戶分組會發生什麼事。

Power BI Desktop 的螢幕快照,顯示每位客戶的一行數據的數據表格。銷售 values 為 BLANKand,獲利率 values 為零。

資料表視覺效果會顯示大量的資料列。 (模型中有 fact 18,484 個客戶,and 因此數據表會嘗試顯示其中 all。請注意,檢視中的客戶尚未達成任何銷售。 然而,由於 利潤measure 一律會傳回 value,所以會顯示它們。

注意

當視覺效果中顯示太多數據點時,Power BI 可能會使用數據縮減策略來移除 orsummarize 大型查詢結果。 如需詳細資訊,請參閱 數據點限制,依視覺效果類型的 and 策略

讓我們看看當 利差measure 定義改善時會發生什麼事。 只有當 Salesmeasure 不是 BLANK (or 零)時,now 它才會傳回 value。

Profit Margin =
DIVIDE([Profit], [Sales])

在目前 filter 內容中,表格視覺效果 now 只顯示完成銷售的客戶。 改善的 measure 可為您的報表使用者提供更有效率的 and 實際體驗。

BI Desktop Power 的螢幕快照,其中顯示已篩選內容之數據的數據表視覺效果。

提示

必要時,您可以啟用 [顯示沒有 數據的專案] 選項,以在 filter 內容中設定視覺效果以顯示 all 群組(傳回 valuesorBLANK)。

建議

建議您在無法傳回有意義的 value 時,傳回 BLANK。

此設計方法很有效率,可讓 Power BI 更快速地轉譯報表。 此外,傳回 BLANK 比較好,因為報表視覺效果預設會在摘要 BLANK時排除群組。