Udostępnij za pośrednictwem


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

  1. 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.

  2. Kolumna groupBy_columnName musi znajdować się w tabeli table lub tabeli powiązanej z tabelą table.

  3. Każda nazwa musi być ujęta w cudzysłów.

  4. 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