Udostępnij za pośrednictwem


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ą.