Blog JSystems - uwalniamy wiedzę!
Blog JSystems - uwalniamy wiedzę!
Power BI - DAX liczy, ale nie to, czego oczekujesz
Średnia w Power BI - AVERAGE, AVERAGEX i średnia z miesięcy dają różne wyniki
Pytanie o średnią sprzedaż ma w Power BI kilka poprawnych odpowiedzi i każda dotyczy czego innego. Na różnicę między AVERAGE, AVERAGEX i średnią z miesięcy trafia autor raportu, który pokazuje zarządowi kartę ze średnią, a liczba nie zgadza się z tym, co wychodzi w Excelu z dwunastu sum miesięcznych. Pokazujemy na modelu Nordvelli, co liczy każda z tych miar, na które pytanie odpowiada i jak zbudować średnią z miesięcy, która działa także w niepełnym roku.
Karta z miarą [Średnia wartość transakcji], czyli AVERAGE(FaktSprzedaz[WartoscNetto]), pokazuje na modelu Nordvelli 4 304,35 zł. Miara [Średnia transakcja przez AVERAGEX] daje dokładnie to samo, w sumie i w każdym mieście. Tymczasem dyrektor pytał o średnią miesięczną sprzedaż sieci i spodziewał się kwoty w milionach złotych: sprzedaż 2025 roku podzielona w Excelu przez 12 to 10 561 189,21 zł. Podsumowanie Średnia, wybrane w menu pola WartoscNetto w wizualizacji, to według dokumentacji Microsoft średnia arytmetyczna wartości pola, czyli też średnia z wierszy tabeli faktów, a nie z miesięcy.
Drugi objaw pojawia się, gdy ktoś liczy średnią z miesięcy sam. Miara dzieląca sprzedaż roku przez 12 daje dla 2026 roku 4 199 458,58 zł, choć dane kończą się w maju, a średni miesiąc tego roku przyniósł 10 078 700,58 zł.
AVERAGE uśrednia wartości jednej kolumny, czyli wiersze tabeli. W FaktSprzedaz jeden wiersz to jedna transakcja, więc 467 775 009,17 zł dzielone jest przez 108 675 transakcji. AVERAGEX przyjmuje tabelę i wyrażenie, liczy wyrażenie w każdym wierszu tej tabeli i dopiero z wyników bierze średnią. Według dokumentacji Microsoft w pozostałych sprawach AVERAGEX działa jak AVERAGE, więc AVERAGEX(FaktSprzedaz, FaktSprzedaz[WartoscNetto]) to ta sama średnia transakcji. Inny wynik daje dopiero inna tabela w pierwszym argumencie: po miesiącach 8 825 943,57 zł, po sklepach 31 185 000,61 zł, po dniach 290 183,01 zł.
Zobacz też: Szkolenie Zaawansowany DAX w Power BI
Drugi mechanizm to puste wartości. Według dokumentacji Microsoft AVERAGE i AVERAGEX pomijają puste komórki, a zera wliczają do mianownika. Kalendarz Nordvelli ma 60 miesięcy, sprzedaż jest w 53 z nich, więc średnia miesięczna całego okresu dzieli przez 53. Z dopiskiem + 0 miesiące bez sprzedaży stają się zerami i średnia spada do 7 796 250,15 zł. Dzielenie przez stałe 12 robi to samo z niepełnym rokiem. Kiedy pusta wartość jest lepsza od zera, opisujemy w poście o pustej wartości zamiast zera w tabeli.

[Łączna sprzedaż] liczy w każdym z nich sprzedaż tego miesiąca. Dla roku 2025 miara daje 10 561 189,21 zł, dla 2026 roku 10 078 700,58 zł (pięć miesięcy z danymi), a dla całego okresu 8 825 943,57 zł.Średnia sprzedaż miesięczna =
AVERAGEX (
VALUES ( DimKalendarz[RokMiesiac] ),
[Łączna sprzedaż]
)+ 0. Dla roku 2026 wersja z zerami daje 4 199 458,58 zł, bo dzieli przez 12 miesięcy kalendarza, w tym siedem, które jeszcze nie nadeszły. W niepełnym roku to wynik mylący.Średnia miesięczna z zerami =
AVERAGEX (
VALUES ( DimKalendarz[RokMiesiac] ),
[Łączna sprzedaż] + 0
)AVERAGEX(VALUES(DimSklepy[Nazwa]), [Średnia wartość transakcji]) daje dla sieci 4 301,66 zł zamiast 4 304,35 zł, bo każdy sklep waży tyle samo, niezależnie od liczby transakcji. W regionie Północ różnica wynosi 19,18 zł (4 246,56 zł wobec 4 265,74 zł). Gdy pytanie dotyczy średniej transakcji, licz ją z wierszy faktów, a średnią ze średnich pokazuj tylko wtedy, gdy celowo porównujesz sklepy jako równe jednostki.AVERAGEX(FaktSprzedaz, [Łączna sprzedaż]) daje na modelu Nordvelli te same 4 304,35 zł, ale w każdym ze 108 675 wierszy wykonuje przejście kontekstu, czyli zamienia wiersz na filtr, więc niepotrzebnie komplikuje obliczenie. Do średniej transakcji wystarczy AVERAGE po kolumnie. Przejście kontekstu wyjaśniamy w lekcji o CALCULATE i kontekście filtrów.Sprawdź średnią miesięczną arytmetyką: 126 734 270,47 zł sprzedaży z 2025 roku podzielone przez 12 to 10 561 189,21 zł, tyle samo co miara. Dla całego okresu 467 775 009,17 zł przez 53 miesiące ze sprzedażą to 8 825 943,57 zł. Liczbę miesięcy w kontekście pokaże COUNTROWS(VALUES(DimKalendarz[RokMiesiac])): dla 2026 roku zwraca 12, choć sprzedaż jest w pięciu, i to sygnał, że trzeba zdecydować o pustych miesiącach.
Zapisuj w nazwie miary, po czym uśredniasz (średnia transakcja, średnia sprzedaż miesięczna, średnia sprzedaż sklepu), i nie używaj w raportach podsumowania Średnia z menu pola, bo uśrednia ono wartości pola z wierszy tabeli. Ten sam wybór obiektu dotyczy średniej kroczącej, w której liczbę miesięcy w oknie liczy DISTINCTCOUNT, co pokazujemy w poście o średniej kroczącej na początku danych.
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...