次の方法で共有


SUMMARIZE 関数 (DAX)

グループのセットに対して要求された合計の概要テーブルを返します。

構文

SUMMARIZE(<table>, <groupBy_columnName>[, <groupBy_columnName>]…[, <name>, <expression>]…)

パラメーター

  • table
    データのテーブルを返す任意の DAX 式。

  • groupBy_columnName
    (省略可能) 見つかった値に基づいて概要グループを作成するために使用される既存の列の修飾名。 このパラメーターに式を指定することはできません。

  • name
    合計列または集計列の名前。二重引用符で囲みます。

  • expression
    単一のスカラー値を返す任意の DAX 式。式は、行/コンテキストごとに複数回評価されます。

戻り値

引数 groupBy_columnName で選択した列と引数 name でデザインした集計列から構成されるテーブル。

説明

  1. 名前を定義するそれぞれの列には対応する式が必要です。そうでないと、エラーが返されます。 最初の引数 name は、結果の列の名前を定義します。 2 番目の引数 expression は、その列の各行の値を取得するために実行される計算を定義します。

  2. groupBy_columnName は、table 内または table の関連テーブル内に存在する必要があります。

  3. それぞれの name は、二重引用符 (") で囲みます。

  4. この関数は、1 つまたは複数の groupBy_columnName 列の値に基づいて、選択された行のセットを概要行のセットにグループ化します。 グループごとに 1 つの行が返されます。

使用例

次の例は、カレンダー年度および製品カテゴリ名でグループ化された再販業者の販売の概要を返します。この結果テーブルに基づいて、年度および製品カテゴリ別の再販業者の販売を分析できます。

SUMMARIZE(ResellerSales_USD
      , DateTime[CalendarYear]
      , ProductCategory[ProductCategoryName]
      , "Sales Amount (USD)", SUM(ResellerSales_USD[SalesAmount_USD])
      , "Discount Amount (USD)", SUM(ResellerSales_USD[DiscountAmount])
      )

次の表は、テーブルを引数として受け取る関数にこのデータを渡すとどのように表示されるかを示したものです。

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

SUMMARIZE の詳細設定オプション

SUMMARIZE と ROLLUP の組み合わせ

ROLLUP() 構文を追加すると、groupBy_columnName 列の結果にロール アップ行が追加され、SUMMARIZE 関数の動作が変更されます。

SUMMARIZE(<table>, <groupBy_columnName>[, <groupBy_columnName>]…[, ROLLUP(<groupBy_columnName>[,< groupBy_columnName>…])][, <name>, <expression>]…)

ROLLUP パラメーター

  • groupBy_columnName
    見つかった値に基づいて概要グループを作成するために使用される既存の列の修飾名。 このパラメーターに式を指定することはできません。

メモ: 他の SUMMARIZE パラメーターについては既に説明されているため、ここでは反復を避けるために説明を省略します。

解説

  • ROLLUP 式に含まれている列は、groupBy_columnName 列の一部として参照できません。

次の例では、SUMMARIZE 関数呼び出しの Group-By 列にロール アップ行を追加します。

SUMMARIZE(ResellerSales_USD
      , ROLLUP( DateTime[CalendarYear], ProductCategory[ProductCategoryName])
      , "Sales Amount (USD)", SUM(ResellerSales_USD[SalesAmount_USD])
      , "Discount Amount (USD)", SUM(ResellerSales_USD[DiscountAmount])
)

次の表は、テーブルを引数として受け取る関数にこのデータを渡すとどのように表示されるかを示したものです。

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

ROLLUPGROUP() を使用して、小計のグループを計算できます。 ROLLUP の代わりに ROLLUPGROUP を使用した場合、groupBy_columnName 列の結果にロール アップ行が追加され、同じ結果が得られます。 ただし、ROLLUP 構文の内部で ROLLUPGROUP() を使用することで、ロール アップ行が部分的に小計されることを防止できます。

次の例では、すべての年度の全カテゴリの総計のみが表示され、各年度の全カテゴリの小計は表示されません。

SUMMARIZE(ResellerSales_USD
      , ROLLUP(ROLLUPGROUP( DateTime[CalendarYear], ProductCategory[ProductCategoryName]))
      , "Sales Amount (USD)", SUM(ResellerSales_USD[SalesAmount_USD])
      , "Discount Amount (USD)", SUM(ResellerSales_USD[DiscountAmount])
)

次の表は、テーブルを引数として受け取る関数にこのデータを渡すとどのように表示されるかを示したものです。

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

SUMMARIZE と ISSUBTOTAL の組み合わせ

ユーザーは、Summarize 関数内で、ISSUBTOTAL の引数として指定された列の小計値が行に含まれる場合に True を返し、それ以外の場合は False を返す別の列を作成できます。

SUMMARIZE(<table>, <groupBy_columnName>[, <groupBy_columnName>]…[, ROLLUP(<groupBy_columnName>[,< groupBy_columnName>…])][, <name>, {<expression>|ISSUBTOTAL(<columnName>)}]…)

ISSUBTOTAL パラメーター

  • columnName
    SUMMARIZE 関数の table 内または table の関連テーブル内の任意の列の名前。

戻り値

引数として指定された列の小計値が行に含まれる場合は True、それ以外の場合は False。

解説

  • ISSUBTOTAL は、SUMMARIZE 関数の式部分でのみ使用できます。

  • ISSUBTOTAL の前に、該当する name 列を指定する必要があります。

次の例では、特定の SUMMARIZE() 関数呼び出し内のそれぞれの ROLLUP() 列に対して、ISSUBTOTAL() 列を生成します。

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])
)

次の表は、テーブルを引数として受け取る関数にこのデータを渡すとどのように表示されるかを示したものです。

[Is Sub Total for DateTimeCalendarYear]

[Is Sub Total for ProductCategoryName]

DateTime[CalendarYear]

ProductCategory[ProductCategoryName]

[Sales Amount (USD)]

[Discount Amount (USD)]

FALSE

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