Udostępnij za pośrednictwem


USERELATIONSHIP

Dotyczy:kolumna obliczeniowatabela obliczeniowaMeasureobliczenia wizualne

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

Składnia

USERELATIONSHIP(<columnName1>,<columnName2>)

Parametry

Termin Definicja
columnName1 Nazwa istniejącej kolumny przy użyciu standardowej składni DAXand w pełni kwalifikowana, która zwykle reprezentuje wiele stron relacji do użycia; if 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 DAXand w pełni kwalifikowana, która zwykle reprezentuje jedną stronę or stronie odnośnika relacji do użycia; if argumenty są podane w odwrotnej kolejności, funkcja zamieni je przed ich użyciem. Ten argument nie może być wyrażeniem.

Zwracanie value

Funkcja nie zwraca value; funkcja włącza tylko wskazaną relację dla duration obliczenia.

Uwagi

  • USERELATIONSHIP można używać tylko w funkcjach, które przyjmują filter jako argument, na przykład: CALCULATE, CALCULATETABLE, CLOSINGBALANCEMONTH, CLOSINGBALANCEQUARTER, CLOSINGBALANCEYEAR, OPENINGBALANCEMONTH, OPENINGBALANCEQUARTER, OPENINGBALANCEYEAR, TOTALMTD, funkcje TOTALQTDandTOTALYTD.

  • USERELATIONSHIP nie można użyć, gdy zabezpieczenia na poziomie wiersza są zdefiniowane dla tabeli, w której znajduje się measure. Na przykład CALCULATE(SUM([SalesAmount]), USERELATIONSHIP(FactInternetSales[CustomerKey], DimCustomer[CustomerKey])) zwróci zabezpieczenia na poziomie wiersza errorif są zdefiniowane dla elementu DimCustomer.

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

  • W USERELATIONSHIPstan relacji jest not ważny; oznacza to, czy relacja jest aktywna ornotnot wpływa na użycie funkcji. Even if relacja jest nieaktywna, zostanie użyta and zastąpi wszelkie inne aktywne relacje, które mogą być obecne w modelu, ale not wymienione w argumentach funkcji.

  • Zwracana jest errorif dowolną kolumnę o nazwie jako argument jest not częścią relacji or argumenty należą do różnych relacji.

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

  • If CALCULATE wyrażenia są zagnieżdżone, and więcej niż jedno wyrażenie CALCULATEcontains funkcji USERELATIONSHIP, a następnie najbardziej wewnętrzna USERELATIONSHIP jest tym, który zwycięża w przypadku konfliktu or 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 wyrażenie sample jest zagnieżdżone na 3 poziomach 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 filters będzie mógł przepływać tylko z tabeli columnName2do columnName1tabeli. If dwukierunkowe filtrowanie krzyżowe jest pożądane, w tym samym obliczeniu można użyć dwóch elementów USERELATIONSHIPs z przeciwległą kierunkowością. Na przykład CALCULATE(..., USERELATIONSHIP(T1[K], T2[K]), USERELATIONSHIP(T2[K], T1[K])).

Przykład

Poniższy sample pokazuje, jak zastąpić domyślną, aktywną relację między tabelami InternetSales and DateTime. Relacja domyślna istnieje między kolumną OrderDate w tabeli InternetSales and kolumnie Date w tabeli DateTime.

Aby calculatesum sprzedaży internetowej and zezwalać na fragmentowanie według wartości ShippingDate zamiast tradycyjnej wartości OrderDate, utwórz measure, [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] and DateTime[Date] muszą istnieć and powinny not być aktywną relacją; Ponadto relacja między tabelami InternetSales[OrderDate] and DateTime[Date] powinna istnieć and powinna być aktywna relacja.