Blog JSystems - uwalniamy wiedzę!

Szukaj

Power BI - DAX liczy, ale nie to, czego oczekujesz

Wiersz Suma w tabeli Power BI nie zgadza się z sumą wierszy

W skrócie

  • Gdy wiersz Suma w tabeli Power BI nie zgadza się z sumą wierszy, zwykle winna jest miara z warunkiem, na przykład z IF albo z progiem kwotowym.
  • Power BI nie dodaje liczb z wierszy. Wiersz Suma liczy tę samą miarę bez filtra wiersza, więc warunek sprawdza się raz dla całej sieci, a nie osobno dla każdego sklepu.
  • Gdy suma ma być sumą wierszy, owiń miarę w SUMX po wymiarze, na którym obowiązuje reguła. Gdy suma nie ma sensu, ukryj ją przez HASONEVALUE albo ISINSCOPE. Wszystko sprawdziliśmy na modelu Nordvelli.

Pięć sklepów Nordvelli dostaje po 50 000 zł premii, czyli razem 250 000 zł, a tabela podsumowuje to kwotą 50 000 zł. Rozjazd między wierszami a sumą może dotyczyć w tabeli i macierzy każdej miary z warunkiem: premii za przekroczenie progu, nadwyżki ponad budżet, kary za spadek. Wiersze wyglądają dobrze, a wiersz Suma na dole tabeli, którego wiele osób szuka jako wiersza razem, nie zgadza się z tym, co wychodzi z kalkulatora, albo jest pusty. Pokazujemy na danych Nordvelli, skąd ta różnica się bierze, kiedy jest poprawna i jak napisać miarę, której suma zgadza się z wierszami.

Jak to wygląda w praktyce

Tabela sklepów Nordvelli z filtrem na rok 2025 i miarą Nadwyżka ponad budżet, czyli kwotą, o którą sprzedaż sklepu przekroczyła jego budżet. Wartość ma sześć sklepów: Nordvella Online 1 413 451,39 zł, Warszawa Mokotów 485 370,96 zł, Szczecin 374 804,25 zł, Kraków Stare Miasto 338 630,89 zł, Lublin 229 388,91 zł i Wrocław 71 273,92 zł. Łącznie to 2 912 920,32 zł, a wiersz Suma na dole tabeli jest pusty.

Ten sam efekt daje próg. Miara Premia sklepu, która przyznaje 50 000 zł każdemu sklepowi ze sprzedażą powyżej 8 mln zł, pokazuje premię w pięciu wierszach (Warszawa Centrum, Kraków Stare Miasto, Wrocław, Katowice, Nordvella Online), czyli 250 000 zł, a wiersz Suma pokazuje 50 000 zł. Power BI nie zgłasza żadnego błędu, bo silnik policzył każdą komórkę zgodnie z formułą.

Dlaczego tak się dzieje

Power BI nie dodaje liczb widocznych w wierszach. Każda komórka, także wiersz Suma, to osobne obliczenie miary w jej kontekście filtra, czyli w zestawie warunków nałożonych przez wiersz, fragmentatory i filtry strony. Wiersz sklepu ma filtr na jeden sklep, a wiersz Suma nie ma filtra sklepu, więc miara liczy się dla całej sieci naraz.

Dla zwykłej sumy to bez znaczenia, bo suma całości równa się sumie części. Warunek działa inaczej. Sieć w 2025 sprzedała 126 734 270,47 zł przy budżecie 129 209 118,49 zł, czyli była poniżej budżetu o 2 474 848,02 zł. Warunek IF(R > 0, R) dostaje w wierszu Suma wynik ujemny i zwraca pustą wartość. Nadwyżki sześciu sklepów giną, bo przykrył je niedobór pozostałych dziewięciu. Tak samo z premią: sieć jako całość przekracza 8 mln zł jeden raz, więc dostaje jedną premię.

Tak samo liczą się wskaźniki i liczności, ale tam rozjazd jest poprawny. Marża % w macierzy kategorii bez filtra roku to 10,09% (Komputery), 6,58% (Telefony), 21,56% (AGD/RTV) i 40,62% (Akcesoria), a w wierszu Suma 16,46%, bo to marża całej sprzedaży, a nie suma procentów. Liczba sklepów (DISTINCTCOUNT) pokazuje 15 w każdym miesiącu 2025 i 15 w sumie roku, a nie 180. O średnich, które na każdym poziomie dają inny wynik, piszemy w poście o różnicy między AVERAGE, AVERAGEX i średnią z miesięcy.

Co zrobić krok po kroku

  1. Zdecyduj, czy suma ma być sumą wierszy. Dla wskaźników procentowych, średnich i liczby unikatowych wartości wynik w wierszu Suma różni się od sumy wierszy z definicji i niczego nie trzeba poprawiać. Poprawki wymagają miary, które mają się sumować, a zawierają warunek: IF, próg, porównanie z zerem, SWITCH.
  2. Znajdź w mierze miejsce, w którym zapada decyzja. W przykładzie Nordvelli to porównanie sprzedaży z budżetem w zmiennej R. Ta miara jest poprawna na poziomie jednego sklepu i zostaje w modelu jako cegiełka dla następnej.
    Nadwyżka ponad budżet =
    VAR R = [Łączna sprzedaż] - [Budżet sprzedaży]
    RETURN
        IF ( R > 0, R )
  3. Dodaj miarę, która sprawdza warunek osobno dla każdego sklepu i dodaje wyniki: prawy przycisk na FaktSprzedaz w panelu Dane, Nowa miara. SUMX przechodzi po liście sklepów, a miara w środku liczy się tylko dla bieżącego sklepu dzięki przejściu kontekstu, które opisujemy w poście o przejściu kontekstu w CALCULATE. Na modelu Nordvelli w 2025 wiersz Suma pokazuje teraz 2 912 920,32 zł, tyle co suma sześciu wierszy. Ten sam wzorzec dla premii daje 250 000 zł.
    Nadwyżka sklepów =
    SUMX (
        VALUES ( DimSklepy[Nazwa] ),
        [Nadwyżka ponad budżet]
    )
  4. Wybierz wymiar, na którym obowiązuje reguła, bo od niego zależy wynik. Gdy nadwyżka jest rozliczana rocznie, SUMX idzie po sklepach. Ta sama nadwyżka dodana po miesiącach 2025 daje 3 444 942,09 zł zamiast 2 912 920,32 zł, bo sklep, który w jednym miesiącu przekroczył budżet, a w innym nie, dostaje nadwyżkę za dobre miesiące bez potrącenia słabych. Sam styczeń to 444 664,16 zł. Poziom reguły ustal z osobą, która rozlicza wynik, zanim napiszesz miarę.
  5. W macierzy z kolumnami Region i Nazwa z DimSklepy w obszarze Wiersze użyj ISINSCOPE. Funkcja zwraca prawdę, gdy wiersz macierzy jest na poziomie wskazanej kolumny, więc na poziomie sklepu miara liczy zwykłą nadwyżkę, a na regionie i w sumie dodaje sklepy. Region Zachód ma budżet wyższy od sprzedaży, a mimo to pokazuje 446 078,17 zł, czyli nadwyżkę Wrocławia i Szczecina.
    Nadwyżka (zakres) =
    IF (
        ISINSCOPE ( DimSklepy[Nazwa] ),
        [Nadwyżka ponad budżet],
        [Nadwyżka sklepów]
    )
  6. Gdy suma nie ma sensu biznesowego, ukryj ją zamiast liczyć. HASONEVALUE zwraca prawdę, gdy kontekst zawiera jedną wartość kolumny, więc w wierszu Suma, gdzie jest piętnaście sklepów, miara zwraca pustą wartość. Ten sam wzorzec ma ranking sklepów w lekcji o CALCULATE i kontekście filtrów. W macierzy wiersze sum wyłączysz też przełącznikiem Sumy częściowe wierszy w Formatuj element wizualny, ale warunek w mierze działa w każdej wizualizacji, także na karcie.
    Nadwyżka bez sumy =
    IF (
        HASONEVALUE ( DimSklepy[Nazwa] ),
        [Nadwyżka ponad budżet]
    )

Jak sprawdzić, że problem zniknął

Porównaj wiersz Suma z sumą wierszy policzoną niezależnie, na przykład kartą z miarą SUMX obok tabeli. Na modelu Nordvelli w 2025 obie wartości to 2 912 920,32 zł, a miara bez SUMX zostaje pusta. Sprawdź też poziom pośredni: region Centrum sprzedał 27 511 918,17 zł przy budżecie 29 473 050,73 zł, więc stara miara jest tam pusta, a nowa pokazuje 485 370,96 zł nadwyżki Mokotowa.

W opisie każdej miary z warunkiem zapisz, na jakim poziomie obowiązuje reguła (sklep, miesiąc, transakcja), i od razu buduj ją z iteratorem po tym wymiarze. Gdy miara z warunkiem pokazuje puste komórki tam, gdzie spodziewasz się zera, przeczytaj kiedy pokazywać zero zamiast pustej wartości.

Źródła i sposób sprawdzenia

  • Microsoft Learn: SUMX function (DAX) (źródło)
  • Microsoft Learn: HASONEVALUE function (DAX) (źródło)
  • Microsoft Learn: ISINSCOPE function (DAX), przykład z ROLLUPADDISSUBTOTAL (źródło)
  • Microsoft Learn: DAX overview (kontekst filtra i miary) (źródło)
  • Sprawdzone zapytaniami DAX na modelu Nordvelli: nadwyżka ponad budżet i premia w 2025 po sklepach, regionach i miesiącach, wiersz Suma odtworzony przez ROLLUPADDISSUBTOTAL.

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

Dlaczego suma w tabeli Power BI nie zgadza się z sumą wierszy?
Power BI nie dodaje wartości widocznych w wierszach, tylko liczy miarę od nowa dla wiersza Suma, bez filtra z wiersza. Gdy miara zawiera warunek, na przykład IF albo próg, warunek sprawdza się raz dla całości. Na modelu Nordvelli nadwyżka sześciu sklepów ponad budżet to 2 912 920,32 zł, a wiersz Suma jest pusty, bo cała sieć była poniżej budżetu.
Jak zrobić w Power BI, żeby suma była sumą wierszy?
Owiń miarę w SUMX po wymiarze z wierszy, na przykład SUMX(VALUES(DimSklepy[Nazwa]), [Nadwyżka ponad budżet]). SUMX liczy miarę osobno dla każdego sklepu i dodaje wyniki, więc wiersz Suma równa się sumie wierszy. Wymiar wybierz według reguły biznesowej, bo suma po miesiącach daje inny wynik niż suma po sklepach.
Czy procent w wierszu Suma powinien być sumą procentów?
Nie. Wskaźnik procentowy w wierszu Suma to wskaźnik całości, na przykład marża całej sprzedaży. Na modelu Nordvelli marża kategorii wynosi od 6,58% do 40,62%, a w wierszu Suma 16,46%. Podobnie liczba unikatowych sklepów: 15 w każdym miesiącu i 15 w całym roku.
Jak ukryć sumę miary w tabeli Power BI?
W mierze użyj HASONEVALUE, na przykład IF(HASONEVALUE(DimSklepy[Nazwa]), [Nadwyżka ponad budżet]). W wierszu Suma kontekst obejmuje wiele sklepów, więc miara zwraca pustą wartość. W macierzy wiersze sum wyłączysz też w formatowaniu wizualizacji przełącznikiem Sumy częściowe wierszy.

Komentarze (0)

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

Brak komentarzy...