次の方法で共有


CROSSFILTER

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

2 つの列の間に存在するリレーションシップの計算で使用するクロスフィルターの方向を指定します。

構文

CROSSFILTER(<columnName1>, <columnName2>, <direction>)

パラメーター

用語 定義
columnName1 標準の DAX 構文と完全修飾を使用する既存の列の名前。通常は、使用するリレーションシップの多くの側を表します。引数が逆の順序で指定されている場合、関数はそれらを使用する前にそれらをスワップします。 この引数を式にすることはできません。
columnName2 標準の DAX 構文と完全修飾を使用する既存の列の名前。通常は、使用するリレーションシップの一方または参照側を表します。引数が逆の順序で指定されている場合、関数はそれらを使用する前にそれらをスワップします。 この引数を式にすることはできません。
Direction 使用するクロスフィルターの方向。 次のいずれかである必要があります。

None - このリレーションシップに沿ってクロスフィルター処理は行われません。

Both - 両側のフィルターは、他方の側をフィルター処理します。

OneWay - リレーションシップの一方または参照側のフィルターは、もう一方の側をフィルター処理します。 このオプションは、一対一リレーションシップでは使用できません。 多対多リレーションシップでは、どちらの側が参照側であるかが不明であるため、このオプションを使用しないでください。代わりにOneWay_LeftFiltersRightまたはOneWay_RightFiltersLeftを使用してください。

OneWay_LeftFiltersRight - columnName1 側のフィルターは、columnName2の側をフィルター処理します。 このオプションは、一対一リレーションシップまたは多対一リレーションシップでは使用できません。

OneWay_RightFiltersLeft - columnName2 側のフィルターは、columnName1の側をフィルター処理します。 このオプションは、一対一リレーションシップまたは多対一リレーションシップでは使用できません。

戻り値

この関数は値を返しません。この関数は、クエリの期間中、指定されたリレーションシップのクロス フィルター処理の方向のみを設定します。

備考

  • 1 対 1 のリレーションシップの場合、一方と両方の方向に違いはありません。

  • CROSSFILTER は、フィルターを引数として受け取る関数 (CALCULATE、CALCULATETABLE、CLOSINGBALANCEMONTH、CLOSINGBALANCEQUARTER、CLOSINGBALANCEYEAR、OPENINGBALANCEMONTH、OPENINGBALANCEQUARTER、OPENINGBALANCEYEAR、TOTALMTD、TOTALQTD、TOTALYTD 関数など) でのみ使用できます。

  • CROSSFILTER では、モデル内の既存のリレーションシップが使用され、終了ポイント列によってリレーションシップが識別されます。

  • CROSSFILTERでは、リレーションシップのクロスフィルター設定は重要ではありません。つまり、リレーションシップが 1 つをフィルター処理するように設定されているか、モデルの双方向に設定されているかは、関数の使用には影響しません。 CROSSFILTER は、既存のクロスフィルター設定をオーバーライドします。

  • 引数として指定された列のいずれかがリレーションシップの一部ではない場合、または引数が異なるリレーションシップに属している場合は、エラーが返されます。

  • CALCULATE 式が入れ子で、複数の CALCULATE 式に CROSSFILTER 関数が含まれている場合、最も内側の CROSSFILTER が競合またはあいまいさの場合に優先されます。

  • この関数は、計算列または行レベル セキュリティ (RLS) 規則で使用する場合、DirectQuery モードでは使用できません。

次のモデル図では、DimProduct と DimDate の両方に FactInternetSales との一方向リレーションシップがあります。

CROSSFILTER_Examp_DiagView

既定では、年単位で販売された製品の数を取得することはできません。

CROSSFILTER_Examp_PivotTable1

年別の製品数を取得するには、次の 2 つの方法があります。

  • リレーションシップで双方向のクロスフィルター処理を有効にします。 これにより、これら 2 つのテーブル間のすべてのデータに対するフィルターの動作が変更されます。

  • CROSSFILTER 関数を使用して、このメジャーに対するリレーションシップの動作を変更します。

DAXを使用する場合は、CROSSFILTER 関数を使用して、リレーションシップによって定義された 2 つの列間のクロスフィルター方向の動作を変更できます。 この場合、DAX 式は次のようになります。

BiDi:= CALCULATE([Distinct Count of ProductKey], CROSSFILTER(FactInternetSales[ProductKey], DimProduct[ProductKey] , Both))

メジャー式で CROSSFILTER 関数を使用すると、期待される結果が得られます。

CROSSFILTER_Examp_PivotTable2