Blog JSystems - uwalniamy wiedzę!
Blog JSystems - uwalniamy wiedzę!
Power Query w Excelu, Power BI i Fabric
CSV wczytuje się do jednej kolumny - zły ogranicznik w Power Query
Plik CSV w jednej kolumnie to w Power Query częsty problem przy pierwszym imporcie eksportu z systemu sprzedażowego albo księgowego. Pokazujemy, jak rozpoznać zły ogranicznik, gdzie go zmienić w oknie importu i w kodzie M oraz dlaczego awaryjne dzielenie kolumny potrafi po cichu uciąć grosze. Zachowanie funkcji Csv.Document sprawdziliśmy w polskim Excelu na danych w układzie eksportów sprzedaży z kursu.
Po imporcie podgląd ma jedną kolumnę Column1, a w każdej komórce stoi cały wiersz pliku, na przykład 01.01.2026;Nordvella Wrocław;1;2528,62. W pliku rozdzielanym średnikiem czytanym z przecinkiem jako ogranicznikiem dzieje się coś jeszcze: przecinek dziesiętny jest dla Power Query granicą kolumn. W naszym teście komórka zawierała 01.01.2026;Nordvella Wrocław;1;2528, a końcówka 62 zniknęła bez komunikatu o błędzie, bo nie zmieściła się w jedynej kolumnie.
Odwrotna sytuacja daje inny obraz. Plik rozdzielany przecinkami z polskimi kwotami bez cudzysłowów, na przykład Nordvella Wrocław,2528,62, ma w takim wierszu o jedno pole więcej niż w nagłówku. Wynik ma dwie kolumny, a w kolumnie kwoty stoi 2528 zamiast 2528,62.
Plik CSV to tekst, w którym kolumny oddziela umówiony znak. Power Query ustala go przy imporcie i zapisuje w kroku Źródło jako parametr Delimiter funkcji Csv.Document. Opis funkcji podaje, że domyślnym ogranicznikiem jest przecinek. W kodzie z kursu krok wygląda tak:
Csv.Document(Parametr, [Delimiter = ";", Columns = 10, Encoding = 65001, QuoteStyle = QuoteStyle.None])Parametr Columns ustala liczbę kolumn. Według opisu funkcji nadmiarowe wartości w wierszu są wtedy pomijane, a brakujące uzupełniane wartością null. Gdy Columns nie ma, liczbę kolumn wyznaczają dane: w naszym teście pierwszy wiersz bez ogranicznika dał jedną kolumnę, choć dalsze wiersze miały więcej pól. Stąd dwa skutki złego ogranicznika naraz: jedna kolumna i ucięte końcówki pól.
Delimiter i Columns, na przykład z [Delimiter = ",", Columns = 1] na [Delimiter = ";", Columns = 10]. Sama zmiana ogranicznika nie wystarczy: w naszym teście Delimiter = ";" z pozostawionym Columns = 1 dał jedną kolumnę z samą datą, bo pozostałe pola Power Query pominął.Nordvella Wrocław,"2528,62". Przecinek wewnątrz pola nie dzieli wtedy kolumn: w naszym teście wynik miał dwie kolumny i pełną kwotę 2528,62 zarówno z QuoteStyle.None, jak i z QuoteStyle.Csv. Jeśli eksport nie stawia cudzysłowów, poproś o średnik jako ogranicznik.
Po zmianie podgląd powinien mieć tyle kolumn, ile nagłówków ma plik, w eksportach z kursu dziesięć: od Data do Płatność. Sprawdź kwoty z częścią dziesiętną, na przykład kolumnę Wartość netto: wartości muszą mieć grosze, takie jak 2528,62, a nie same złote. Po zmianie typu na liczbę dziesiętną kolumny kwot nie powinny mieć błędów, co pokaże Jakość kolumn na karcie Widok.
Żeby problem nie wrócił, ustal z dostawcą eksportu stały ogranicznik i nie zmieniaj go między plikami. Pliki o różnych ogranicznikach w jednym folderze trzeba rozdzielić, bo krok Źródło w zapytaniu Przekształć przykładowy plik obsługuje jeden ogranicznik dla wszystkich plików.
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...