Udostępnij za pośrednictwem


Funkcja USERELATIONSHIP (język DAX)

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

Składnia

USERELATIONSHIP(<columnName1>,<columnName2>)

Parametry

  • columnName1
    Nazwa istniejącej kolumny (zgodna ze standardową składnią języka DAX i w pełni kwalifikowana) zazwyczaj reprezentująca stronę „wiele” w relacji, która ma być używana. Jeśli argumenty zostaną podane w odwrotnej kolejności, funkcja zamieni je przed użyciem. Ten argument nie może być wyrażeniem.

  • columnName2
    Nazwa istniejącej kolumny (zgodna ze standardową składnią języka DAX i w pełni kwalifikowana) zazwyczaj reprezentująca stronę „jednego” w relacji, która ma być używana. Jeśli argumenty zostaną podane w odwrotnej kolejności, funkcja zamieni je przed użyciem. Ten argument nie może być wyrażeniem.

Wartość zwracana

Ta funkcja nie zwraca wartości, ponieważ jedynym efektem jej użycia jest włączenie wskazanej relacji na czas wykonywania obliczeń.

Uwagi

  1. Funkcji USERELATIONSHIP można używać tylko w funkcjach przyjmujących filtr jako argument, na przykład CALCULATE, CALCULATETABLE, CLOSINGBALANCEMONTH, CLOSINGBALANCEQUARTER, CLOSINGBALANCEYEAR, OPENINGBALANCEMONTH, OPENINGBALANCEQUARTER, OPENINGBALANCEYEAR, TOTALMTD, TOTALQTD i TOTALYTD.

  2. Funkcja USERELATIONSHIP używa relacji istniejących w modelu, identyfikując relacje za pomocą kolumn punktu końcowego.

  3. W funkcji USERELATIONSHIP stan relacji jest nieważny, a więc to, czy relacja jest aktywna, czy nie, nie ma wpływu na użycie funkcji. Nawet jeśli relacja jest nieaktywna, będzie używana i będzie zastępować dowolne inne aktywne relacje, które mogą występować w modelu, ale nie zostały wymienione wśród argumentów funkcji.

  4. Jeśli dowolna z kolumn określona jako argument nie jest częścią relacji lub argumenty należą do różnych relacji, jest zwracany błąd.

  5. Jeśli do połączenia tabel A i B w obliczeniach jest wymagane użycie wielu relacji, każdą z nich należy wskazać w osobnej funkcji USERELATIONSHIP.

  6. Jeśli wyrażenia, w których jest używana funkcja CALCULATE, są zagnieżdżone i co najmniej dwa z nich zawierają funkcję USERELATIONSHIP, w przypadku konfliktu lub niejednoznaczności jest zachowywana najbardziej wewnętrzna funkcja USERELATIONSHIP.

  7. Można zagnieździć maksymalnie 10 funkcji USERELATIONSHIP, ale używane wyrażenie może mieć głębszy poziom zagnieżdżania, na przykład następujące przykładowe wyrażenie ma 3 poziomy zagnieżdżenia, ale tylko dwa z nich dotyczą funkcji USEREALTIONSHIP: =CALCULATE(CALCULATE( CALCULATE( <dowolne_wyrażenie>, USERELATIONSHIP( t1[colA], t2[colB])), t99[colZ]=999), USERELATIONSHIP( t1[colA], t2[colA])).

Przykład

W poniższym przykładzie pokazano sposób zastępowania domyślnej aktywnej relacji między tabelami InternetSales i DateTime. Istnieje domyślna relacja między kolumną OrderDate w tabeli InternetSales oraz kolumną Date w tabeli DateTime.

Aby obliczyć sumę sprzedaży internetowej i umożliwić fragmentowanie wg kolumny ShippingDate, a nie według kolumny OrderDate, należy utworzyć miarę [InternetSales wg ShippingDate], używając następującego wyrażenia:

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

W programie PowerPivot: przeciągnij nową miarę do obszaru Wartości w prawym okienku, przeciągnij kolumnę InternetSales[ShippingDate] do obszaru Etykiety wierszy; teraz dane dotyczące sprzedaży internetowej są fragmentowane według dat wysyłki, a nie według dat zamówienia, co zazwyczaj jest pokazywane w przykładach.

Aby ten przykład działał, musi istnieć relacja między kolumnami InternetSales[ShipmentDate] i DateTime[Date] i nie może być ona relacją aktywną, a ponadto musi istnieć relacja między kolumnami InternetSales[OrderDate] i DateTime[Date] i musi być ona relacją aktywną.