Blog JSystems - uwalniamy wiedzę!
Blog JSystems - uwalniamy wiedzę!
Power BI - Model danych i relacje
Automatyczna data i godzina w Power BI - ukryte tabele dat powiększają model
Automatyczna data i godzina w Power BI jest domyślnie włączona i działa po cichu: przy kolumnach typu data w panelu Dane pojawia się ikona kalendarza i gotowa hierarchia. Na ten temat trafia autor modelu, który ma własną tabelę dat, kilka kolumn dat w wymiarach i rosnący plik. Pokazujemy, skąd biorą się ukryte tabele dat, jak policzyć ich rozmiar na własnym modelu i jak wyłączyć opcję, nie psując wizualizacji ani miar.
Kolumna daty w panelu Dane nie wygląda jak zwykłe pole. Ma ikonę kalendarza i rozwija się do Hierarchia dat z poziomami Rok, Kwartał, Miesiąc i Dzień. Po wstawieniu na oś wykres pokazuje lata i kwartały zamiast dni.
Drugi objaw pojawia się po wyłączeniu opcji. Miary napisane z odwołaniem do kolumny ukrytej tabeli przestają działać. Na modelu Nordvelli, w którym opcja jest wyłączona, zapytanie z MAX(DimSklepy[OtwartyOd].[Rok]) kończy się komunikatem „Odwołania do kolumny „OtwartyOd” w tabeli „DimSklepy” nie można używać z odmianą „Rok”, ponieważ nie ma żadnych.” (w angielskiej wersji: „Column reference to 'OtwartyOd' in table 'DimSklepy' cannot be used with a variation 'Rok' because it does not have any.”). Ten sam komunikat, tylko z odmianą „Date”, dostaliśmy dla COUNT(DimSklepy[OtwartyOd].[Date]).
Według dokumentacji Microsoft przy włączonej opcji Power BI Desktop tworzy ukrytą tabelę dat dla każdej kolumny, która ma typ Data albo Data/godzina, jest w tabeli w trybie importu i nie leży po stronie wiele relacji. Tabela jest liczona funkcją CALENDAR, obejmuje pełne lata kalendarzowe od najmniejszej do największej daty w kolumnie i ma kolumny dnia, miesiąca, kwartału i roku oraz hierarchię. Nazwy kolumn powstają w języku modelu, dlatego w polskim pliku poziomy nazywają się Rok, Kwartał, Miesiąc i Dzień. Tabele są ukryte nawet przed autorem modelu, nie ma ich w widoku modelu i nie da się ich wskazać w DAX inaczej niż przez składnię z kropką, na przykład Kolumna.[Rok].
Koszt rośnie z liczbą kolumn dat i z rozpiętością lat. Dokumentacja wymienia większy model, dłuższe odświeżanie i to, że każda kolumna ma osobny kalendarz, więc filtr dat sprzedaży nie filtruje na przykład budżetu. Tabela oznaczona jako tabela dat nie dostaje ukrytych tabel, a samo oznaczenie usuwa te, które już istniały, o czym piszemy w poście oznacz jako tabelę dat i co zmienia w DAX. W Nordvelli dotyczy to DimKalendarz.
Zobacz też: Szkolenie Power BI - Desktop, DAX i Online + Copilot
EVALUATE
UNION(
ROW("Kolumna", "DimSklepy[OtwartyOd]",
"Od", MIN(DimSklepy[OtwartyOd]), "Do", MAX(DimSklepy[OtwartyOd]),
"Wiersze ukrytej tabeli",
DATEDIFF(DATE(YEAR(MIN(DimSklepy[OtwartyOd])), 1, 1),
DATE(YEAR(MAX(DimSklepy[OtwartyOd])), 12, 31), DAY) + 1),
ROW("Kolumna", "DimPracownicy[DataZatrudnienia]",
"Od", MIN(DimPracownicy[DataZatrudnienia]), "Do", MAX(DimPracownicy[DataZatrudnienia]),
"Wiersze ukrytej tabeli",
DATEDIFF(DATE(YEAR(MIN(DimPracownicy[DataZatrudnienia])), 1, 1),
DATE(YEAR(MAX(DimPracownicy[DataZatrudnienia])), 12, 31), DAY) + 1),
ROW("Kolumna", "DimProdukty[DostepnyOd]",
"Od", MIN(DimProdukty[DostepnyOd]), "Do", MAX(DimProdukty[DostepnyOd]),
"Wiersze ukrytej tabeli",
DATEDIFF(DATE(YEAR(MIN(DimProdukty[DostepnyOd])), 1, 1),
DATE(YEAR(MAX(DimProdukty[DostepnyOd])), 12, 31), DAY) + 1),
ROW("Kolumna", "DimProdukty[AktywnyDo]",
"Od", MIN(DimProdukty[AktywnyDo]), "Do", MAX(DimProdukty[AktywnyDo]),
"Wiersze ukrytej tabeli",
DATEDIFF(DATE(YEAR(MIN(DimProdukty[AktywnyDo])), 1, 1),
DATE(YEAR(MAX(DimProdukty[AktywnyDo])), 12, 31), DAY) + 1)
).[Rok], .[Miesiąc], .[Date]). Dokumentacja ostrzega, że po wyłączeniu opcji ukryte tabele znikają, a filtry i wizualizacje na nich oparte trzeba poprawić.DimKalendarz[Rok] i DimKalendarz[Miesiac], a w miarach zamiast FaktX[Data].[Rok] filtruj DimKalendarz[Rok]. W Nordvelli wszystkie tabele faktów łączą się z DimKalendarz, więc jeden wybór roku filtruje sprzedaż, budżet, zwroty i ankiety naraz. Jak przełączyć oś wykresu z hierarchii na samą datę, opisujemy w poście wykres pokazuje Rok i Kwartał zamiast daty.
Po zmianie kolumny dat w wymiarach wyglądają w panelu Dane jak zwykłe pola, bez rozwijanej hierarchii. Uruchom w widoku zapytań w języku DAX zapytanie listujące tabele modelu. W Nordvelli zwraca 19 tabel i żadna nie jest ukryta. Wizualizacje przepięte na DimKalendarz pokazują te same sumy co wcześniej, a miary nie zgłaszają komunikatu o odmianie.
EVALUATE SELECTCOLUMNS(INFO.TABLES(), "Tabela", [Name], "Ukryta", [IsHidden])
Rozmiar modelu przed zmianą i po niej porównasz w VertiPaq Analyzer, tak jak przy kolumnach o dużej kardynalności w poście plik .pbix rośnie do setek megabajtów. W lekcji kursu w tabeli redukcji modelu Nordvelli ukryte tabele automatycznej daty mają wpis „brak”, bo opcja jest wyłączona w pliku od początku.
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...