相关文章推荐
火星上的金针菇  ·  How to show tooltip ...·  4 月前    · 
开朗的领带  ·  c++ - Visual Studio ...·  1 年前    · 
狂野的日光灯  ·  android平台下OpenGL ES ...·  1 年前    · 

このブラウザーはサポートされなくなりました。

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 関数と同様に、ROLLUPGROUPROLLUPADDISSUBTOTAL と共に使用して、含めるサマリー グループまたは粒度 (小計) を指定して、返される小計行の数を減らすことができます。 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
  •