Blog JSystems - uwalniamy wiedzę!
Blog JSystems - uwalniamy wiedzę!
Power BI - DAX liczy, ale nie to, czego oczekujesz
YTD w Power BI liczy od stycznia, a rok obrachunkowy zaczyna się w innym miesiącu
Kontroler oczekuje, że YTD zacznie narastać od nowa w lipcu, bo wtedy zaczyna się rok obrachunkowy firmy, a miara narastająca w Power BI zbudowana według podręcznika resetuje się w styczniu. W maju 2025 pokazuje więc 45 654 769,95 zł zamiast 109 587 914,94 zł sprzedaży od 1 lipca 2024. Pokazujemy na modelu Nordvelli, jak podać datę końca roku w TOTALYTD, jakie zapisy przyjmuje model z polskimi ustawieniami regionalnymi i dlaczego sam argument nie wystarczy.
Miara Sprzedaż YTD = TOTALYTD([Łączna sprzedaż], DimKalendarz[Data]) w maju 2025 pokazuje 45 654 769,95 zł, czyli sprzedaż od stycznia do maja. Narastająco od początku roku obrachunkowego, czyli od 1 lipca 2024 do 31 maja 2025, sprzedaż wynosi 109 587 914,94 zł. W macierzy miesięcy kolumna YTD zaczyna narastać od nowa w styczniu, a nie w lipcu.
Drugi objaw pojawia się po dopisaniu daty końca roku. Z fragmentatorem na roku kalendarzowym 2025 styczeń pokazuje 74 632 703,87 zł, czyli także lipiec-grudzień 2024, a wiersz Suma pokazuje 72 420 861,55 zł zamiast 126 734 270,47 zł sprzedaży roku 2025. Obie liczby wyglądają na błąd, a są poprawnym YTD obrachunkowym w źle dobranym układzie wierszy.

Zobacz też: Szkolenie Zaawansowany DAX w Power BI
TOTALYTD i DATESYTD mają opcjonalny argument z datą końca roku. Według dokumentacji Microsoft domyślnie to 31 grudnia, część z rokiem jest ignorowana, a tekst daty jest czytany według ustawień regionalnych, w których powstał model. Model Nordvelli ma ustawienia pl-PL. Sprawdziliśmy na nim zapisy „06-30”, „30-06”, „6/30”, „30/6”, „30.06”, „2025-06-30” i „30 czerwca”: każdy daje początek roku 1 lipca 2024 i 109 587 914,94 zł w maju 2025. Zapisy z angielską nazwą miesiąca, „June 30” i „30 June”, kończą się komunikatem „Wystąpił następujący błąd systemu: Invalid procedure call or argument” (w angielskiej wersji: „The following system error occurred: Invalid procedure call or argument”).
Druga część mechanizmu to tabela dat. Funkcje analizy czasowej podmieniają filtr na oznaczonej tabeli dat, więc fragmentator z rokiem kalendarzowym nie zatrzymuje narastania: dla stycznia 2025 funkcja bierze daty od 1 lipca 2024. Wiersz Suma roku kalendarzowego liczy YTD na 31 grudnia 2025, czyli tylko lipiec-grudzień 2025. Jak oznaczenie tabeli dat zmienia działanie funkcji czasowych, opisujemy w poście o opcji Oznacz jako tabelę dat.
Sprzedaż YTD Fiskalny z końcem roku 31 marca: w maju 2025 daje 18 823 999,99 zł, czyli kwiecień i maj. Dla roku od lipca dodaj nową miarę: prawy przycisk na FaktSprzedaz, Nowa miara. W maju 2025 wynik to 109 587 914,94 zł.Sprzedaż YTD obrachunkowy = TOTALYTD ( [Łączna sprzedaż], DimKalendarz[Data], "06-30" )
DATESYTD(DimKalendarz[Data], "06-30"). W maju 2025 zwraca daty od 1 lipca 2024 do 31 maja 2025.DimKalendarz kolumnę roku obrachunkowego (prawy przycisk na tabeli, Nowa kolumna) i używaj jej w wierszach macierzy oraz we fragmentatorze zamiast roku kalendarzowego. Nazywanie roku obrachunkowego rokiem, w którym się kończy, to tylko konwencja, więc ustal ją z działem finansów. Miesiące w kolejności od lipca wymagają jeszcze numeru miesiąca obrachunkowego i opcji opisanej w poście o Sortuj według kolumny.Rok obrachunkowy = IF ( DimKalendarz[Miesiac] >= 7, DimKalendarz[Rok] + 1, DimKalendarz[Rok] )
YTD obrachunkowy ręcznie =
VAR KoniecOkresu = MAX ( DimKalendarz[Data] )
VAR PoczatekRoku =
IF (
MONTH ( KoniecOkresu ) >= 7,
DATE ( YEAR ( KoniecOkresu ), 7, 1 ),
DATE ( YEAR ( KoniecOkresu ) - 1, 7, 1 )
)
RETURN
CALCULATE (
[Łączna sprzedaż],
DATESBETWEEN ( DimKalendarz[Data], PoczatekRoku, KoniecOkresu )
)TOTALYTD([Sales], 'Fiscal Calendar'). Z kalendarzem nie wolno już podawać daty końca roku, silnik zgłasza wtedy „Funkcja „TOTALYTD” nie może zaakceptować parametru końca roku po podaniu kalendarza.” (w angielskiej wersji: „The 'TOTALYTD' function cannot accept year end parameter when calendar is provided.”). Tej drogi nie sprawdzaliśmy na modelu Nordvelli.Wiersz każdego roku obrachunkowego powinien równać się sumie jego dwunastu miesięcy. Na modelu Nordvelli z kolumną Rok obrachunkowy miara daje 88 347 909,33 zł dla roku 2023 (lipiec 2022 - czerwiec 2023), 101 950 291,40 zł dla 2024 i 118 246 553,91 zł dla 2025, tyle co Łączna sprzedaż w tych samych wierszach. Kwota roku 2025 to zarazem wartość czerwca 2025 w macierzy miesięcy. Styczeń 2025 to 63 933 144,99 zł za lipiec-grudzień 2024 plus 10 699 558,88 zł za styczeń.
Zwróć uwagę na lata brzegowe. Rok obrachunkowy 2022 ma tylko styczeń-czerwiec 2022, bo dane zaczynają się 1 stycznia 2022, a rok 2026 kończy się na maju 2026. Takich lat nie porównuj wprost z pełnymi, o czym piszemy w poście o porównaniu przy niepełnym roku.
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...