Blog JSystems - uwalniamy wiedzę!
Blog JSystems - uwalniamy wiedzę!
Power BI - Model danych i relacje
Oznacz jako tabelę dat w Power BI - po co i co się zmienia w DAX
Opcja Oznacz jako tabelę dat w Power BI wygląda na formalność, dopóki sprzedaż narastająca od początku roku nie pokaże w marcu tej samej kwoty co sam marzec. Trafia na to autor modelu z własnym kalendarzem połączonym z faktami kluczem liczbowym, takim jak DataID w Nordvelli. Pokazujemy, co oznaczenie zmienia w obliczeniach DAX, jakie warunki musi spełnić kolumna daty i jakie komunikaty pokazuje okno, gdy ich nie spełnia.
Miara narastająca od początku roku zbudowana na TOTALYTD albo DATESYTD w macierzy z rokiem i miesiącem na wierszach pokazuje to samo co zwykła sprzedaż miesiąca. Silnik nie zgłasza błędu, a liczba wygląda wiarygodnie, dopóki nie porównasz jej z sumą kolejnych miesięcy.
Na modelu Nordvelli sprawdziliśmy to dwiema kolumnami tej samej tabeli DimKalendarz. Kolumna Data jest wskazana w oknie Oznacz jako tabelę dat. Kolumna PierwszyDzienMiesiaca też ma typ Data, ale wskazana nie jest. Dla marca 2025 funkcja DATESYTD na kolumnie Data daje 26 830 769,96 zł, czyli sprzedaż od stycznia do marca. Ta sama funkcja na kolumnie PierwszyDzienMiesiaca daje 8 698 690,25 zł, czyli sam marzec. W czerwcu 2025 rozjazd jest większy: 54 313 408,92 zł wobec 8 658 638,97 zł.
Funkcje inteligencji czasowej, czyli funkcje DAX rozszerzające albo przesuwające okres (TOTALYTD, DATESYTD, SAMEPERIODLASTYEAR), zmieniają filtr na kolumnie daty. Macierz z rokiem i miesiącem filtruje jednak inne kolumny kalendarza: Rok i Miesiac. Gdy tabela jest oznaczona, filtr funkcji czasowej na wskazanej kolumnie zdejmuje pozostałe filtry tej tabeli, więc warunek Miesiac = 3 przestaje działać i zostaje okres od 1 stycznia. Na kolumnie nieoznaczonej warunek miesiąca zostaje, a część wspólna okresu styczeń-marzec z samym marcem to marzec.
Według dokumentacji Microsoft oznaczenie jest obowiązkowe przy klasycznych funkcjach czasowych oraz wtedy, gdy relacja kalendarza z faktami opiera się na kolumnie innego typu niż data, na przykład na kluczu liczbowym w postaci 20241231. Tak jest w Nordvelli: FaktSprzedaz[DataID] łączy się z DimKalendarz[DataID], a kolumna Data służy funkcjom czasowym, co opisujemy w lekcji o modelu danych i relacjach. Dokumentacja wymienia jeszcze jeden powód: zaawansowane filtry dat w tabelach przestawnych Excela opartych na modelu Power BI.
Zobacz też: Szkolenie Power BI - Desktop, DAX i Online + Copilot
DimKalendarz.EVALUATE
SELECTCOLUMNS(
FILTER(INFO.TABLES(), [DataCategory] = "Time"),
"Tabela oznaczona jako tabela dat", [Name]
)EVALUATE
ROW(
"Wiersze", COUNTROWS(DimKalendarz),
"Unikatowe daty", DISTINCTCOUNT(DimKalendarz[Data]),
"Puste", COUNTBLANK(DimKalendarz[Data]),
"Od", MIN(DimKalendarz[Data]),
"Do", MAX(DimKalendarz[Data]),
"Dni w zakresie", DATEDIFF(MIN(DimKalendarz[Data]), MAX(DimKalendarz[Data]), DAY) + 1
)Data, typ Data, nie Data i godzina). Poczekaj na komunikat Walidacja zakończona pomyślnie i kliknij Zapisz.Data i po nieoznaczonej PierwszyDzienMiesiaca. Wynik to 26 830 769,96 zł i 8 698 690,25 zł. Pierwsza liczba jest równa sprzedaży od stycznia do marca 2025, druga sprzedaży samego marca.EVALUATE
CALCULATETABLE(
ROW(
"YTD po kolumnie Data",
CALCULATE([Łączna sprzedaż], DATESYTD(DimKalendarz[Data])),
"YTD po kolumnie PierwszyDzienMiesiaca",
CALCULATE([Łączna sprzedaż], DATESYTD(DimKalendarz[PierwszyDzienMiesiaca]))
),
DimKalendarz[Rok] = 2025,
DimKalendarz[Miesiac] = 3
)Sprzedaż YTD w Nordvelli ma postać TOTALYTD([Łączna sprzedaż], DimKalendarz[Data]). Gdy okres liczysz sam, filtrem na kluczu DataID, pozostałe filtry kalendarza zdejmij jawnie. Zakres od 20250101 do 20250331 przy filtrze marca daje 8 698 690,25 zł, a z dopisanym REMOVEFILTERS(DimKalendarz[Miesiac]) 26 830 769,96 zł.
Po zapisaniu kolumna daty w panelu Dane dostaje ikonę kalendarza. Wstaw do macierzy rok i miesiąc z DimKalendarz, a obok miary Łączna sprzedaż i Sprzedaż YTD. W styczniu obie liczby są równe (w 2025 roku 10 699 558,88 zł), w marcu 2025 YTD pokazuje 26 830 769,96 zł, tyle co suma trzech pierwszych miesięcy. Gdy YTD jest równe sprzedaży miesiąca, funkcja liczy na kolumnie, która nie jest oznaczona. Puste wyniki i błędy funkcji czasowych przy brakujących dniach opisujemy w poście o funkcjach inteligencji czasowej i ciągłej tabeli dat.
Według dokumentacji Microsoft nowsza analiza czasowa oparta na kalendarzach, na razie w wersji zapoznawczej, nie wymaga oznaczania tabeli poza szczególnymi przypadkami. W tym trybie polski Power BI Desktop pokazuje opcję z dopiskiem „(nierekomendowane)”. Klasyczne funkcje, takie jak TOTALYTD na kolumnie daty, nadal wymagają oznaczonej tabeli.
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...