USERELATIONSHIP
Dotyczy: Obliczanie kolumny obliczeniowej tabeli Obliczeniowej Obliczenie wizualizacji
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
Termin | 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ą.