Blog JSystems - uwalniamy wiedzę!
Blog JSystems - uwalniamy wiedzę!
Power Query w Excelu, Power BI i Fabric
Daty zamieniają dzień z miesiącem po imporcie - amerykański format daty w Power Query
Power Query zamienia dzień z miesiącem najczęściej wtedy, gdy importujesz eksport z systemu w amerykańskiej wersji: sklepu internetowego, platformy reklamowej albo programu księgowego zagranicznej centrali. Część dat wygląda poprawnie, choć wskazuje inny dzień, a część kończy się błędem. Pokazujemy, skąd bierze się zamiana, jak ją naprawić jednym krokiem i jak sprawdzić wynik.
Po imporcie i zmianie typu kolumna Data wygląda na poprawną, bo większość komórek pokazuje daty. Dopiero porównanie z plikiem źródłowym ujawnia, że tekst 03/04/2026 stał się 3 kwietnia, choć system, który zrobił eksport, zapisał tak 4 marca. W tej samej kolumnie część komórek pokazuje Error, a kliknięcie w puste miejsce takiej komórki (nie w sam napis) pokazuje na dole komunikat:
DataFormat.Error: Nie możemy przeanalizować danych wejściowych dostarczonych jako wartość typu Date. W angielskiej wersji Excela: We couldn't parse the input provided as a Date value.
Błąd dotyczy tylko dat z dniem od 13 do 31, na przykład 03/13/2026, bo odczytane jako dzień/miesiąc dają trzynasty miesiąc, którego nie ma. Daty z dniem od 1 do 12 przechodzą bez błędu i są zamienione po cichu. To groźniejsza połowa problemu: sumy miesięczne, filtry zakresu dat i scalanie z kalendarzem liczą się na złych dniach, a nic tego nie sygnalizuje.
Tekst 03/04/2026 nie mówi sam, która liczba jest dniem. Rozstrzyga o tym kultura, czyli ustawienia regionalne (ang. locale) użyte przy zamianie tekstu na datę. Zwykła zmiana typu, także automatyczny krok Zmieniono typ dodawany po imporcie, korzysta z ustawień regionalnych skoroszytu. W Power Query w Excelu domyślnie odpowiadają one formatowi regionalnemu systemu, więc przy polskim formacie regionalnym obowiązuje układ dzień/miesiąc/rok.
Sprawdziliśmy to w polskim Excelu. Date.FromText("03/04/2026") bez wskazania kultury zwraca 3 kwietnia 2026, a z opcją [Culture="en-US"] zwraca 4 marca 2026. Tekst 03/13/2026 bez kultury daje błąd DataFormat.Error, a z kulturą en-US zamienia się w 13 marca. Działa to też w drugą stronę: gdy krok ma na sztywno wpisane "en-US", a plik ma zapis dzień/miesiąc/rok, 03/04/2026 staje się 4 marca, a 13/04/2026 kończy się błędem.
11/30/2026 dniem jest druga liczba, więc plik ma układ miesiąc/dzień/rok. W dużym pliku dodaj tymczasową kolumnę niestandardową z formułą Number.From(Text.BetweenDelimiters([Data], "/", "/")) i posortuj ją malejąco. Wartość większa niż 12 na górze oznacza, że druga liczba to dzień.= Table.TransformColumnTypes(Źródło, {{"Data", type date}}, "en-US"). Kultura działa tylko na kolumny wskazane w tym kroku.12.5 z polskimi ustawieniami daje błąd DataFormat.Error: Nie możemy przekonwertować na typ Number. (ang. We couldn't convert to Number.), a z kulturą en-US zamienia się w 12,5. Takie kolumny zmień w tym samym oknie i z tą samą kulturą co daty.
Dodaj tymczasową kolumnę niestandardową z formułą Date.Day([Data]) i drugą z Date.Month([Data]). Dla tekstu 03/04/2026 odczytanego z kulturą en-US dostaniesz dzień 4 i miesiąc 3. W eksporcie obejmującym cały miesiąc powinny pojawić się dni większe niż 12, a kolumna Data nie może mieć ani jednego błędu. Błędy w dużej tabeli zobaczysz dopiero po przełączeniu profilowania na pasku stanu na Profilowanie kolumn w oparciu o cały zestaw danych, bo domyślnie profil liczy się na pierwszych 1000 wierszach. Na koniec porównaj z plikiem źródłowym jedną znaną datę, najlepiej z dniem od 1 do 12, bo tylko taka zdradzi cichą zamianę.
Żeby problem nie wrócił, ustawiaj typ dat z kulturą źródła od razu w pierwszym kroku zmiany typu i nie przywracaj automatycznego kroku Zmieniono typ. Gdy do folderu albo do zapytania dochodzi nowe źródło z innego systemu, sprawdź jego format daty, zanim dołączysz je do reszty danych. Kontrolne kolumny usuń, gdy wynik się zgadza.
Wróć do listy: 88 najczęstszych pytań i problemów związanych z Power Query
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
Komentarze (0)
Brak komentarzy...