USERELATIONSHIP

Określa relację, która ma być używana w określonym obliczeniu jako relacja, która istnieje między columnName1 i columnName2.

Składnia

USERELATIONSHIP(<columnName1>,<columnName2>)  

Parametry

Okres Definicja
columnName1 Nazwa istniejącej kolumny przy użyciu standardowej składni języka DAX i w pełni kwalifikowana, która zwykle reprezentuje wiele stron relacji do użycia; jeśli argumenty są podane w odwrotnej kolejności, funkcja zamieni je przed ich użyciem. Ten argument nie może być wyrażeniem.
nazwa_kolumny2 Nazwa istniejącej kolumny przy użyciu standardowej składni języka DAX i w pełni kwalifikowana, która zwykle reprezentuje jedną stronę lub stronę odnośnika relacji do użycia; jeśli argumenty są podane w odwrotnej kolejności, funkcja zamieni je przed ich użyciem. Ten argument nie może być wyrażeniem.

Wartość zwracana

Funkcja nie zwraca żadnej wartości; funkcja włącza tylko wskazaną relację przez czas trwania obliczenia.

Uwagi

  • FUNKCJA USERELATIONSHIP może być używana tylko w funkcjach, które przyjmują filtr jako argument, na przykład: CALCULATE, CALCULATETABLE, CLOSINGBALANCEMONTH, CLOSINGBALANCEQUARTER, CLOSINGBALANCEYEAR, OPENINGBALANCEMONTH, OPENINGBALANCEQUARTER, OPENINGBALANCEYEAR, TOTALMTD, TOTALQTD i TOTALYTD.

  • Funkcji USERELATIONSHIP nie można używać, gdy zabezpieczenia na poziomie wiersza są definiowane dla tabeli, w której jest uwzględniona miara. Na przykład zwraca błąd, CALCULATE(SUM([SalesAmount]), USERELATIONSHIP(FactInternetSales[CustomerKey], DimCustomer[CustomerKey])) jeśli zabezpieczenia na poziomie wiersza są zdefiniowane dla dimCustomer.

  • FUNKCJA USERELATIONSHIP używa istniejących relacji w modelu, identyfikując relacje według kolumn punktu końcowego.

  • W funkcji USERELATIONSHIP stan relacji nie jest ważny; oznacza to, czy relacja jest aktywna, czy nie ma wpływu na użycie funkcji. Nawet jeśli relacja jest nieaktywna, zostanie użyta i zastąpi wszystkie inne aktywne relacje, które mogą być obecne w modelu, ale nie zostaną wymienione w argumentach funkcji.

  • Zwracany jest błąd, jeśli którakolwiek z kolumn o nazwie jako argument nie jest częścią relacji lub argumenty należą do różnych relacji.

  • Jeśli do łączenia tabeli A z tabelą B w obliczeniach jest potrzebnych wiele relacji, każda relacja musi być wskazana w innej funkcji USERELATIONSHIP.

  • Jeśli wyrażenia CALCULATE są zagnieżdżone, a więcej niż jedno wyrażenie CALCULATE zawiera funkcję USERELATIONSHIP, to najbardziej wewnętrzna funkcja USERELATIONSHIP jest taka, która zwycięży w przypadku konfliktu lub niejednoznaczności.

  • Można zagnieżdżać maksymalnie 10 funkcji USERELATIONSHIP; Jednak wyrażenie może mieć głębszy poziom zagnieżdżania, tj. Następujące przykładowe wyrażenie jest zagnieżdżone na 3 poziomach głębokości, ale tylko 2 dla parametru USERELATIONSHIP: =CALCULATE(CALCULATE( CALCULATE( <anyExpression>, USERELATIONSHIP( t1[colA], t2[colB])), t99[colZ]=999), USERELATIONSHIP( t1[colA], t2[colA])).

  • W przypadku relacji od 1 do 1 funkcja USERELATIONSHIP aktywuje relację tylko w jednym kierunku. W szczególności filtry będą mogły przepływać tylko z tabeli columnName2 do tabeli columnName1. Jeśli wymagane jest dwukierunkowe filtrowanie krzyżowe, w tym samym obliczeniu można użyć dwóch parametrów USERELATIONSHIPs z przeciwną kierunkowością. Na przykład CALCULATE(..., USERELATIONSHIP(T1[K], T2[K]), USERELATIONSHIP(T2[K], T1[K])).

Przykład

W poniższym przykładzie pokazano, jak zastąpić domyślną, aktywną relację między tabelami InternetSales i DateTime. Relacja domyślna istnieje między kolumną OrderDate w tabeli InternetSales i kolumną Date w tabeli DateTime.

Aby obliczyć sumę sprzedaży internetowej i zezwolić na fragmentowanie według wartości ShippingDate zamiast tradycyjnej kolumny OrderDate, utwórz miarę [InternetSales by ShippingDate] przy użyciu następującego wyrażenia:

= CALCULATE(SUM(InternetSales[SalesAmount]), USERELATIONSHIP(InternetSales[ShippingDate], DateTime[Date]))  

Relacje między InternetSales[ShipmentDate] i DateTime[Date] muszą istnieć i nie powinny być aktywną relacją; Ponadto relacja między tabelami InternetSales[OrderDate] i DateTime[Date] powinna istnieć i powinna być aktywną relacją.