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 |