Blog JSystems - uwalniamy wiedzę!

Szukaj

Power BI - Model danych i relacje

Niejednoznaczna ścieżka między tabelami - Power BI nie pozwala aktywować relacji

W skrócie

  • Niejednoznaczna ścieżka relacji w Power BI powstaje, gdy filtr może dojść z jednej tabeli do drugiej dwiema drogami. Power BI odmawia wtedy aktywowania relacji albo silnik zgłasza błąd niejednoznacznych ścieżek.
  • Dwie drogi tworzy relacja, która omija wymiar, na przykład pracownik połączony ze sklepem obok faktów połączonych ze sklepem, albo kierunek filtrowania Oba na kilku relacjach naraz.
  • Usuń relacje omijające wymiary, ustaw kierunek pojedynczy od wymiarów do faktów i wróć do modelu gwiazdy. Gdy druga droga jest potrzebna w jednej mierze, włącz ją tylko tam przez USERELATIONSHIP albo CROSSFILTER.

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ą.

Jak to wygląda w praktyce

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'.

Dlaczego tak się dzieje

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.

Co zrobić krok po kroku

  1. Przeczytaj komunikat: podaje dwie tabele, między którymi jest więcej niż jedna droga. Otwórz Widok modelu i prześledź od pierwszej do drugiej wszystkie linie relacji, zgodnie ze strzałkami kierunku filtra. Każdy odcinek, który łączy dwa wymiary albo dwie tabele faktów, jest kandydatem na drugą drogę.
  2. Otwórz Zarządzanie relacjami i usuń relacje omijające wymiary. Kurs wskazuje dwie takie relacje, które Power BI może wykryć sam przy wczytaniu arkusza Nordvelli: 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.
  3. Włącz właściwą relację. Zaznacz nieaktywną relację wymiaru z faktami, kliknij Edytuj, zaznacz Aktywuj tę relację, a w polu Kierunek filtrowania krzyżowego zostaw Pojedyncza. Zgodnie z treścią komunikatu, gdy relacji pośredniej już nie ma, relację bezpośrednią można aktywować.
  4. Gdy informacja z usuniętej relacji jest potrzebna, zostaw ją jako kolumnę. Sklep przypisany pracownikowi jest w 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.
  5. Gdy niejednoznaczność tworzy miara z CROSSFILTER, zostaw kierunek Oba tylko na jednej relacji. Pierwsza miara poniżej w tabeli z polem 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)
    )
  6. Ten sam problem dotyczy kolumn obliczeniowych. Kolumna zdefiniowana w zapytaniu z tymi samymi dwiema funkcjami CROSSFILTER dała na Nordvelli identyczny komunikat o niejednoznacznych ścieżkach z listą obu dróg. Silnik ma też osobny komunikat dla przetwarzania kolumny obliczeniowej w modelu: „Przetwarzanie kolumny obliczeniowej nie powiodło się z powodu niejednoznacznych ścieżek między tabelami” (w angielskiej wersji: „Processing of calculated column failed due to ambiguous paths between tables”). Usuwasz go tak samo: drugą drogę dezaktywujesz albo kasujesz w oknie Zarządzanie relacjami.

Jak sprawdzić, że problem zniknął

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.

Źródła i sposób sprawdzenia

  • Microsoft Learn: Model relationships in Power BI Desktop (Resolve relationship path ambiguity) (źródło)
  • Microsoft Learn: Create and manage relationships in Power BI Desktop (Cross filter direction) (źródło)
  • Microsoft Learn: CROSSFILTER function (DAX) (źródło)
  • Sprawdzone zapytaniami DAX na modelu Nordvelli: błąd niejednoznacznych ścieżek z dwiema relacjami Oba, sprzedaż sklepów wprost i przez pracowników, rozwiązanie jedną relacją Oba i przez USERELATIONSHIP.

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

Najczęściej zadawane pytania

Co oznacza niejednoznaczna ścieżka między tabelami w Power BI?
Filtr może dojść z jednej tabeli do drugiej więcej niż jedną drogą relacji. Power BI dopuszcza między dwiema tabelami tylko jedną aktywną ścieżkę, więc Desktop odmawia aktywowania relacji, która dałaby drugą drogę, a silnik przy dwóch drogach o tym samym priorytecie i tej samej wadze zwraca błąd niejednoznacznych ścieżek z listą obu dróg.
Dlaczego Power BI nie pozwala aktywować relacji?
Między tymi tabelami istnieje już aktywny zestaw pośrednich relacji, na przykład wymiar połączony z innym wymiarem obok relacji z faktami. Komunikat podpowiada trzy wyjścia: kierunek filtra pojedynczy, usunięcie albo dezaktywowanie jednej z relacji pośrednich.
Jak usunąć niejednoznaczność relacji w Power BI?
Usuń relacje, które łączą tabele z pominięciem wymiarów, ustaw kierunek pojedynczy od wymiarów do faktów i aktywuj właściwą relację. Gdy druga droga jest potrzebna w jednej mierze, zostaw ją nieaktywną i włącz w tej mierze przez USERELATIONSHIP albo CROSSFILTER.
Czy kierunek filtrowania Oba powoduje niejednoznaczne ścieżki?
Może, gdy Oba dostanie kilka relacji. Na modelu Nordvelli jedna relacja Oba między sprzedażą a sklepami działała, a druga, między sprzedażą a kalendarzem, dała filtrowi marki dwie drogi do budżetu i błąd niejednoznacznych ścieżek.

Komentarze (0)

Musisz być zalogowany by móc dodać komentarz. Zaloguj się przez Google

Brak komentarzy...