USERELATIONSHIP
Dotyczy:kolumna obliczeniowatabela obliczeniowaMiarawizualizacji
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 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. |
columnName2 |
Nazwa istniejącej kolumny przy użyciu standardowej składni 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
USERELATIONSHIP można używać tylko w funkcjach, które przyjmują filtr jako argument, na przykład: CALCULATE, CALCULATETABLE, CLOSINGBALANCEMONTH, CLOSINGBALANCEQUARTER, CLOSINGBALANCEYEAR, OPENINGBALANCEMONTH, OPENINGBALANCEQUARTER, OPENINGBALANCEYEAR, TOTALMTD, TOTALQTD i TOTALYTD.
USERELATIONSHIP nie można użyć, gdy zabezpieczenia na poziomie wiersza są definiowane dla tabeli, w której jest uwzględniona miara. Na przykład
CALCULATE(SUM([SalesAmount]), USERELATIONSHIP(FactInternetSales[CustomerKey], DimCustomer[CustomerKey]))
zwróci błąd, jeśli zabezpieczenia na poziomie wiersza są zdefiniowane dla dimCustomer.USERELATIONSHIP używa istniejących relacji w modelu, identyfikując relacje według kolumn punktu końcowego.
W USERELATIONSHIPstan 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 USERELATIONSHIP jest taka, która zwycięża w przypadku konfliktu lub niejednoznaczności.
Można zagnieżdżać maksymalnie 10 USERELATIONSHIP funkcji; Jednak wyrażenie może mieć głębszy poziom zagnieżdżania, tj. Następujące przykładowe wyrażenie jest zagnieżdżone o 3 poziomy głębokości, ale tylko 2 dla 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 USERELATIONSHIP aktywuje relację tylko w jednym kierunku. W szczególności filtry będą mogły przepływać tylko z tabeli columnName2do columnName1tabeli. 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ą.