USERELATIONSHIP
columnName1 と columnName2 の間に存在するリレーションシップとして、特定の計算で使用するリレーションシップ and 指定します。
構文
USERELATIONSHIP(<columnName1>,<columnName2>)
パラメーター
用語 | 定義 |
---|---|
columnName1 |
標準の DAX 構文 and 完全修飾を使用する既存の列の名前。これは通常、使用するリレーションシップの多くの側面を表します。if 引数は、使用する前に関数が入れ替える逆の順序で指定されます。 この引数を式にすることはできません。 |
columnName2 |
標準の DAX 構文 and 完全修飾を使用する既存の列の名前。通常は、使用するリレーションシップの一方 or 参照側を表します。if 引数は、使用する前に関数が入れ替える逆の順序で指定されます。 この引数を式にすることはできません。 |
value を返す
この関数は valueを返しません。この関数では、計算の duration に対して指定されたリレーションシップのみが有効になります。
解説
USERELATIONSHIP は、引数として filter を受け取る関数でのみ使用できます。たとえば、CALCULATE、CALCULATETABLE、CLOSINGBALANCEMONTH、CLOSINGBALANCEQUARTER、CLOSINGBALANCEYEAR、OPENINGBALANCEMONTH、OPENINGBALANCEQUARTER、OPENINGBALANCEYEAR、TOTALMTD、TOTALQTDandTOTALYTD 関数などです。
measure が含まれるテーブルに対して行レベルのセキュリティが定義されている場合、USERELATIONSHIP は使用できません。 たとえば、DimCustomer に対して定義 errorif 行レベルのセキュリティが定義されている
CALCULATE(SUM([SalesAmount]), USERELATIONSHIP(FactInternetSales[CustomerKey], DimCustomer[CustomerKey]))
が返されます。USERELATIONSHIP では、モデル内の既存のリレーションシップが使用され、終了ポイント列によってリレーションシップが識別されます。
USERELATIONSHIPでは、リレーションシップの状態 not 重要です。つまり、リレーションシップがアクティブ ornot かどうか not 関数の使用に影響します。 リレーションシップが非アクティブである Evenif は、モデル内に存在する可能性があるが、関数引数に記載されている他のアクティブなリレーションシップ not オーバーライド and 使用されます。
引数として指定された列がリレーションシップの一部 notif、引数が異なるリレーションシップに属 orerror が返されます。
計算でテーブル A とテーブル B を結合するために複数のリレーションシップが必要な If は、各リレーションシップを異なる USERELATIONSHIP 関数で示す必要があります。
If CALCULATE 式が入れ子になっている場合、USERELATIONSHIP 関数 contains 複数の CALCULATE 式 and、最も内側の USERELATIONSHIP は、競合 or あいまいさの場合に優先されます。
最大 10 個の USERELATIONSHIP 関数を入れ子にすることができます。ただし、式の入れ子のレベルが深くなる場合があります。次の sample 式は、3 レベル深く入れ子になっていますが、USERELATIONSHIPの場合は 2 つのみです:
=CALCULATE(CALCULATE( CALCULATE( <anyExpression>, USERELATIONSHIP( t1[colA], t2[colB])), t99[colZ]=999), USERELATIONSHIP( t1[colA], t2[colA]))
。1 対 1 のリレーションシップの場合、USERELATIONSHIP はリレーションシップを一方向にのみアクティブ化します。 特に、
は、 columnName2 's テーブルから 's テーブル' の columnName1にフローすることしかできません。 双方向のクロスフィルタリングが必要な If、逆方向の 2 つの USERELATIONSHIP を同じ計算で使用できます。 たとえば、「 CALCULATE(..., USERELATIONSHIP(T1[K], T2[K]), USERELATIONSHIP(T2[K], T1[K]))
」のように入力します。
例
次の sample は、InternetSales and DateTime テーブル間の既定のアクティブなリレーションシップをオーバーライドする方法を示しています。 既定のリレーションシップは、InternetSales テーブルの OrderDate 列 and DateTime テーブルの Date 列の間に存在します。
従来の OrderDate ではなく ShippingDate によるスライスを許可 and インターネット販売の sum を calculate するには、次の式を使用して measure、[ InternetSales by ShippingDate] を作成します。
= CALCULATE(SUM(InternetSales[SalesAmount]), USERELATIONSHIP(InternetSales[ShippingDate], DateTime[Date]))
InternetSales[ShipmentDate] and DateTime[Date] 間のリレーションシップが存在 and、アクティブなリレーションシップ not 必要があります。また、InternetSales[OrderDate] and DateTime[Date] 間のリレーションシップが存在 and、アクティブなリレーションシップである必要があります。