SUMMARIZECOLUMNS
傳回一組群組的摘要資料表。
語法
SUMMARIZECOLUMNS( <groupBy_columnName> [, < groupBy_columnName >]…, [<filterTable>]…[, <name>, <expression>]…)
參數
詞彙 | 定義 |
---|---|
groupBy_columnName | 對基底資料表的完整資料行參考 (Table[Column]),所傳回資料表中包含了基底資料表的相異值。 每個 groupBy_columnName 資料行會與後續指定資料行交叉聯結 (不同資料表),或自動存在 (相同資料表)。 |
filterTable | 資料表運算式,這個運算式會新增至指定為 groupBy_columnName 引數的所有資料行篩選內容。 篩選資料表中出現的值,用來在執行交叉聯結/自動存在之前進行篩選。 |
NAME | 字串,其代表要用於後續指定運算式的資料行名稱。 |
expression | 傳回單一值 (而非資料表) 的任何 DAX 運算式。 |
傳回值
資料表,其包含來自所提供資料行的值組合 (根據指定的群組)。 傳回的資料表中所包含資料列,僅限於至少其中一個所提供運算式傳回非空白值的資料列。 如果所有運算式針對某個資料列都評估為空白/Null,則該資料列不會包含在傳回的資料表中。
備註
此函式不保證結果的任何排序次序。
groupBy_columnName 參數中不能多次指定某個資料行。 例如,下列公式無效。
SUMMARIZECOLUMNS( Sales[StoreId], Sales[StoreId] )
在計算結果欄或資料列層級安全性 (RLS) 規則中使用時,不支援在 DirectQuery 模式中使用此函式。
篩選內容
請考慮以下查詢:
SUMMARIZECOLUMNS (
'Sales Territory'[Category],
FILTER('Customer', 'Customer' [First Name] = "Alicia")
)
在此查詢中,如果沒有量值,groupBy 資料行就不會包含來自 FILTER 運算式 (例如,來自 Customer 資料表) 的任何資料行。 篩選不會套用至 groupBy 資料行。 「銷售領域」和「客戶」資料表可能會透過「轉售商銷售」事實資料表而間接相關。 因為不是直接相關,所以篩選運算式不會有任何作用,且 groupBy 資料行不會受到影響。
不過,使用此查詢:
SUMMARIZECOLUMNS (
'Sales Territory'[Category], 'Customer' [Education],
FILTER('Customer', 'Customer'[First Name] = "Alicia")
)
groupBy 資料行會包含受篩選影響的資料行,且該篩選會套用至 groupBy 結果。
使用 IGNORE
IGNORE 語法可以藉由省略空白/Null 評估中的特定運算式,而用來修改 SUMMARIZECOLUMNS 函式的行為。 對於不使用 IGNORE 而使所有運算式傳回空白/Null 的資料列,將會予以排除,而不論使用 IGNORE 的運算式是否評估為空白/Null。 IGNORE 只能用在 SUMMARIZECOLUMNS 運算式內。
範例
SUMMARIZECOLUMNS(
Sales[CustomerId], "Total Qty",
IGNORE( SUM( Sales[Qty] ) ),
"BlankIfTotalQtyIsNot3", IF( SUM( Sales[Qty] )=3, 3 )
)
這會彙總 Sales[CustomerId] 資料行,並會為指定群組中的所有客戶建立小計。 如果沒有 IGNORE,則結果會是:
CustomerId | 總數量 | BlankIfTotalQtyIsNot3 |
---|---|---|
A | 5 | |
B | 3 | 3 |
C | 3 | 3 |
使用 IGNORE,
CustomerId | 總數量 | BlankIfTotalQtyIsNot3 |
---|---|---|
B | 3 | 3 |
C | 3 | 3 |
忽略所有運算式,
SUMMARIZECOLUMNS(
Sales[CustomerId], "Blank",
IGNORE( BLANK() ), "BlankIfTotalQtyIsNot5",
IGNORE( IF( SUM( Sales[Qty] )=5, 5 ) )
)
雖然兩個運算式針對部分資料列傳回空白,但因為沒有傳回空白的非忽略運算式,所以包含在內。
CustomerId | Blank | BlankIfTotalQtyIsNot5 |
---|---|---|
A | 5 | |
B | ||
C |
使用 NONVISUAL
NONVISUAL 函式會將 SUMMARIZECOLUMNS 函式中的值篩選標記為不影響量值,但僅適用於分組依據資料行。 NONVISUAL 只能用在 SUMMARIZECOLUMNS 運算式內。
範例
DEFINE
MEASURE FactInternetSales[Sales] = SUM(FactInternetSales[Sales Amount])
EVALUATE
SUMMARIZECOLUMNS
(
DimDate[CalendarYear],
NONVISUAL(TREATAS({2007, 2008}, DimDate[CalendarYear])),
"Sales", [Sales],
"Visual Total Sales", CALCULATE([Sales], ALLSELECTED(DimDate[CalendarYear]))
)
ORDER BY [CalendarYear]
傳回結果,其中 [Visual Total Sales] 是所有年份的總計:
DimDate[CalendarYear] | [Sales] | [Visual Total Sales] |
---|---|---|
2007 | 9,791,060.30 | 29,358,677.22 |
2008 | 9,770,899.74 | 29,358,677.22 |
相反地,沒有 NONVISUAL 函式的相同查詢:
DEFINE
MEASURE FactInternetSales[Sales] = SUM(FactInternetSales[Sales Amount])
EVALUATE
SUMMARIZECOLUMNS
(
DimDate[CalendarYear],
TREATAS({2007, 2008}, DimDate[CalendarYear]),
"Sales", [Sales],
"Visual Total Sales", CALCULATE([Sales], ALLSELECTED(DimDate[CalendarYear]))
)
ORDER BY [CalendarYear]
傳回結果,其中 [Visual Total Sales] 是兩個選定年份的總計:
DimDate[CalendarYear] | [Sales] | [Visual Total Sales] |
---|---|---|
2007 | 9,791,060.30 | 19,561,960.04 |
2008 | 9,770,899.74 | 19,561,960.04 |
使用 ROLLUPADDISSUBTOTAL
新增 ROLLUPADDISSUBTOTAL 語法,其會藉由根據 groupBy_columnName 資料行將彙總/小計資料列新增至結果來修改 SUMMARIZECOUMNS 函式的行為。 ROLLUPADDISSUBTOTAL 只能用在 SUMMARIZECOLUMNS 運算式內。
具有單一小計的範例
DEFINE
VAR vCategoryFilter =
TREATAS({"Accessories", "Clothing"}, Product[Category])
VAR vSubcategoryFilter =
TREATAS({"Bike Racks", "Mountain Bikes"}, Product[Subcategory])
EVALUATE
SUMMARIZECOLUMNS
(
ROLLUPADDISSUBTOTAL
(
Product[Category], "IsCategorySubtotal", vCategoryFilter,
Product[Subcategory], "IsSubcategorySubtotal", vSubcategoryFilter
),
"Total Qty", SUM(Sales[Qty])
)
ORDER BY
[IsCategorySubtotal] DESC, [Category],
[IsSubcategorySubtotal] DESC, [Subcategory]
傳回下列資料表,
類別 | 子類別 | IsCategorySubtotal | IsSubcategorySubtotal | 總數量 |
---|---|---|---|---|
True | True | 60398 | ||
配件 | False | True | 36092 | |
配件 | Bike Racks | False | False | 328 |
Bikes | Mountain Bikes | False | False | 4970 |
Clothing | False | True | 9101 |
具有多個小計的範例
SUMMARIZECOLUMNS (
Regions[State], ROLLUPADDISSUBTOTAL ( Sales[CustomerId], "IsCustomerSubtotal" ),
ROLLUPADDISSUBTOTAL ( Sales[Date], "IsDateSubtotal"), "Total Qty", SUM( Sales[Qty] )
)
銷售額會依州/省、依日期分類,小計為 1。 依州/省的銷售額 (依日期 2)。 依州/省的銷售額 (依客戶 3)。 將客戶和前置日期都彙總到依州/省的銷售額。
傳回下列資料表,
CustomerID | IsCustomerSubtotal | 州/省 | 總數量 | Date | IsDateSubtotal |
---|---|---|---|---|---|
A | FALSE | WA | 5 | 2014/7/10 | |
B | FALSE | WA | 1 | 2014/7/10 | |
B | FALSE | WA | 2 | 7/11/2014 | |
C | FALSE | OR | 2 | 2014/7/10 | |
C | FALSE | OR | 1 | 7/11/2014 | |
TRUE | WA | 6 | 2014/7/10 | ||
TRUE | WA | 2 | 7/11/2014 | ||
TRUE | OR | 2 | 2014/7/10 | ||
TRUE | OR | 1 | 7/11/2014 | ||
A | FALSE | WA | 5 | TRUE | |
B | FALSE | WA | 3 | TRUE | |
C | FALSE | OR | 3 | TRUE | |
TRUE | WA | 8 | TRUE | ||
TRUE | OR | 3 | TRUE |
使用 ROLLUPGROUP
和 SUMMARIZE 函式一樣,ROLLUPGROUP 可以與 ROLLUPADDISSUBTOTAL 搭配使用,以指定要包含哪些摘要群組/資料細微性 (小計) (減少傳回的小計資料列數目)。 ROLLUPGROUP 只能用在 SUMMARIZECOLUMNS 或 SUMMARIZE 運算式內。
具有多個小計的範例
SUMMARIZECOLUMNS(
ROLLUPADDISSUBTOTAL( Sales[CustomerId], "IsCustomerSubtotal" ),
ROLLUPADDISSUBTOTAL(ROLLUPGROUP(Regions[City], Regions[State]), "IsCityStateSubtotal"),"Total Qty", SUM( Sales[Qty] )
)
仍依城市和州/省分組,但在報告傳回下列資料表的小計時一起彙總,
州/省 | CustomerId | IsCustomerSubtotal | 總數量 | City | IsCityStateSubtotal |
---|---|---|---|---|---|
WA | A | FALSE | 2 | Bellevue | FALSE |
WA | B | FALSE | 2 | Bellevue | FALSE |
WA | A | FALSE | 3 | Redmond | FALSE |
WA | B | FALSE | 1 | Redmond | FALSE |
OR | C | FALSE | 3 | Portland | FALSE |
WA | TRUE | 4 | Bellevue | FALSE | |
WA | TRUE | 4 | Redmond | FALSE | |
OR | TRUE | 3 | Portland | FALSE | |
A | FALSE | 5 | FALSE | ||
B | FALSE | 3 | TRUE | ||
C | FALSE | 3 | TRUE | ||
TRUE | 11 | TRUE |
相關內容
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應