USERELATIONSHIP 関数 (DAX)
特定の計算で使用するリレーションシップを、columnName1 と columnName2 の間に存在するリレーションシップとして指定します。
構文
USERELATIONSHIP(<columnName1>,<columnName2>)
パラメーター
columnName1
標準 DAX 構文を使用した既存の列の完全修飾名。これは通常、使用するリレーションシップの "多" の側を表します。引数を逆の順序で指定した場合は、関数で使用する前に引数が交換されます。 この引数に式を指定することはできません。columnName2
標準 DAX 構文を使用した既存の列の完全修飾名。これは通常、使用するリレーションシップの "一" の側または参照側を表します。引数を逆の順序で指定した場合は、関数で使用する前に引数が交換されます。 この引数に式を指定することはできません。
戻り値
この関数は、示されたリレーションシップを計算の間有効にするだけであり、値を返しません。
説明
USERELATIONSHIP は、CALCULATE、CALCULATETABLE、CLOSINGBALANCEMONTH、CLOSINGBALANCEQUARTER、CLOSINGBALANCEYEAR、OPENINGBALANCEMONTH、OPENINGBALANCEQUARTER、OPENINGBALANCEYEAR、TOTALMTD、TOTALQTD、および TOTALYTD 関数など、引数としてフィルターを取る関数のみに使用できます。
USERELATIONSHIP は、モデル内の既存のリレーションシップを使用し、リレーションシップを終点列によって識別します。
USERELATIONSHIP では、リレーションシップの状態は重要ではなく、リレーションシップがアクティブであるかどうかは関数の使用に影響しません。 リレーションシップが非アクティブの場合でも、モデルに存在するのに、関数の引数に記述されていない他のアクティブなリレーションシップが上書きされ、このリレーションシップが使用されます。
引数として指定されている列のいずれかがリレーションシップの一部でない場合、または引数が別のリレーションシップに属する場合は、エラーが返されます。
計算でテーブル A をテーブル B に結合するために複数のリレーションシップが必要な場合は、各リレーションシップを異なる USERELATIONSHIP 関数で示す必要があります。
CALCULATE 式が入れ子になっており、複数の CALCULATE 式に USERELATIONSHIP 関数が含まれている場合、競合またはあいまい性が生じたときには、最も内側の USERELATIONSHIP が優先されます。
USERELATIONSHIP 関数は最大 10 個を入れ子にすることができますが、式の入れ子レベルはそれよりも深い場合が考えられます。 たとえば、次のサンプル式は 3 レベルの入れ子になっていますが、USEREALTIONSHIP は 2 つのみです。=CALCULATE(CALCULATE( CALCULATE( <anyExpression>, USERELATIONSHIP( t1[colA], t2[colB])), t99[colZ]=999), USERELATIONSHIP( t1[colA], t2[colA]))。
使用例
次の例は、InternetSales および DateTime テーブル間の既定のアクティブなリレーションシップを上書きする方法を示しています。 既定のリレーションシップは、InternetSales テーブルの OrderDate 列と DateTime テーブルの Date 列の間に存在します。
インターネット販売の売上合計を計算し、従来の OrderDate ではなく ShippingDate によるスライスを有効にするには、次の式を使用して、メジャー [InternetSales by ShippingDate] を作成する必要があります。
=CALCULATE(SUM(InternetSales[SalesAmount]), USERELATIONSHIP(InternetSales[ShippingDate], DateTime[Date]))
PowerPivot で、新しいメジャーを右ペインの [値] 領域にドラッグし、InternetSales[ShippingDate] 列を [行ラベル] 領域にドラッグします。これで、例で通常示されているように、インターネット販売の売上が受注日ではなく出荷日によってスライスされます。
この例が機能するには、InternetSales[ShipmentDate] および DateTime[Date] 間のリレーションシップが存在しアクティブでないこと、また、InternetSales[OrderDate] および DateTime[Date] 間のリレーションシップが存在しアクティブであることが必要です。