使用彙總迭代器函式

已完成

每個單一資料行摘要函式都有各自對等的迭代器函式。 下列各節會考慮兩種實用的迭代器函式彙總案例:複雜摘要和較高粒度的摘要。

複雜摘要

在本節中會首次建立使用迭代器函式的量值。 首先請下載並開啟 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 函式已在篩選內容的課程模組中介紹。