USERELATIONSHIP
Gilt für:Berechnete SpalteBerechnete TabelleMeasurevisuelle Berechnung
Gibt die Beziehung an, die in einer bestimmten Berechnung als das Verhältnis verwendet werden soll, das zwischen columnName1 und columnName2 vorhanden ist.
Syntax
USERELATIONSHIP(<columnName1>,<columnName2>)
Parameter
Begriff | Definition |
---|---|
columnName1 |
Der Name einer vorhandenen Spalte unter Verwendung der standardmäßigen DAX Syntax und vollqualifizierten, die in der Regel die n-Seite der zu verwendenden Beziehung darstellt; wenn die Argumente in umgekehrter Reihenfolge angegeben werden, tauschen sie die Funktion aus, bevor sie verwendet werden. Bei diesem Argument darf es sich nicht um einen Ausdruck handeln. |
columnName2 |
Der Name einer vorhandenen Spalte unter Verwendung von Standardsyntax DAX und vollqualifizierten, die in der Regel die eine Seite oder Nachschlageseite der zu verwendenden Beziehung darstellt; wenn die Argumente in umgekehrter Reihenfolge angegeben werden, tauschen sie die Funktion aus, bevor sie verwendet werden. Bei diesem Argument darf es sich nicht um einen Ausdruck handeln. |
Rückgabewert
Die Funktion gibt keinen Wert zurück; die Funktion aktiviert nur die angegebene Beziehung für die Dauer der Berechnung.
Bemerkungen
USERELATIONSHIP können nur in Funktionen verwendet werden, die einen Filter als Argument verwenden, z. B.: CALCULATE, CALCULATETABLE, CLOSINGBALANCEMONTH, CLOSINGBALANCEQUARTER, CLOSINGBALANCEYEAR, OPENINGBALANCEMONTH, OPENINGBALANCEQUARTER, OPENINGBALANCEYEAR, TOTALMTD, TOTALQTD und TOTALYTD Funktionen.
USERELATIONSHIP können nicht verwendet werden, wenn die Sicherheit auf Zeilenebene für die Tabelle definiert ist, in der das Measure enthalten ist. Beispielsweise gibt
CALCULATE(SUM([SalesAmount]), USERELATIONSHIP(FactInternetSales[CustomerKey], DimCustomer[CustomerKey]))
einen Fehler zurück, wenn die Sicherheit auf Zeilenebene für DimCustomer definiert ist.USERELATIONSHIP vorhandene Beziehungen im Modell verwendet, wobei Beziehungen anhand ihrer Endpunktspalten identifiziert werden.
In USERELATIONSHIPist der Status einer Beziehung nicht wichtig; d. h., ob die Beziehung aktiv ist oder nicht, wirkt sich nicht auf die Verwendung der Funktion aus. Selbst wenn die Beziehung inaktiv ist, wird sie verwendet und überschreibt alle anderen aktiven Beziehungen, die im Modell vorhanden sein können, aber nicht in den Funktionsargumenten erwähnt werden.
Es wird ein Fehler zurückgegeben, wenn eine der Spalten, die als Argument bezeichnet werden, nicht Teil einer Beziehung ist oder die Argumente zu unterschiedlichen Beziehungen gehören.
Wenn mehrere Beziehungen erforderlich sind, um Tabelle A mit Tabelle B in einer Berechnung zu verbinden, muss jede Beziehung in einer anderen USERELATIONSHIP Funktion angegeben werden.
Wenn CALCULATE Ausdrücke geschachtelt sind und mehr als ein CALCULATE Ausdruck eine USERELATIONSHIP Funktion enthält, ist die innerste USERELATIONSHIP die, die im Falle eines Konflikts oder einer Mehrdeutigkeit vorherrscht.
Bis zu 10 USERELATIONSHIP Funktionen können geschachtelt werden; Ihr Ausdruck hat jedoch möglicherweise eine tiefere Schachtelungsebene, also eine tiefere Ebene der Schachtelung. Der folgende Beispielausdruck ist 3 Ebenen tief geschachtelt, aber nur 2 für USERELATIONSHIP:
=CALCULATE(CALCULATE( CALCULATE( <anyExpression>, USERELATIONSHIP( t1[colA], t2[colB])), t99[colZ]=999), USERELATIONSHIP( t1[colA], t2[colA]))
.Bei 1:1-Beziehungen aktiviert USERELATIONSHIP nur die Beziehung in eine Richtung. Insbesondere können Filter nur von columnName2's Table to columnName1's table' fließen. Wenn bidirektionale Kreuzfilterung gewünscht wird, können zwei USERELATIONSHIPs mit entgegengesetzter Richtung in derselben Berechnung verwendet werden. Beispiel:
CALCULATE(..., USERELATIONSHIP(T1[K], T2[K]), USERELATIONSHIP(T2[K], T1[K]))
.
Beispiel
Das folgende Beispiel zeigt, wie die Standard-, Aktiv-, Beziehung zwischen InternetSales- und DateTime-Tabellen außer Kraft gesetzt wird. Die Standardbeziehung besteht zwischen der Spalte "OrderDate" in der Tabelle "InternetSales" und der Spalte "Datum" in der Tabelle "DateTime".
Um die Summe des Internetumsatzes zu berechnen und das Slicing nach Versanddatum anstelle des herkömmlichen OrderDate zuzulassen, erstellen Sie measure, [InternetSales by ShippingDate] mit dem folgenden Ausdruck:
= CALCULATE(SUM(InternetSales[SalesAmount]), USERELATIONSHIP(InternetSales[ShippingDate], DateTime[Date]))
Beziehungen zwischen InternetSales[ShipmentDate] und DateTime[Date] müssen vorhanden sein und sollten nicht die aktive Beziehung sein; Außerdem sollte die Beziehung zwischen InternetSales[OrderDate] und DateTime[Date] vorhanden sein und die aktive Beziehung sein.