次の方法で共有


CALCULATETABLE

適用対象: 計算列計算テーブルメジャービジュアル計算

変更されたフィルター コンテキストでテーブル式を評価します。

手記

CALCULATE 関数もあります。 まったく同じ機能を実行しますが、スカラー値を返す式に適用 フィルター コンテキスト変更します。

構文

CALCULATETABLE(<expression>[, <filter1> [, <filter2> [, …]]])

パラメーター

用語 定義
expression 評価するテーブル式。
filter1, filter2,… (省略可能)フィルターを定義するブール式またはテーブル式、またはフィルター修飾子関数。

最初のパラメーターとして使用される式は、モデル テーブルまたはテーブルを返す関数である必要があります。

フィルターは次のようになります。

  • ブール型フィルター式
  • テーブル フィルター式
  • フィルター変更関数

複数のフィルターがある場合は、AND論理演算子を使用して評価されます。 つまり、すべての条件を同時に TRUE する必要があります。

ブール型フィルター式

ブール式フィルターは、TRUE または FALSEに評価される式です。 次の規則に従う必要があります。

  • 参照できる列は 1 つだけです。
  • メジャーを参照することはできません。
  • 入れ子になった CALCULATE 関数を使用することはできません。

Power BI Desktop の 2021 年 9 月リリース以降は、次も適用されます。

  • 集計関数に引数として渡されない限り、テーブルをスキャンまたは返す関数は使用できません。
  • スカラー値を返す集計関数 含めることができる

テーブル フィルター式

テーブル式フィルターは、テーブル オブジェクトをフィルターとして適用します。 これはモデル テーブルへの参照である可能性がありますが、テーブル オブジェクトを返す関数である可能性が高くなります。 FILTER 関数を使用して、ブール型フィルター式で定義できない条件を含む複雑なフィルター条件を適用できます。

フィルター修飾子関数

フィルター修飾子関数を使用すると、単にフィルターを追加する以上のことを行うことができます。 フィルター コンテキストを変更するときに、追加の制御が提供されます。

機能 目的
REMOVEFILTERS 1 つのテーブルの 1 つ以上の列、または 1 つのテーブルのすべての列から、すべてのフィルターまたはフィルターを削除します。
ALL 1, ALLEXCEPT, ALLNOBLANKROW 1 つ以上の列から、または 1 つのテーブルのすべての列からフィルターを削除します。
KEEPFILTERS 同じ列の既存のフィルターを削除せずにフィルターを追加します。
USERELATIONSHIP 関連する列間に非アクティブなリレーションシップを適用します。その場合、アクティブなリレーションシップは自動的に非アクティブになります。
CROSSFILTER フィルターの方向 (両方から単一、または単一から両方へ) を変更するか、リレーションシップを無効にします。

1ALL 関数とそのバリアントは、フィルター修飾子とテーブル オブジェクトを返す関数の両方として動作します。 REMOVEFILTERS 関数がツールでサポートされている場合は、フィルターを削除するために使用することをお勧めします。

戻り値

値のテーブル。

備考

  • フィルター式を指定すると、CALCULATETABLE 関数は、式を評価するためにフィルター コンテキストを変更します。 フィルター式ごとに、フィルター式が KEEPFILTERS 関数でラップされていない場合、2 つの標準結果が考えられます。

    • 列 (またはテーブル) がフィルター コンテキストにない場合は、新しいフィルターがフィルター コンテキストに追加され、式が評価されます。
    • 列 (またはテーブル) が既にフィルター コンテキストにある場合、既存のフィルターは新しいフィルターによって上書きされ、CALCULATETABLE 式が評価されます。
  • この関数は、計算列または行レベル セキュリティ (RLS) 規則で使用する場合、DirectQuery モードでは使用できません。

次の例では、CALCULATETABLE 関数を使用して、2006 年のインターネット売上の合計を取得します。 この値は、2006 年のすべての売上と比較したインターネット売上の比率を計算するために後で使用されます。

次の数式:

= SUMX(
    CALCULATETABLE(
        'InternetSales_USD',
        'DateTime'[CalendarYear] = 2006
    ),
    [SalesAmount_USD]
)

結果は次の表のようになります。

行ラベル インターネット SalesAmount_USD CalculateTable 2006 Internet Sales 2006年のインターネット販売比率
2005 $2,627,031.40 $5,681,440.58 0.46
2006 $5,681,440.58 $5,681,440.58 1.00
2007 $8,705,066.67 $5,681,440.58 1.53
2008 $9,041,288.80 $5,681,440.58 1.59
総計 $26,054,827.45 $5,681,440.58 4.59