Funkcja SUMMARIZE (język DAX)
Zwraca tabelę podsumowania dla żądanych sum z zestawu grup.
Składnia
SUMMARIZE(<table>, <groupBy_columnName>[, <groupBy_columnName>]…[, <name>, <expression>]…)
Parametry
table
Dowolne wyrażenie języka DAX zwracające tabelę danych.groupBy_columnName
(Argument opcjonalny) Kwalifikowana nazwa istniejącej kolumny, której wartości będą używane do tworzenia grup podsumowania. Ten parametr nie może być wyrażeniem.name
Nazwa nadana kolumnie sumy (podsumowania) ujęta w cudzysłów.expression
Wyrażenie języka DAX zwracające pojedynczą wartość skalarną; to wyrażenie jest obliczane wielokrotnie (dla każdego wiersza/kontekstu).
Wartość zwracana
Tabela zawierająca kolumny wybrane dla argumentów groupBy_columnName oraz podsumowane kolumny wyznaczone przez argumenty name.
Uwagi
Każda kolumna, dla której zostanie zdefiniowana nazwa (argument name), musi mieć odpowiadające jej wyrażenie (argument expression); w przeciwnym razie zostanie zwrócony błąd. Pierwszy argument (name) definiuje nazwę kolumny w wynikach. Drugi argument (expression) definiuje obliczenie wykonywane w celu uzyskania wartości dla każdego wiersza w tej kolumnie.
Kolumna groupBy_columnName musi znajdować się w tabeli table lub tabeli powiązanej z tabelą table.
Każda nazwa musi być ujęta w cudzysłów.
Funkcja grupuje wybrany zestaw wierszy w zestaw wierszy podsumowania wg wartości z co najmniej jednej kolumny groupBy_columnName. Dla każdej grupy jest zwracany jeden wiersz.
Przykład
W poniższym przykładzie jest zwracane podsumowanie sprzedaży odsprzedawców pogrupowane według roku kalendarzowego oraz nazwy kategorii produktów. Wynikowa tabela umożliwia analizowanie sprzedaży odsprzedawców według lat i kategorii produktów.
SUMMARIZE(ResellerSales_USD
, DateTime[CalendarYear]
, ProductCategory[ProductCategoryName]
, "Sales Amount (USD)", SUM(ResellerSales_USD[SalesAmount_USD])
, "Discount Amount (USD)", SUM(ResellerSales_USD[DiscountAmount])
)
W poniższej tabeli pokazano podgląd danych w formie, w jakiej odebrałaby je dowolna funkcja oczekująca tabeli:
DateTime[CalendarYear] |
ProductCategory[ProductCategoryName] |
[Sales Amount (USD)] |
[Discount Amount (USD)] |
2008 |
Bikes |
12968255.42 |
36167.6592 |
2005 |
Bikes |
6958251.043 |
4231.1621 |
2006 |
Bikes |
18901351.08 |
178175.8399 |
2007 |
Bikes |
24256817.5 |
276065.992 |
2008 |
Components |
2008052.706 |
39.9266 |
2005 |
Components |
574256.9865 |
0 |
2006 |
Components |
3428213.05 |
948.7674 |
2007 |
Components |
5195315.216 |
4226.0444 |
2008 |
Clothing |
366507.844 |
4151.1235 |
2005 |
Clothing |
31851.1628 |
90.9593 |
2006 |
Clothing |
455730.9729 |
4233.039 |
2007 |
Clothing |
815853.2868 |
12489.3835 |
2008 |
Accessories |
153299.924 |
865.5945 |
2005 |
Accessories |
18594.4782 |
4.293 |
2006 |
Accessories |
86612.7463 |
1061.4872 |
2007 |
Accessories |
275794.8403 |
4756.6546 |
Zaawansowane opcje funkcji SUMMARIZE
Funkcja SUMMARIZE z funkcją ROLLUP
Dodanie składni funkcji ROLLUP() powoduje zmianę zachowania funkcji SUMMARIZE polegającą na dodaniu wierszy zestawienia do wyników dla kolumn groupBy_columnName.
SUMMARIZE(<table>, <groupBy_columnName>[, <groupBy_columnName>]…[, ROLLUP(<groupBy_columnName>[,< groupBy_columnName>…])][, <name>, <expression>]…)
Parametry funkcji ROLLUP
- groupBy_columnName
Kwalifikowana nazwa istniejącej kolumny, której wartości będą używane do tworzenia grup podsumowania. Ten parametr nie może być wyrażeniem.
Uwaga: wszystkie inne parametry funkcji SUMMARIZE zostały omówione wcześniej i w tej sekcji nie powtórzono ich omówień.
Uwagi
- Do kolumn wymienionych w wyrażeniu ROLLUP nie można odwoływać się jako do części kolumn groupBy_columnName.
Przykład
W poniższym przykładzie są dodawane zestawienia do kolumn grupowania według używanych w wywołaniu funkcji SUMMARIZE.
SUMMARIZE(ResellerSales_USD
, ROLLUP( DateTime[CalendarYear], ProductCategory[ProductCategoryName])
, "Sales Amount (USD)", SUM(ResellerSales_USD[SalesAmount_USD])
, "Discount Amount (USD)", SUM(ResellerSales_USD[DiscountAmount])
)
W poniższej tabeli pokazano podgląd danych w formie, w jakiej odebrałaby je dowolna funkcja oczekująca tabeli:
DateTime[CalendarYear] |
ProductCategory[ProductCategoryName] |
[Sales Amount (USD)] |
[Discount Amount (USD)] |
2008 |
Bikes |
12968255.42 |
36167.6592 |
2005 |
Bikes |
6958251.043 |
4231.1621 |
2006 |
Bikes |
18901351.08 |
178175.8399 |
2007 |
Bikes |
24256817.5 |
276065.992 |
2008 |
Components |
2008052.706 |
39.9266 |
2005 |
Components |
574256.9865 |
0 |
2006 |
Components |
3428213.05 |
948.7674 |
2007 |
Components |
5195315.216 |
4226.0444 |
2008 |
Clothing |
366507.844 |
4151.1235 |
2005 |
Clothing |
31851.1628 |
90.9593 |
2006 |
Clothing |
455730.9729 |
4233.039 |
2007 |
Clothing |
815853.2868 |
12489.3835 |
2008 |
Accessories |
153299.924 |
865.5945 |
2005 |
Accessories |
18594.4782 |
4.293 |
2006 |
Accessories |
86612.7463 |
1061.4872 |
2007 |
Accessories |
275794.8403 |
4756.6546 |
2008 |
15496115.89 |
41224.3038 |
|
2005 |
7582953.67 |
4326.4144 |
|
2006 |
22871907.85 |
184419.1335 |
|
2007 |
30543780.84 |
297538.0745 |
|
76494758.25 |
527507.9262 |
ROLLUPGROUP
Za pomocą funkcji ROLLUPGROUP() można obliczać grupy sum częściowych. Użycie funkcji ROLLUPGROUP zamiast funkcji ROLLUP spowoduje uzyskanie takiego samego wyniku przez dodanie wierszy zestawienia do wyniku w kolumnach groupBy_columnName. Jednak dodanie funkcji ROLLUPGROUP() wewnątrz składni funkcji ROLLUP zapobiega umieszczaniu niepełnych sum częściowych w wierszach zestawienia.
W poniższym przykładzie pokazano tylko sumę końcową dla wszystkich lat i kategorii bez sumy częściowej dla każdego roku we wszystkich kategoriach:
SUMMARIZE(ResellerSales_USD
, ROLLUP(ROLLUPGROUP( DateTime[CalendarYear], ProductCategory[ProductCategoryName]))
, "Sales Amount (USD)", SUM(ResellerSales_USD[SalesAmount_USD])
, "Discount Amount (USD)", SUM(ResellerSales_USD[DiscountAmount])
)
W poniższej tabeli pokazano podgląd danych w formie, w jakiej odebrałaby je dowolna funkcja oczekująca tabeli:
DateTime[CalendarYear] |
ProductCategory[ProductCategoryName] |
[Sales Amount (USD)] |
[Discount Amount (USD)] |
2008 |
Bikes |
12968255.42 |
36167.6592 |
2005 |
Bikes |
6958251.043 |
4231.1621 |
2006 |
Bikes |
18901351.08 |
178175.8399 |
2007 |
Bikes |
24256817.5 |
276065.992 |
2008 |
Components |
2008052.706 |
39.9266 |
2005 |
Components |
574256.9865 |
0 |
2006 |
Components |
3428213.05 |
948.7674 |
2007 |
Components |
5195315.216 |
4226.0444 |
2008 |
Clothing |
366507.844 |
4151.1235 |
2005 |
Clothing |
31851.1628 |
90.9593 |
2006 |
Clothing |
455730.9729 |
4233.039 |
2007 |
Clothing |
815853.2868 |
12489.3835 |
2008 |
Accessories |
153299.924 |
865.5945 |
2005 |
Accessories |
18594.4782 |
4.293 |
2006 |
Accessories |
86612.7463 |
1061.4872 |
2007 |
Accessories |
275794.8403 |
4756.6546 |
76494758.25 |
527507.9262 |
Funkcja SUMMARIZE z funkcją ISSUBTOTAL
Umożliwia użytkownikowi utworzenie innej kolumny (w funkcji Summarize), która zwraca wartość Prawda, jeśli wiersz zawiera wartości sum częściowych dla kolumny określonej przez argument funkcji ISSUBTOTAL, a w przeciwnym razie wartość Fałsz.
SUMMARIZE(<table>, <groupBy_columnName>[, <groupBy_columnName>]…[, ROLLUP(<groupBy_columnName>[,< groupBy_columnName>…])][, <name>, {<expression>|ISSUBTOTAL(<columnName>)}]…)
Parametry funkcji ISSUBTOTAL
- columnName
Nazwa dowolnej kolumny w tabeli funkcji SUMMARIZE lub dowolnej kolumny w tabeli powiązanej z tą tabelą.
Wartość zwracana
Wartość True, jeśli wiersz zawiera wartość sumy częściowej dla kolumny określonej przez argument; w przeciwnym razie zwraca wartość False
Uwagi
Funkcji ISSUBTOTAL można użyć tylko w wyrażeniu funkcji SUMMARIZE.
Funkcję ISSUBTOTAL musi poprzedzać pasująca kolumna name.
Przykład
W poniższym przykładzie jest generowana kolumna funkcji ISSUBTOTAL() dla każdej kolumny funkcji ROLLUP() w danym wywołaniu funkcji SUMMARIZE().
SUMMARIZE(ResellerSales_USD
, ROLLUP( DateTime[CalendarYear], ProductCategory[ProductCategoryName])
, "Sales Amount (USD)", SUM(ResellerSales_USD[SalesAmount_USD])
, "Discount Amount (USD)", SUM(ResellerSales_USD[DiscountAmount])
, "Is Sub Total for DateTimeCalendarYear", ISSUBTOTAL(DateTime[CalendarYear])
, "Is Sub Total for ProductCategoryName", ISSUBTOTAL(ProductCategory[ProductCategoryName])
)
W poniższej tabeli pokazano podgląd danych w formie, w jakiej odebrałaby je dowolna funkcja oczekująca tabeli:
[Is Sub Total for DateTimeCalendarYear] |
[Is Sub Total for ProductCategoryName] |
DateTime[CalendarYear] |
ProductCategory[ProductCategoryName] |
[Sales Amount (USD)] |
[Discount Amount (USD)] |
Fałsz |
FALSE |
||||
FALSE |
FALSE |
2008 |
Bikes |
12968255.42 |
36167.6592 |
FALSE |
FALSE |
2005 |
Bikes |
6958251.043 |
4231.1621 |
FALSE |
FALSE |
2006 |
Bikes |
18901351.08 |
178175.8399 |
FALSE |
FALSE |
2007 |
Bikes |
24256817.5 |
276065.992 |
FALSE |
FALSE |
2008 |
Components |
2008052.706 |
39.9266 |
FALSE |
FALSE |
2005 |
Components |
574256.9865 |
0 |
FALSE |
FALSE |
2006 |
Components |
3428213.05 |
948.7674 |
FALSE |
FALSE |
2007 |
Components |
5195315.216 |
4226.0444 |
FALSE |
FALSE |
2008 |
Clothing |
366507.844 |
4151.1235 |
FALSE |
FALSE |
2005 |
Clothing |
31851.1628 |
90.9593 |
FALSE |
FALSE |
2006 |
Clothing |
455730.9729 |
4233.039 |
FALSE |
FALSE |
2007 |
Clothing |
815853.2868 |
12489.3835 |
FALSE |
FALSE |
2008 |
Accessories |
153299.924 |
865.5945 |
FALSE |
FALSE |
2005 |
Accessories |
18594.4782 |
4.293 |
FALSE |
FALSE |
2006 |
Accessories |
86612.7463 |
1061.4872 |
FALSE |
FALSE |
2007 |
Accessories |
275794.8403 |
4756.6546 |
FALSE |
TRUE |
||||
FALSE |
TRUE |
2008 |
15496115.89 |
41224.3038 |
|
FALSE |
TRUE |
2005 |
7582953.67 |
4326.4144 |
|
FALSE |
TRUE |
2006 |
22871907.85 |
184419.1335 |
|
FALSE |
TRUE |
2007 |
30543780.84 |
297538.0745 |
|
TRUE |
TRUE |
76494758.25 |
527507.9262 |