Blog JSystems - uwalniamy wiedzę!
Blog JSystems - uwalniamy wiedzę!
Power BI - DAX liczy, ale nie to, czego oczekujesz
Miara pokazuje tę samą wartość w każdym wierszu tabeli Power BI
Macierz kategorii pokazuje przy AGD/RTV, Komputerach, Telefonach i Akcesoriach ten sam budżet, 129 209 118,49 zł, czyli budżet całej sieci na 2025. Power BI nie zgłasza błędu, tylko powtarza jedną liczbę, a wszystko, co z niej wynika (odchylenia, udziały), jest błędne. Ta sama wartość w każdym wierszu pojawia się, gdy jedna wizualizacja łączy pola z kilku tabel, na przykład sprzedaż i budżet albo sprzedaż i powody zwrotów. Objaw ma trzy przyczyny, a na modelu Nordvelli rozpoznajemy każdą z nich i naprawiamy model albo miarę.
Macierz z polem Kategoria w obszarze Wiersze, filtrem na rok 2025 i miarami sprzedaży oraz budżetu. Łączna sprzedaż zmienia się w każdym wierszu: AGD/RTV 51 802 669,99 zł, Komputery 35 626 646,49 zł, Telefony 29 186 569,04 zł, Akcesoria 10 118 384,95 zł. Budżet sprzedaży w każdym wierszu pokazuje 129 209 118,49 zł, czyli budżet całej sieci na 2025. Miara Odchylenie od budżetu daje dla Komputerów -93 582 472,00 zł, choć kategoria jest pod planem o 608 709,02 zł.
Drugi przykład: tabela powodów zwrotów z tabeli DimPowodyZwrotow. Miara zwrotów rozkłada się na osiem powodów, a Łączna sprzedaż w każdym z ośmiu wierszy ma 467 775 009,17 zł, czyli sprzedaż całej sieci. Silnik liczy takie zapytanie bez błędu, więc jedynym sygnałem jest powtórzona liczba.
Wiersz tabeli filtruje kolumnę, z której pochodzi pole. Dalej filtr idzie wyłącznie po relacjach, od strony jeden do strony wiele, gdy relacja ma kierunek pojedynczy. Model Nordvelli ma dwie kolumny Kategoria: w DimProdukty (nazwa kategorii przy każdym produkcie) i w DimKategorie (słownik czterech kategorii). FaktSprzedaz łączy się z DimProdukty, a ta z DimKategorie, więc sprzedaż reaguje na obie kolumny. FaktBudzet łączy się z DimKategorie, a filtr z DimProdukty do DimKategorie nie płynie, bo relacja wiele do jednego przenosi go tylko od kategorii do produktów. Miara budżetu nie dostaje filtra kategorii i w każdym wierszu liczy cały rok. Tak samo DimPowodyZwrotow ma relację tylko z FaktZwroty, więc sprzedaż nic o powodach nie wie.
Zobacz też: Szkolenie Zaawansowany DAX w Power BI
Ten sam objaw mają dwie inne przyczyny. Pierwsza to miara, która celowo zdejmuje filtr: CALCULATE([Łączna sprzedaż], ALL(DimProdukty)) daje 467 775 009,17 zł w każdym wierszu, także gdy kategorie pochodzą z DimKategorie, bo ALL na tabeli produktów zdejmuje też filtr, który przychodzi do produktów z tabeli kategorii. Druga to kolumna obliczeniowa w miejscu miary: Sprzedaż sklepu (zła) w DimSklepy, liczona samym SUM, ma w każdym sklepie 467 775 009,17 zł. Skąd ta różnica, wyjaśniamy w poście o przejściu kontekstu w kolumnie obliczeniowej.

Budżet sprzedaży to SUM(FaktBudzet[BudzetSprzedazy]), więc liczy z FaktBudzet. Potem odszukaj w panelu Dane pole z obszaru Wiersze: tabela, pod którą leży, to tabela tego pola.DimKategorie do FaktBudzet droga jest bezpośrednia. Z DimProdukty do FaktBudzet drogi nie ma. Listę relacji z kierunkiem filtrowania pokazuje też okno Zarządzanie relacjami.Kategoria z DimProdukty i przeciągnij Kategoria z DimKategorie. Budżet na 2025 rozkłada się wtedy na AGD/RTV 52 809 814,42 zł, Komputery 36 235 355,51 zł, Telefony 29 787 856,36 zł i Akcesoria 10 376 092,20 zł, a odchylenie Komputerów to -608 709,02 zł. Sprzedaż się nie zmienia, bo filtr z DimKategorie dochodzi do faktów przez produkty. Układ z dwiema tabelami faktów opisujemy w poście o sprzedaży i budżecie ze wspólnymi wymiarami.Kategoria w DimProdukty: prawy przycisk na kolumnie w panelu Dane, Ukryj w widoku raportu. Kolumna zostaje w modelu, znika tylko z listy pól raportu. Ten sam błąd na wykresie kaskadowym pokazujemy w lekcji o wizualizacjach zaawansowanych, gdzie podział po złej kolumnie zepchnął oś do -40 mln zł.DimProdukty daje te same cztery kwoty budżetu co kolumna z DimKategorie.Budżet wg kategorii produktu =
CALCULATE (
[Budżet sprzedaży],
TREATAS ( VALUES ( DimProdukty[Kategoria] ), DimKategorie[Kategoria] )
)Rabat proc: z Łączną sprzedażą daje 467 775 009,17 zł w każdym wierszu i tak ma być, bo wartość parametru czyta się w mierze, a nie przez relację.Po poprawce każdy wiersz ma swoją wartość, a wiersze sumują się do wiersza Suma. Na modelu Nordvelli cztery kwoty budżetu z DimKategorie dają razem 129 209 118,49 zł, czyli budżet sieci na 2025. Ten sam test działa jako szybka kontrola relacji: wstaw tabelę z jedną kolumną wymiaru i jedną miarą. Gdy każdy wiersz pokazuje kwotę równą wartości miary bez żadnego filtra, filtr z tego wymiaru do miary nie dochodzi.
Wizualizacje z miarami z kilku tabel faktów buduj tylko na kolumnach wymiarów połączonych z każdą z tych tabel, a kolumny zdublowane w innych tabelach ukrywaj w widoku raportu.
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...