SUMMARIZECOLUMNS
グループのセットに対するサマリー テーブルを返します。
構文
SUMMARIZECOLUMNS( <groupBy_columnName> [, < groupBy_columnName >]…, [<filterTable>]…[, <name>, <expression>]…)
パラメーター
用語 | 定義 |
---|---|
groupBy_columnName | 返されるテーブルに個別の値が含まれるベース テーブルへの完全修飾列参照 (Table [Column])。 各 groupBy_columnName 列は、その後に指定される列とクロス結合 (異なるテーブル) または auto-exist (同じテーブル) されます。 |
filterTable | groupBy_columnName の引数として指定されたすべての列のフィルター コンテキストに追加されるテーブル式。 フィルター テーブルに存在する値は、クロス結合/auto-exist を行う前にフィルター処理するために使用されます。 |
name | 指定した後続の式に使用する列名を表す文字列。 |
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 | Total Qty | BlankIfTotalQtyIsNot3 |
---|---|---|
A | 5 | |
B | 3 | 3 |
C | 3 | 3 |
IGNORE を使用した場合、次のようになります。
CustomerId | Total Qty | BlankIfTotalQtyIsNot3 |
---|---|---|
B | 3 | 3 |
C | 3 | 3 |
すべての式が無視されます。
SUMMARIZECOLUMNS(
Sales[CustomerId], "Blank",
IGNORE( BLANK() ), "BlankIfTotalQtyIsNot5",
IGNORE( IF( SUM( Sales[Qty] )=5, 5 ) )
)
どちらの式も、一部の行に対して空白が返される場合でも、空白を返す無視されない式が存在しないため、含まれています。
CustomerId | 空白 | BlankIfTotalQtyIsNot5 |
---|---|---|
A | 5 | |
B | ||
C |
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] |
---|---|---|
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] が 2 つの選択した年の合計となる結果が返されます。
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 列に基づいて、ロールアップまたは小計行を結果に追加することで、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 |
---|---|---|---|---|
True | True | 60398 | ||
Accessories | False | True | 36092 | |
Accessories | バイク ラック | False | False | 328 |
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 | State | Total Qty | Date | IsDateSubtotal |
---|---|---|---|---|---|
A | false | WA | 5 | 2014/7/10 | |
B | false | WA | 1 | 2014/7/10 | |
B | false | WA | 2 | 2014/7/11 | |
C | false | OR | 2 | 2014/7/10 | |
C | false | OR | 1 | 2014/7/11 | |
true | WA | 6 | 2014/7/10 | ||
true | WA | 2 | 2014/7/11 | ||
true | OR | 2 | 2014/7/10 | ||
true | OR | 1 | 2014/7/11 | ||
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] )
)
まだ都市および州別にグループ化されていますが、小計を報告するときにまとめてロールされ、次のテーブルが返されます。
State | CustomerId | IsCustomerSubtotal | Total Qty | City | IsCityStateSubtotal |
---|---|---|---|---|---|
WA | A | false | 2 | ベルビュー | false |
WA | B | false | 2 | ベルビュー | false |
WA | A | false | 3 | レドモンド | false |
WA | B | false | 1 | レドモンド | false |
OR | C | false | 3 | Portland | false |
WA | true | 4 | ベルビュー | false | |
WA | true | 4 | レドモンド | 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 イシューを段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、以下を参照してください:フィードバックの送信と表示