このブラウザーはサポートされなくなりました。
Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。
Microsoft Edge をダウンロードする
Internet Explorer と Microsoft Edge の詳細情報
グループのセットに対するサマリー テーブルを返します。
SUMMARIZECOLUMNS( <groupBy_columnName> [, < groupBy_columnName >]…, [<filterTable>]…[, <name>, <expression>]…)
パラメーター
groupBy_columnName
返されるテーブルに個別の値が含まれるベース テーブルへの完全修飾列参照 (Table [Column])。 各 groupBy_columnName 列は、その後に指定される列とクロス結合 (異なるテーブル) または auto-exist (同じテーブル) されます。
filterTable
groupBy_columnName の引数として指定されたすべての列のフィルター コンテキストに追加されるテーブル式。 フィルター テーブルに存在する値は、クロス結合/auto-exist を行う前にフィルター処理するために使用されます。
指定した後続の式に使用する列名を表す文字列。
expression
単一の値 (テーブルではなく) を返す任意の DAX 式。
指定したグループに基づいて、指定された列の値の組み合わせを含むテーブル。 返されるテーブルには、指定された式のうち少なくとも 1 つが空白以外の値を返す行だけが含まれます。 行のすべての式が空白または NULL に評価される場合、その行は返されるテーブルには含まれません。
この関数では、結果の並べ替え順序は保証されません。
groupBy_columnName パラメーターでは、1 つの列を複数回指定することはできません。 たとえば、次の式は無効です。
SUMMARIZECOLUMNS( Sales[StoreId], Sales[StoreId] )
この関数は、計算列または行レベルのセキュリティ (RLS) ルールで使用される場合、DirectQuery モードでの使用はサポートされません。
フィルター コンテキスト
次のようなクエリについて考えます。
SUMMARIZECOLUMNS (
'Sales Territory'[Category],
FILTER('Customer', 'Customer' [First Name] = "Alicia")
このクエリでは、メジャーを使用しない場合、groupBy 列には FILTER 式 (たとえば、Customer テーブル) の列が含まれません。 このフィルターは、groupBy 列には適用されません。 Sales Territory および Customer テーブルは、Reseller の売上ファクト テーブルを通じて間接的に関連付けられている場合があります。 これらは直接関連付けられているわけではないため、フィルター式は no-op であり、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
TotalQty
BlankIfTotalQtyIsNot3
Sales[CustomerId], "Blank",
IGNORE( Blank() ), "BlankIfTotalQtyIsNot5",
IGNORE( IF( SUM( Sales[Qty] )=5, 5 ) )
どちらの式も、一部の行に対して空白が返される場合でも、空白を返す無視されない式が存在しないため、含まれています。
CustomerId
TotalQty
BlankIfTotalQtyIsNot3
NONVISUAL を使用する場合
NONVISUAL 関数を使用して、SUMMARIZECOLUMNS 関数の値フィルターを、メジャー値に影響を与えず、groupBy 列にのみ適用するものとしてマークします。 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]
これに対し、同じクエリで 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] が 2 つの選択した年の合計となる結果が返されます。
DimDate[CalendarYear]
[Sales]
[Visual Total Sales]
ROLLUPADDISSUBTOTAL を使用した場合
ROLLUPADDISSUBTOTAL 構文を追加すると、groupBy_columnName 列に基づいて、ロールアップまたは小計行を結果に追加することで、SUMMARIZECOLUMNS 関数の動作を変更できます。 ROLLUPADDISSUBTOTAL は SUMMARIZECOLUMNS 式内でのみ使用できます。
小計が 1 つの例
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
Total Qty
小計が複数の例
SUMMARIZECOUMNS (
Regions[State], ROLLUPADDISSUBTOTAL ( Sales[CustomerId], "IsCustomerSubtotal" ),
ROLLUPADDISSUBTOTAL ( Sales[Date], "IsDateSubtotal"), "Total Qty", SUM( Sales[Qty] )
売上は、州別、顧客別、日付別にグループ化され、小計は 1 つになります。 州別、日付別の売上 2。 州別、顧客別の売上 3。 顧客と日付の両方でロールアップされ、州別の売上につながります。
次のテーブルが返されます。
CustomerID
IsCustomerSubtotal
State
Total Qty
IsDateSubtotal
ROLLUPGROUP を使用する場合
SUMMARIZE 関数と同様に、ROLLUPGROUP を ROLLUPADDISSUBTOTAL と共に使用して、含めるサマリー グループまたは粒度 (小計) を指定して、返される小計行の数を減らすことができます。 ROLLUPGROUP は、SUMMARIZECOLUMNS または SUMMARIZE 式内でのみ使用できます。
小計が複数の例
SUMMARIZECOLUMNS(
ROLLUPADDISSUBTOTAL( Sales[CustomerId], "IsCustomerSubtotal" ),
ROLLUPADDISSUBTOTAL(ROLLUPGROUP(Regions[City], Regions[State]), "IsCityStateSubtotal"),"Total Qty", SUM( Sales[Qty] )
まだ都市および州別にグループ化されていますが、小計を報告するときにまとめてロールされ、次のテーブルが返されます。
State
CustomerId
IsCustomerSubtotal
Total Qty
IsCityStateSubtotal