Blog JSystems - uwalniamy wiedzę!
Blog JSystems - uwalniamy wiedzę!
Power BI - Model danych i relacje
Linia relacji jest przerywana - relacja nieaktywna i funkcja USERELATIONSHIP
Druga linia między tabelą faktów a tabelą dat jest na diagramie modelu przerywana, a wizualizacje dalej liczą po pierwszej dacie. Relacja nieaktywna pojawia się w Power BI wtedy, gdy tabela faktów ma dwie daty, na przykład datę zwrotu i datę zakupu albo datę zamówienia i datę wysyłki. Pokazujemy na zwrotach Nordvelli, dlaczego tak jest, jak napisać miarę z USERELATIONSHIP i kiedy lepsza jest druga tabela dat.
Na diagramie modelu (Widok modelu) dwie tabele łączą dwie linie: ciągła to relacja aktywna, przerywana to nieaktywna. W oknie Zarządzanie relacjami kolumna Stan pokazuje, która jest nieaktywna. W modelu Nordvelli FaktZwroty łączy się z DimKalendarz po DataZwrotu (aktywna) i po DataZakupu (nieaktywna).
Według dokumentacji Microsoft Power BI Desktop dopuszcza w danej chwili tylko jedną aktywną relację między dwiema tabelami, więc zanim zaznaczysz Aktywuj tę relację w drugiej, trzeba wyłączyć pierwszą. Komunikat o tej sytuacji brzmi: „Istnieje już aktywna relacja między elementami FaktZwroty i DimKalendarz. Aby uaktywnić tę relację, najpierw zdezaktywuj istniejącą relację.” (w angielskiej wersji: „An active relationship already exists between FaktZwroty and DimKalendarz. To make this relationship active, deactivate the existing relationship first.”). Skutek w liczbach: tabela z rokiem z DimKalendarz i sumą WartoscZwrotu pokazuje dla 2022 roku -2 309 610,35 zł, czyli zwroty przyjęte w 2022. Zwroty z zakupów zrobionych w 2022 to -2 497 448,50 zł, ale tej liczby wizualizacja sama nie pokaże.

Zobacz też: Szkolenie Power BI - Desktop, DAX i Online + Copilot
Według dokumentacji Microsoft między dwiema tabelami modelu może istnieć tylko jedna aktywna ścieżka propagacji filtra, bo ścieżki muszą być jednoznaczne. Dwie relacje FaktZwroty z DimKalendarz dałyby dwie drogi dla tego samego filtra roku: po dacie zwrotu i po dacie zakupu. Dlatego przy tworzeniu drugiej relacji pole Aktywuj tę relację jest już odznaczone. Nieaktywna relacja przenosi filtry tylko wtedy, gdy wyrażenie DAX ją wywoła. Druga przyczyna przerywanej linii to ścieżka przez inne tabele, którą opisujemy w poście o niejednoznacznej ścieżce między tabelami.
Różnica między datami nie jest kosmetyczna. Z 2714 zwrotów Nordvelli 1262 mają zakup w innym miesiącu niż zwrot, a 222 w innym roku. W styczniu 2025 zwroty według daty zwrotu to -453 076,67 zł, a według daty zakupu -279 830,20 zł. Zwroty są w danych zapisane ze znakiem minus.
DataZakupu wszystkie miary na FaktZwroty i wszystkie filtry kalendarza zaczną liczyć po dacie zakupu.FaktZwroty w panelu Dane, kliknij Nowa miara i wpisz formułę. USERELATIONSHIP włącza relację po DataZakupu tylko na czas liczenia tej miary i według dokumentacji Microsoft zastępuje wtedy aktywną relację między tymi tabelami. Na Nordvelli miara daje dla 2022 roku -2 497 448,50 zł, dla 2025 -3 665 013,08 zł.Wartosc zwrotow wg daty zakupu =
CALCULATE(
SUM(FaktZwroty[WartoscZwrotu]),
USERELATIONSHIP(FaktZwroty[DataZakupu], DimKalendarz[DataID])
)Rok z DimKalendarz. Na Nordvelli 2023 to -2 963 550,81 zł według daty zwrotu i -3 062 674,88 zł według daty zakupu, 2026 to -1 818 192,67 zł i -1 420 097,44 zł. Nazwa miary mówi, po której dacie liczy, więc odbiorca nie pomyli kolumn.FaktZwroty[DataZakupu] z jej kolumną DataID aktywną relacją. Nazwy kolumn kopii poprzedź słowem zakupu. To wzorzec do dostosowania: model rośnie o drugą tabelę dat.Kalendarz zakupu = DimKalendarz
Suma obu miar dla całego okresu musi być taka sama, bo to te same zwroty rozłożone w czasie inaczej. Na Nordvelli obie dają -14 022 095,44 zł z 2714 zwrotów. Różnice mają się pojawić tylko w rozbiciu na lata i miesiące. Gdy miara z USERELATIONSHIP pokazuje to samo co miara zwykła w każdym roku, sprawdź, czy relacja w funkcji wskazuje właściwe kolumny.
Dla każdej dodatkowej daty w faktach decyduj od razu: miara z USERELATIONSHIP, gdy druga data potrzebna jest w kilku miarach, albo tabela roli, gdy ma filtrować całe wizualizacje. Gdy kopia kalendarza ma służyć funkcjom inteligencji czasowej, oznacz ją jako tabelę dat tak samo jak DimKalendarz, o czym piszemy w poście o oznaczaniu tabeli dat i w lekcji o YTD i porównaniach rok do roku.
Zachowanie programu sprawdziliśmy w Power BI Desktop 2.157 (wydanie z sierpnia 2026 r.) z polskim interfejsem, a przykłady na modelu sieci Nordvella z bezpłatnego kursu Power BI. Microsoft wydaje nową wersję Power BI Desktop co miesiąc, więc nazwy przycisków i limity usługi mogą się zmieniać. Aktualne wartości podaje dokumentacja Microsoft Learn.
Wróć do listy: 131 najczęstszych pytań i problemów związanych z Power BI
Komentarze (0)
Brak komentarzy...