ALLEXCEPT 関数
指定された列に適用されているフィルター以外の、テーブル内のすべてのコンテキスト フィルターを除去します。
構文
ALLEXCEPT(<table>,<column>[,<column>[,…]])
パラメーター
項目 |
定義 |
---|---|
table |
後続の引数で指定された列に対するフィルター以外の、すべてのコンテキスト フィルターを除去する対象のテーブル。 |
column |
コンテキスト フィルターを保持する必要がある列。 |
ALLEXCEPT 関数の 1 つ目の引数は、基になるテーブルへの参照である必要があります。後続の引数はすべて、基になる列への参照である必要があります。 ALLEXCEPT 関数で、テーブル式または列の式を使用することはできません。
戻り値
指定された列のフィルター以外の、すべてのフィルターが削除されたテーブル。
説明
この関数は、単独では使用されず、中間関数として機能し、他の計算を実行して得られる結果セットを変更するために使用できます。
次の表に示されているように、ALL 関数および ALLEXCEPT 関数はさまざまなシナリオで使用できます。
関数および使用法 |
説明 |
---|---|
ALL(Table) |
指定されたテーブルからすべてのフィルターを除去します。 つまり、ALL(Table) はコンテキストからすべてのフィルターを除去し、テーブル内のすべての値を返します。このフィルターは、ALL(Table) が使用されない場合には適用されるものです。 この関数は、多数のレベルでグループ化を実行していて、合計値に対する集計値の比率を求める計算を作成する場合に役立ちます。 |
ALL (Column[, Column[, …]]) |
テーブル内の指定された列からすべてのフィルターを除去します。テーブル内の他の列にある他のすべてのフィルターはそのまま適用されます。 列引数はすべて、同じテーブルのものである必要があります。 ALL(Column) は、1 つ以上の特定の列のコンテキスト フィルターを除去し、他のすべてのコンテキスト フィルターを保持する場合に便利です。 |
ALLEXCEPT(Table, Column1 [,Column2]...) |
指定された列に適用されているフィルター以外の、テーブル内のすべてのコンテキスト フィルターを除去します。 これは、テーブル内の (すべてではなく) 多数の列からフィルターを除去する場合に便利な方法です。 |
使用例
次の例では、メジャー内で使用できる数式を示します。 メジャーの作成方法の詳細については、「ピボットテーブルまたはピボットグラフのメジャーの作成」を参照してください。
この数式では、SalesAmount_USD の合計を計算し、ALLEXCEPT 関数を使用して、DateTime テーブルのすべてのコンテキスト フィルターを除去します。ただし、CalendarYear 列に適用されているフィルターは対象外です。
注 |
---|
この例では、DAX サンプル ブックに含まれている ResellerSales_USD テーブルおよび DateTime テーブルを使用しています。 サンプルの詳細については、を参照してください。 |
=CALCULATE(SUM(ResellerSales_USD[SalesAmount_USD]), ALLEXCEPT(DateTime, DateTime[CalendarYear]))
この数式では ALLEXCEPT が使用されているため、テーブル DateTime の CalendarYear 以外の列がピボットテーブルのスライスに使用されていると、スライサー フィルターがすべて除去されます。このため、表 1 に示すように、列ラベル値に対応する SalesAmount_USD の合計に等しい値が示されます。
ただし、ピボットテーブルのスライスに列 CalendarYear が使用されていると、結果は異なります。 CalendarYear が ALLEXCEPT の引数として指定されているため、年に基づいてデータがスライスされている場合、表 2 に示すように、行レベルで年に対してフィルターが適用されます。 これらの表を比較して、ALLEXCEPT() の動作を理解してください。