使用彙總迭代器函式
每個單一資料行摘要函式都有各自對等的迭代器函式。 下列各節會考慮兩種實用的迭代器函式彙總案例:複雜摘要和較高粒度的摘要。
複雜摘要
在本節中會首次建立使用迭代器函式的量值。 首先請下載並開啟 Adventure Works DW 2020 M05.pbix 檔案。 再新增下列量值定義:
Revenue =
SUMX(
Sales,
Sales[Order Quantity] * Sales[Unit Price] * (1 - Sales[Unit Price Discount Pct])
)
將 Revenue 量值格式化為兩個小數位數的貨幣值,然後將其新增至報表 [第 1 頁] 上的資料表視覺效果。
透過使用迭代器函式,Revenue 量值公式不單只是匯總單一資料行的值。 針對每個資料列,其會使用三個資料行的資料列內容值來產生收益金額。
現在再新增另一個量值:
Discount =
SUMX(
Sales,
Sales[Order Quantity]
* (
RELATED('Product'[List Price]) - Sales[Unit Price]
)
)
將 Discount 量值格式化為兩個小數位的貨幣值,然後將其加入至資料表視覺效果中。
請注意,該公式是使用 RELATED
函式。 請記住,資料列內容並不會延伸到資料表範圍之外。 如果您的公式需要參考其他資料表中的資料行,而且資料表之間存在模型關聯性,針對單側關聯性請使用 RELATED
函式,針對多側關聯性請使用 RELATEDTABLE
函式。
較高粒度摘要
下列範例會思考回報平均收益的需求。 新增下列量值:
Revenue Avg =
AVERAGEX(
Sales,
Sales[Order Quantity] * Sales[Unit Price] * (1 - Sales[Unit Price Discount Pct])
)
將 Revenue Avg 量值格式化為兩個小數位的貨幣值,然後將其加入至資料表視覺效果中。
請考慮到平均值表示值的加總除以值的數量。 不過,該理論會引發一個問題:值的計數又代表什麼? 在此情況下,值的數量是並非得出 BLANK 的運算式數目。 此外,由於迭代器函式會列舉 Sales 資料表的資料列,因此平均值會代表「各資料列的收益」。 依這個邏輯進一步思考,因為 Sales 資料表中的每個資料列記錄的是銷售訂單細項,所以可以更精確地描述為「各訂單細項的收益」。
因此請將 Revenue Avg 量值重新命名為 Revenue Avg Order Line,讓使用者清楚看出平均值所用的基礎。
下列範例會使用迭代器函式來建立新的量值,以將資料粒度提升至銷售訂單層級 (銷售訂單由一或多個訂單細項所組成)。 新增下列量值:
Revenue Avg Order =
AVERAGEX(
VALUES('Sales Order'[Sales Order]),
[Revenue]
)
將 Revenue Avg Order 量值格式化為兩個小數位的貨幣值,然後將其加入至資料表視覺效果中。
如預期,訂單的平均收益一律高於單一訂單細項的平均收益。
請注意,該公式會使用 VALUES
DAX 函式。 此函式可讓公式判斷篩選內容中的值。 在此情況下,AVERAGEX
函式會逐一查看「篩選內容中」的每個銷售訂單。 換句話說,函式會逐一查看該月的每一筆銷售訂單。 篩選內容和 VALUES
函式已在篩選內容的課程模組中介紹。