Formułowanie relacji poprzez USERELATIONSHIP
Jeśli dwie tabele połączone są więcej niż jedną relacją to możemy decydować, której z nich użyć za pomocą funkcji USERELATIONSHIP. Jednocześnie może być aktywna tylko jedna z relacji pomiędzy dwoma tabelami. Przykładem będzie połączenie tabeli kalendarzowej (1) z tabelą sprzedaży zawierającą datę zafakturowania i datę dostawy (2a i 2b).
Pierwsza relacja 1 – 2a będzie aktywna, natomiast druga 1 – 2b nieaktywna. Jeśli zaczniemy używać w raporcie filtrów daty na tabeli kalendarzowej to tabela faktów zostanie przefiltrowana domyślnie aktywną relacją (datą zafakturowania).
Jak aktywować zatem drugą relację, aby śledzić datę dostawy? W tym celu możemy tymczasowo aktywować tę relację używając funkcji USERELATIONSHIP. Jest ona modyfikatorem funkcji CALCULATE i służy do tymczasowego aktywowania relacji. Poniżej przykładowa funkcja:
Wartość dostawy =
CALCULATE (
[Wartość sprzedaży],
USERELATIONSHIP ( fSprzedaz[Data dostawy], Kalendarz [Data])
)
Argumentami funkcji USERELATIONSHIP są kolumny z dwóch tabel, które mają sformułować relację. Kolejność wpisywania kolumn nie ma wpływu na wynik. Ważne jest, że relacje muszą być zawarte w modelu danych (podejrzysz to w widoku modelu gdzie linia przerywana świadczy o nieaktywnej relacji).