次の方法で共有


CALCULATETABLE

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

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

手記

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

構文

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

パラメーター

用語 定義
expression 評価するテーブル式。
filter1, filter2,… (省略可能)ブール式 or、filters、orfilter 修飾子関数を定義するテーブル式です。

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

Filters は次のようになります。

  • ブール filter 式
  • テーブル filter 式
  • Filter 変更関数

複数の filtersがある場合は、AND論理演算子を使用して評価されます。 つまり、all 条件は、同じ timeで TRUE する必要があります。

ブール filter 式

ブール式 filter は、TRUEorFALSEに評価される式です。 次の規則に従う必要があります。

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

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

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

テーブル filter 式

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

Filter 修飾子関数

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

機能 目的
REMOVEFILTERS 1 つのテーブル or 1 つの列から orfiltersallfilters、or、1 つのテーブルの all 列から削除します。
ALL 1, ALLEXCEPT, ALLNOBLANKROW 1 つの列 or 複数の列から filters を削除 or、1 つのテーブルの all 列から削除します。
KEEPFILTERS 同じ列の既存の filters を削除せずに filter を追加します。
USERELATIONSHIP related 列間に非アクティブなリレーションシップを適用します。その場合、アクティブなリレーションシップは自動的に非アクティブになります。
CROSSFILTER リレーションシップ filter 無効に or 方向 (両方から単一、or の両方) を変更します。

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

value を返す

valuesのテーブル。

備考

  • filter 式を指定すると、CALCULATETABLE 関数は filter コンテキストを変更して式を evaluate します。 filter 式ごとに、filter 式が KEEPFILTERS 関数でラップ not 場合、次の 2 つの標準的な結果が得られます。

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

次の例では、CALCULATETABLE 関数を使用して、2006 年のインターネット販売の sum を取得します。 この value は、後に、year 2006 年の all 売上と比較したインターネット売上の比率を calculate するために使用されます。

次の数式:

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

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

行ラベル インターネット SalesAmount_USD CalculateTable 2006 インターネット販売 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