Blog JSystems - uwalniamy wiedzę!

Szukaj

Power Query w Excelu, Power BI i Fabric

Data i godzina zamiast samej daty - jak usunąć czas i strefę czasową w Power Query

W skrócie

  • Kolumna Data/godzina albo Data/godzina/strefa czasowa z bazy lub API nie łączy się z kalendarzem typu Data: grupowanie daje osobny wiersz na każdą godzinę, a scalanie po dacie nie znajduje par.
  • Power Query porównuje wartości razem z typem, więc 06.10.2026 00:00 nie jest równe dacie 06.10.2026. Zmiana typu wartości ze strefą czasową dodatkowo przelicza ją na czas lokalny i może przesunąć dzień.
  • W Power Query usuń godzinę z daty poleceniem Tylko data albo funkcją DateTime.Date. Przy danych UTC najpierw przelicz strefę jawnie, na przykład funkcją DateTimeZone.SwitchZone, a potem ustaw typ Data.

Kolumny dat z baz danych i API przychodzą często z godziną, a czasem także ze strefą czasową. W podglądzie wyglądają jak daty, ale grupowanie po dniu, scalanie z kalendarzem i relacje w Power BI nie traktują ich jak dat. Pokazujemy, jak w Power Query usunąć godzinę z daty i co zrobić ze strefą czasową, żeby żaden wiersz nie zmienił dnia.

Jak to wygląda w praktyce

Kolumna ma w nagłówku ikonę kalendarza z zegarem, czyli typ Data/godzina, albo ikonę typu Data/godzina/strefa czasowa. Wartości wyglądają jak 06.10.2026 14:30:00 albo 06.10.2026 23:30:00 +00:00. Skutki sprawdziliśmy w polskim Excelu:

  • grupowanie po takiej kolumnie dało dwa wiersze dla dwóch transakcji z tego samego dnia, z godzin 8:15 i 14:30,
  • scalenie z tabelą kalendarza, w której kolumna ma typ Data, nie znalazło żadnej pary, nawet dla wartości z godziną 00:00,
  • porównanie #datetime(2026,10,6,0,0,0) = #date(2026,10,6) zwróciło false.

W Power BI taka kolumna nie połączy się relacją z kolumną typu Data w tabeli kalendarza. Przy danych zapisanych w UTC dochodzi kolejny kłopot: transakcja z 23:30 UTC 6 października to w Polsce już 7 października, więc od sposobu konwersji zależy, do którego dnia trafi.

Kolumna Początek miesiąca z ikoną kalendarza z zegarem, czyli typem Data/godzina, w edytorze Power Query w Power BI Desktop
Ikona kalendarza z zegarem w nagłówku kolumny Początek miesiąca oznacza typ Data/godzina. Lejek obok nazwy to aktywny filtr na tej kolumnie.

Dlaczego tak się dzieje

Power Query rozróżnia typy Data, Data/godzina i Data/godzina/strefa czasowa i porównuje wartości razem z typem. Dlatego północ 6 października w typie Data/godzina nie jest równa dacie 6 października, a w kursie przy scalaniu podkreślamy, że oba pola muszą mieć typ Data. Grupowanie i scalanie traktują każdą inną godzinę jako inną wartość.

Przy typie Data/godzina/strefa czasowa dochodzi przeliczanie. Zmiana typu na Data albo Data/godzina zamienia wartość na czas lokalny komputera, na którym działa zapytanie. W naszym teście na komputerze w strefie UTC+2 wartość 06.10.2026 23:30:00 +00:00 po zmianie typu na Data dała 07.10.2026, a DateTimeZone.ToLocal dała 07.10.2026 01:30 +02:00. DateTime.Date wzięła samą część daty bez przeliczania, czyli 06.10.2026, a DateTimeZone.RemoveZone usunęła strefę i zostawiła 23:30. Dokumentacja Microsoft dodaje, że w Power Query Online przeliczenie na czas lokalny zwraca czas UTC, więc to samo zapytanie w chmurze może przypisać wiersz do innego dnia niż na komputerze.

Jak to rozwiązać krok po kroku

  1. Sprawdź typ po ikonie w nagłówku. Kliknij ikonę i zobacz, która pozycja listy jest zaznaczona: Data/godzina czy Data/godzina/strefa czasowa. Na tej samej liście jest typ Data, do którego zmierzasz.
  2. Dla kolumny Data/godzina zaznacz kolumnę, na karcie Przekształć w grupie Kolumna daty i godziny rozwiń Data i wybierz Tylko data. Ten sam efekt da zmiana typu na Data ikoną w nagłówku albo funkcja DateTime.Date: w naszym teście 06.10.2026 14:30 zamieniło się w 06.10.2026.
  3. Jeśli godzina jest potrzebna, na przykład do analizy ruchu w sklepie, nie usuwaj jej. Dodaj obok kolumnę niestandardową z formułą DateTime.Date([Czas]) i ustaw jej typ Data. Ta kolumna posłuży do grupowania, scalania i relacji, a oryginał zostanie.
  4. Dla kolumny Data/godzina/strefa czasowa najpierw zdecyduj, w jakiej strefie liczysz dni. Dla raportu w czasie polskim przelicz strefę jawnie: DateTimeZone.SwitchZone([Czas], 2) zamieniło w teście 06.10.2026 23:30 +00:00 na 07.10.2026 01:30 +02:00, a DateTime.Date z tego wyniku dało 07.10.2026. Liczba godzin wpisana na sztywno nie uwzględnia zmiany czasu, bo zimą Polska ma przesunięcie +1, a latem +2.
  5. Na komputerze w Polsce zmianę czasu uwzględnia DateTimeZone.ToLocal, bo bierze strefę z systemu: w teście w październiku dała przesunięcie +02:00. W usłudze Power BI i w Power Query Online ta funkcja zwraca jednak czas UTC, więc w zapytaniach odświeżanych w chmurze przesunięcie wyliczaj z daty albo przechowuj daty w UTC.
  6. Jeśli system zapisuje czas lokalny i tylko dokleja do niego strefę, usuń ją bez przeliczania funkcją DateTimeZone.RemoveZone, a potem wybierz Tylko data. Na końcu ustaw typ Data. Przy ładowaniu do Lakehouse w Fabric to konieczne: według dokumentacji Microsoft typ Data/godzina/strefa czasowa nie jest obsługiwany w tym miejscu docelowym.

Jak sprawdzić, że zadziałało

Pogrupuj dane po nowej kolumnie dat i sprawdź liczbę wierszy. W naszym teście dwie transakcje z 6 października po zamianie na datę dały jedną grupę z sumą 30. Scalenie z kalendarzem po kolumnie typu Data znajduje teraz pary, w teście jedną na jeden wiersz. Przy danych UTC porównaj z systemem źródłowym kilka transakcji z okolic północy: zdarzenie z 23:30 UTC ma trafić do tego dnia, który obowiązuje w Twoim raporcie.

Żeby problem nie wrócił, ustal jedną zasadę dla całego modelu: wszystkie daty liczysz w UTC albo wszystkie w czasie polskim i przeliczasz je jawnie w jednym miejscu zapytania. Nowe źródło z bazy albo API sprawdzaj po ikonie typu w nagłówku, zanim połączysz je z kalendarzem.

Wróć do listy: 88 najczęstszych pytań i problemów związanych z Power Query

Baner szkolenia Microsoft Excel - Power Query w JSystems z edytorem Power Query na ekranie laptopa

Szkolenie Microsoft Excel - Power Query --> Dwa dni warsztatów z Excela: pobieranie danych z plików, folderów, SharePointa i baz SQL, ich czyszczenie i łączenie w Power Query, praca w języku M, a na koniec model danych i oparta na nim tabela przestawna. Prowadzi Sebastian Stasiak.

To szkolenie może być dofinansowane dla Ciebie z KFS lub BUR.

★★★★★Średnia ocena naszych szkoleń w Google: 5/5

Najczęściej zadawane pytania

Dlaczego scalanie z kalendarzem nie znajduje dopasowań, choć daty są te same?
Kolumna w jednej tabeli ma typ Data/godzina, a w drugiej Data. Power Query porównuje wartości razem z typem i w naszym teście nawet północ 6 października nie pasowała do daty 6 października. Ustaw w obu tabelach typ Data.
Czym różni się DateTime.Date od zmiany typu na Data przy kolumnie ze strefą czasową?
DateTime.Date bierze samą część daty bez przeliczania, więc 23:30 UTC 6 października daje 6 października. Zmiana typu na Data przelicza wartość na czas lokalny komputera i w naszym teście w strefie UTC+2 dała 7 października. Wybierz świadomie, w której strefie liczysz dni.
Co dzieje się z kolumną ze strefą czasową po załadowaniu do Power BI?
Według dokumentacji Microsoft typ Data/godzina/strefa czasowa jest przy ładowaniu do modelu zamieniany na Data/godzina. Bezpieczniej przeliczyć strefę w Power Query samodzielnie, żeby wiedzieć, jaki czas trafia do raportu.
Czy mogę zostawić godzinę w danych?
Tak, jeśli jest potrzebna, na przykład do analizy sprzedaży w ciągu dnia. Dodaj wtedy obok osobną kolumnę z samą datą, na przykład formułą DateTime.Date([Czas]), i to ją łącz z kalendarzem. Godzinę możesz też wydzielić do osobnej kolumny poleceniem Tylko godzina.

Komentarze (0)

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

Brak komentarzy...