Blog JSystems - uwalniamy wiedzę!
Blog JSystems - uwalniamy wiedzę!
Power BI - Model danych i relacje
Niejednoznaczna ścieżka między tabelami - Power BI nie pozwala aktywować relacji
Zaznaczasz Aktywuj tę relację, a Power BI Desktop odmawia, bo między tabelami istnieje już aktywny zestaw pośrednich relacji. Taka niejednoznaczna ścieżka relacji powstaje, gdy Power BI sam wykrył dodatkowe relacje po nazwach kolumn albo gdy kilka relacji dostało kierunek filtrowania Oba. Na modelu Nordvelli rozpisujemy, skąd biorą się dwie drogi filtra, dlaczego dają różne liczby i jak zostawić jedną.
Przy aktywowaniu relacji Power BI Desktop zgłasza: „Nie możesz utworzyć bezpośredniej aktywnej relacji między elementami FaktSprzedaz i DimSklepy, ponieważ istnieje już aktywny zestaw pośrednich relacji między tymi tabelami. Aby uaktywnić tę relację, ustaw kierunek filtra krzyżowego na „pojedynczy”, usuń lub najpierw zdezaktywuj dowolną spośród relacji pośrednich.” (w angielskiej wersji: „You can't create a direct active relationship between FaktSprzedaz and DimSklepy because an active set of indirect relationships already exists between these tables. To make this relationship active, set the Cross filter direction to „single”, delete, or deactivate any of the indirect relationships first.”).
Przy zmianie kierunku na Oba komunikat brzmi: „Tworzona relacja pozwala filtrować element FaktBudzet według elementu DimProdukty, ale tylko jedna ścieżka filtrowania między tabelami w modelu danych jest dozwolona. Zdezaktywuj istniejące relacje między tabelami lub zmień kierunek ich filtrowania. Ta relacja może zostać dodana jako filtrowanie jednokierunkowe.” (w angielskiej wersji: „The relationship you're creating lets you filter FaktBudzet by DimProdukty, but only one filtering path between tables in a Data Model is allowed. Deactivate existing relationships between the tables or change their filter direction. This relationship can be added as one-way filtering.”).
W mierze, która włącza Oba na dwóch relacjach funkcją CROSSFILTER, silnik zwrócił na Nordvelli: „Istnieją niejednoznaczne ścieżki między elementami „FaktBudzet” i „DimProdukty”” (w angielskiej wersji: „There are ambiguous paths between 'FaktBudzet' and 'DimProdukty'”), a po dwukropku obie drogi: 'FaktBudzet'->'DimSklepy'->'FaktSprzedaz'->'DimProdukty' i 'FaktBudzet'->'DimKalendarz'->'FaktSprzedaz'->'DimProdukty'.
Zobacz też: Szkolenie Power BI - Desktop, DAX i Online + Copilot
Według dokumentacji Microsoft między dwiema tabelami może działać tylko jedna aktywna ścieżka propagacji filtra. Gdy dróg jest więcej, Power BI wybiera według priorytetu i wagi relacji, a przy dwóch drogach o tym samym priorytecie i wadze zwraca błąd niejednoznacznej ścieżki. Dlatego w Desktopie część relacji zostaje nieaktywna.
W Nordvelli typowa druga droga to relacja DimPracownicy[SklepID] do DimSklepy[SklepID], którą Power BI potrafi wykryć sam po nazwie kolumny. Filtr sklepu dochodzi wtedy do FaktSprzedaz wprost i przez pracowników, a te drogi odpowiadają na różne pytania. Dla Nordvella Warszawa Centrum sprzedaż w sklepie to 34 740 655,15 zł, a sprzedaż pracowników przypisanych do tego sklepu 16 512 549,40 zł. Nordvella Online nie ma przypisanych pracowników, więc druga droga daje pustą wartość. W 103 432 ze 108 675 transakcji sklep z FaktSprzedaz różni się od sklepu sprzedawcy w DimPracownicy.
Druga typowa przyczyna to kierunek Oba. Jedna relacja z Oba, od FaktSprzedaz do DimSklepy, przeszła bez błędu. Dopiero druga, do DimKalendarz, dała filtrowi marki dwie drogi do budżetu: przez sklepy i przez daty. Czym jeszcze grozi ten kierunek, opisujemy w poście o kierunku filtrowania Oba.
FaktZwroty (SprzedazID) do FaktSprzedaz (SprzedazID) oraz DimPracownicy (SklepID) do DimSklepy (SklepID). Gdy są na liście, zaznacz każdą i kliknij Usuń. Jak wyłączyć samo autowykrywanie, piszemy w poście o automatycznym tworzeniu relacji.DimPracownicy[SklepID] i może służyć do filtrowania listy pracowników bez żadnej relacji z DimSklepy. Gdy ta sama tabela ma filtrować w dwóch rolach, dodaj jej kopię jako osobny wymiar, jak drugą tabelę dat w poście o relacji nieaktywnej i USERELATIONSHIP.Marka dała na Nordvelli błąd niejednoznacznych ścieżek, druga z filtrem marki Kelvani zwróciła 541 917 189,40 zł. Według dokumentacji Microsoft wagę drogi zmienia też USERELATIONSHIP: zagnieżdżona w tej samej mierze funkcja USERELATIONSHIP(FaktBudzet[SklepID], DimSklepy[SklepID]) usunęła błąd i dała tę samą kwotę.-- błąd: dwie drogi filtra do FaktBudzet
Budżet dwie drogi =
CALCULATE(
[Budżet sprzedaży],
CROSSFILTER(FaktSprzedaz[SklepID], DimSklepy[SklepID], BOTH),
CROSSFILTER(FaktSprzedaz[DataID], DimKalendarz[DataID], BOTH)
)
-- działa: jedna relacja z kierunkiem Oba
Budżet sklepów ze sprzedażą =
CALCULATE(
[Budżet sprzedaży],
CROSSFILTER(FaktSprzedaz[SklepID], DimSklepy[SklepID], BOTH)
)Po poprawce w oknie Zarządzanie relacjami wszystkie relacje wymiarów z faktami są aktywne i mają kierunek pojedynczy, a każda linia na diagramie prowadzi od wymiaru do faktów. Sprawdź jedną liczbę: sprzedaż Nordvella Warszawa Centrum ma wynosić 34 740 655,15 zł, a suma sklepów 467 775 009,17 zł. Wynik 16 512 549,40 zł oznacza, że filtr sklepu idzie przez pracowników.
Po każdym wczytaniu nowych tabel przejrzyj listę relacji i porównaj ją z modelem gwiazdy: wymiary łączą się tylko z faktami, a nie ze sobą nawzajem ani przez drugą tabelę faktów. Kierunek Oba włączaj punktowo w mierze, nie na relacji w modelu.
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...