Blog JSystems - uwalniamy wiedzę!

Szukaj

Power BI - Model danych i relacje

Automatyczna data i godzina w Power BI - ukryte tabele dat powiększają model

W skrócie

  • Opcja Automatyczna data/godzina w Power BI tworzy dla każdej kolumny daty ukrytą tabelę z pełnymi latami kalendarzowymi i hierarchią Rok, Kwartał, Miesiąc, Dzień. Przy kilku kolumnach dat i własnym kalendarzu to zbędny ciężar.
  • Każda ukryta tabela według dokumentacji Microsoft powiększa model i wydłuża odświeżanie, a filtr na jednej kolumnie daty nie filtruje innych tabel faktów. Kolumna z datami od 1.01.1900 do 31.12.9999 daje tabelę na 2 958 464 dni.
  • Wyłącz opcję w sekcji Bieżący plik i w sekcji Globalne dla nowych plików, wcześniej przepnij wizualizacje i miary na kolumny własnej tabeli dat.

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.

Jak to wygląda w praktyce

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]).

Dlaczego tak się dzieje

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.

Co zrobić krok po kroku

  1. Sprawdź ustawienie pliku: Plik > Opcje i ustawienia > Opcje, w lewej kolumnie w sekcji Bieżący plik strona Ładowanie danych, grupa Analiza czasowa. Zaznaczone pole Automatyczna data/godzina znaczy, że ukryte tabele istnieją. Według dokumentacji przy nowej instalacji Power BI Desktop ta opcja i jej odpowiednik globalny są włączone.
  2. Policz, ile wierszy dałyby ukryte tabele. Każda obejmuje pełne lata od najmniejszej do największej daty w kolumnie, więc wystarczy zakres. W Nordvelli cztery kolumny dat poza kalendarzem dają 2191, 2191, 365 i 366 wierszy, razem 5113. Ta sama formuła dla kolumny z jedną wartością 1.01.1900 i jedną 31.12.9999 zwraca 2 958 464 wiersze, dlatego daty zastępcze w danych źródłowych są szczególnie kosztowne.
    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)
    )
  3. Zanim wyłączysz opcję, znajdź, co z niej korzysta. Przejrzyj wizualizacje, w których na osi albo w wierszach jest Hierarchia dat kolumny z wymiaru lub faktów, oraz miary ze składnią z kropką (.[Rok], .[Miesiąc], .[Date]). Dokumentacja ostrzega, że po wyłączeniu opcji ukryte tabele znikają, a filtry i wizualizacje na nich oparte trzeba poprawić.
  4. Przepnij te miejsca na własny kalendarz. Na oś wstaw kolumny 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.
  5. Wyłącz opcję w pliku: w sekcji Bieżący plik, na stronie Ładowanie danych, w grupie Analiza czasowa odznacz Automatyczna data/godzina i zatwierdź. Ustawienie zapisuje się w pliku raportu, więc w każdym projekcie zdejmujesz je osobno.
  6. Wyłącz opcję dla nowych plików: w sekcji Globalne otwórz stronę Ładowanie danych i w grupie Analiza czasowa odznacz Automatyczna data/godzina dla nowych plików. Według podpowiedzi w Power BI to ustawienie decyduje o nowych plikach, a w istniejącym pliku nadal decyduje pole z sekcji Bieżący plik.
Okno Opcje Power BI, Bieżący plik, Ładowanie danych: odznaczona opcja Automatyczna data/godzina w grupie Analiza czasowa
Okno Opcje w Power BI Desktop: w lewej kolumnie sekcje Globalne i Bieżący plik, obie ze stroną Ładowanie danych. Na stronie bieżącego pliku Nordvelli pole Automatyczna data/godzina jest odznaczone.

Jak sprawdzić, że problem zniknął

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.

Źródła i sposób sprawdzenia

  • Microsoft Learn: Auto date/time in Power BI Desktop (źródło)
  • Microsoft Learn: Auto date/time guidance in Power BI Desktop (źródło)
  • Microsoft Learn: Set and use date tables in Power BI Desktop (źródło)
  • Sprawdzone zapytaniami DAX na modelu Nordvelli: zakresy kolumn dat, liczba wierszy pełnych lat, lista tabel bez ukrytych, komunikat o odmianie Rok i Date.

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

Jak wyłączyć automatyczną datę i godzinę w Power BI?
Otwórz Plik, Opcje i ustawienia, Opcje, w sekcji Bieżący plik wybierz Ładowanie danych i w grupie Analiza czasowa odznacz Automatyczna data/godzina. Dla nowych plików odznacz w sekcji Globalne pole Automatyczna data/godzina dla nowych plików. Wcześniej przepnij wizualizacje i miary z hierarchii dat na własną tabelę kalendarza.
Ile miejsca zajmuje automatyczna data i godzina w Power BI?
Każda kolumna daty dostaje ukrytą tabelę z pełnymi latami kalendarzowymi od najmniejszej do największej daty. W modelu Nordvelli cztery takie kolumny dałyby razem 5113 wierszy, a kolumna z datami od 1900 do 9999 roku dałaby 2 958 464 wiersze. Według dokumentacji Microsoft każda taka tabela powiększa model i wydłuża odświeżanie.
Dlaczego po wyłączeniu automatycznej daty miara DAX zwraca błąd?
Miara odwołuje się do kolumny ukrytej tabeli dat składnią z kropką, na przykład DimSklepy[OtwartyOd].[Rok]. Po wyłączeniu opcji tej tabeli nie ma i silnik zgłasza komunikat, że odwołania do kolumny nie można używać z odmianą Rok. Zamień takie odwołanie na kolumnę własnej tabeli dat.
Czy automatyczna data i godzina działa, gdy mam własną tabelę dat?
Tak, opcja dalej tworzy ukryte tabele dla kolumn dat w innych tabelach, na przykład daty otwarcia sklepu czy zatrudnienia. Pomija tabelę oznaczoną jako tabela dat i kolumny po stronie wiele relacji. Dlatego przy własnym kalendarzu opcję zwykle się wyłącza.

Komentarze (0)

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

Brak komentarzy...