USERELATIONSHIP
Gilt für:Berechnete SpalteBerechnete TabelleMeasureVisuelle Berechnung
Gibt die Beziehung an, die in einer bestimmten Berechnung wie der zwischen „columnName1“ und „columnName2“ verwendet werden soll.
Syntax
USERELATIONSHIP(<columnName1>,<columnName2>)
Parameter
Begriff | Definition |
---|---|
columnName1 | Der vollqualifizierte Name einer vorhandenen Spalte mit DAX-Standardsyntax, die in der Regel die n-Seite der zu verwendenden Beziehung darstellt. Argumente in umgekehrter Reihenfolge werden vor der Verwendung ausgetauscht. Bei diesem Argument darf es sich nicht um einen Ausdruck handeln. |
columnName2 | Der vollqualifizierte Name einer vorhandenen Spalte mit DAX-Standardsyntax, die in der Regel die 1-Seite oder Suchseite der zu verwendenden Beziehung darstellt. Argumente in umgekehrter Reihenfolge werden vor der Verwendung ausgetauscht. Bei diesem Argument darf es sich nicht um einen Ausdruck handeln. |
Rückgabewert
Die Funktion gibt keinen Wert zurück, und sie aktiviert die angegebene Beziehung nur für die Dauer der Berechnung.
Bemerkungen
USERELATIONSHIP kann nur in Funktionen verwendet werden, die einen Filter als Argument akzeptieren, z. B: CALCULATE, CALCULATETABLE, CLOSINGBALANCEMONTH, CLOSINGBALANCEQUARTER, CLOSINGBALANCEYEAR, OPENINGBALANCEMONTH, OPENINGBALANCEQUARTER, OPENINGBALANCEYEAR, TOTALMTD, TOTALQTD und TOTALYTD.
USERELATIONSHIP kann nicht verwendet werden, wenn Sicherheit auf Zeilenebene für die Tabelle definiert ist, in der das Measure enthalten ist.
CALCULATE(SUM([SalesAmount]), USERELATIONSHIP(FactInternetSales[CustomerKey], DimCustomer[CustomerKey]))
gibt beispielsweise einen Fehler zurück, wenn Sicherheit auf Zeilenebene für DimCustomer definiert ist.USERELATIONSHIP verwendet im Modell vorhandene Beziehungen und identifiziert sie nach deren Endpunktspalten.
In USERELATIONSHIP ist der Status einer Beziehung nicht wichtig, d. h. ob die Beziehung aktiv ist oder nicht, hat keinen Einfluss auf die Verwendung der Funktion. Die Beziehung wird also auch dann verwendet, wenn sie inaktiv ist, und überschreibt alle anderen aktiven Beziehungen, die im Modell vorhanden sein könnten, aber nicht in den Funktionsargumenten genannt werden.
Ist eine der als Argument benannten Spalten nicht in der Beziehung enthalten oder gehören die Argumente unterschiedlichen Beziehungen an, wird ein Fehler zurückgegeben.
Wenn mehrere Beziehungen benötigt werden, um Tabelle A mit Tabelle B in einer Berechnung zu verbinden, muss jede Beziehung in einer anderen USERATIONSHIP-Funktion angegeben werden.
Bei geschachtelten CALCULATE-Ausdrücken, von denen mehr als einer eine USERELATIONSHIP-Funktion enthält, gilt bei einem Konflikt oder bei Mehrdeutigkeit die innerste USERELATIONSHIP-Funktion.
Es können bis zu 10 USERELATIONSHIP-Funktionen verschachtelt werden. Ihr Ausdruck kann jedoch eine tiefere Verschachtelungsebene haben, d. h. der folgende Beispielausdruck ist drei Ebenen tief verschachtelt, aber nur zwei 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 die Beziehung nur in einer Richtung. Insbesondere können Filter nur von der Tabelle von columnName2 zur Tabelle von columnName1 verlaufen. Wenn eine 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 Sie die standardmäßige, aktive Beziehung zwischen InternetSales- und DateTime-Tabellen überschreiben können. Die Standardbeziehung besteht zwischen der Spalte „OrderDate“ in der InternetSales-Tabelle und der Spalte „Date“ in der DateTime-Tabelle.
Um die Summe der Internetverkäufe zu berechnen und die Aufteilung nach ShippingDate anstelle des herkömmlichen OrderDate zu ermöglichen, erstellen Sie ein Measure [InternetSales by ShippingDate] mit dem folgenden Ausdruck:
= CALCULATE(SUM(InternetSales[SalesAmount]), USERELATIONSHIP(InternetSales[ShippingDate], DateTime[Date]))
Die Beziehungen zwischen „InternetSales[ShipmentDate]“ und „DateTime[Date]“ müssen vorhanden sein und dürfen nicht die aktive Beziehung sein. Außerdem muss eine Beziehung zwischen „InternetSales[OrderDate]“ und „DateTime[Date]“ bestehen, und diese muss die aktive Beziehung sein.