Blog JSystems - uwalniamy wiedzę!

Szukaj

Power Query w Excelu, Power BI i Fabric

Nagłówki z każdego pliku lądują w danych po połączeniu plików z folderu

W skrócie

  • Po łączeniu plików z folderu w Power Query nagłówki kolejnych plików lądują w danych jako zwykłe wiersze: tekst „Ilość” w kolumnie liczbowej, błędy po zmianie typu i za dużo wierszy.
  • Nagłówki promowano w zapytaniu głównym, które widzi już jedną sklejoną tabelę. Użyj pierwszego wiersza jako nagłówków działa wtedy tylko na jej pierwszym wierszu, czyli na nagłówku pierwszego pliku.
  • Przenieś promowanie nagłówków do zapytania Przekształć przykładowy plik, które obsługuje każdy plik osobno, usuń stare kroki w zapytaniu głównym i ustaw typy od nowa. Awaryjnie odfiltruj wiersze, w których nazwa kolumny powtarza się jako wartość.

Problem z nagłówkami w danych przy łączeniu plików w Power Query pojawia się, gdy łączysz miesięczne eksporty z folderu, a nagłówki ustawiasz dopiero w zapytaniu głównym. Pokazujemy, po czym go rozpoznasz, z czego wynika i jak przenieść kroki do zapytania, które obsługuje każdy plik osobno. Przykłady opieramy na plikach sprzedaży fikcyjnej firmy Nordvella z naszego kursu.

Jak to wygląda w praktyce

Po kliknięciu Użyj pierwszego wiersza jako nagłówków w zapytaniu głównym (w kursie to Sprzedaz_miesieczna) dane wyglądają poprawnie tylko na początku. Niżej, na granicy plików, trafiasz na wiersze, w których kolumna Sklep zawiera tekst „Sklep”, a kolumna Ilość tekst „Ilość”. Kolumna z nazwą pliku pokazuje, że każdy taki wiersz pochodzi z innego pliku: z drugiego, trzeciego i kolejnych. Ta pierwsza kolumna traci przy okazji nazwę Source.Name i nazywa się teraz tak jak pierwszy plik, na przykład Nordvella_sprzedaz_2026-01.csv, bo promowanie objęło cały pierwszy wiersz.

Po ustawieniu typu liczbowego zbłąkane nagłówki zamieniają się w błędy komórek. Kliknięcie obok napisu Error w takiej komórce pokazuje komunikat DataFormat.Error: Nie możemy przekonwertować na typ Number. (w angielskim Excelu We couldn't convert to Number.), a w szczegółach wartość Ilość. Liczba wierszy jest większa niż suma wierszy danych w plikach: przy N plikach w wyniku zostaje N-1 dodatkowych wierszy nagłówka.

Dlaczego tak się dzieje

Łączenie plików z folderu tworzy kilka zapytań. Funkcja Przekształć plik powstaje z kroków zapytania Przekształć przykładowy plik i Power Query wywołuje ją osobno dla każdego pliku z listy. Zapytanie główne zbiera wyniki tych wywołań w kroku Rozwinięto kolumnę tabeli i układa je jeden pod drugim. Jeśli w pliku przykładowym nagłówki nie zostały promowane, każdy plik wnosi do sklejonej tabeli swój wiersz nagłówka jako zwykły wiersz danych.

Funkcja Table.PromoteHeaders zamienia w nagłówki pierwszy wiersz tej tabeli, na której działa. W zapytaniu głównym to jedna wspólna tabela, więc nagłówki dostaje tylko pierwszy plik, a wiersze nagłówków pozostałych plików zostają w danych. Tak samo zachowuje się każdy krok zależny od położenia wiersza: usunięcie pierwszych wierszy w zapytaniu głównym obetnie wiersze tytułowe tylko z pierwszego pliku.

Edytor Power Query po połączeniu plików z folderu: wiersz nagłówka pierwszego pliku (Data, Nr paragonu, Sklep) stoi w danych, a kolumna Source.Name pokazuje nazwę pliku
Połączone pliki przed porządkowaniem: wiersze tytułowe i wiersz nagłówka stoją w danych jak zwykłe wiersze, a kolumna Source.Name mówi, z którego pliku pochodzą. W panelu zapytań widać grupę zapytań pomocniczych z plikiem przykładowym.

Jak to rozwiązać krok po kroku

  1. Kliknij w panelu Zapytania zapytanie Przekształć przykładowy plik z grupy zapytań pomocniczych. Jeśli nad nagłówkiem stoją wiersze tytułowe, usuń je właśnie tutaj: na karcie Strona główna rozwiń Usuń wiersze i wybierz Usuwanie pierwszych wierszy.
  2. Na tej samej karcie kliknij Użyj pierwszego wiersza jako nagłówków. Power Query doda krok Nagłówki o podwyższonym poziomie, a zwykle od razu także automatyczny krok Zmieniono typ. Ten drugi usuń krzyżykiem na liście Zastosowane kroki, bo typy ustawisz raz, na połączonej tabeli.
  3. Przejdź do zapytania głównego i usuń z listy Zastosowane kroki wszystko, co dodałeś tam ręcznie w tej sprawie: promowanie nagłówków, usuwanie wierszy tytułowych, filtr wiersza Razem. Krok Nagłówki o podwyższonym poziomie pozostawiony w zapytaniu głównym zamieniłby po poprawce w nagłówki pierwszy wiersz danych, na przykład Nordvella Wrocław i 5.
  4. W zapytaniu głównym pojawi się żółty pasek z błędem Expression.Error: Nie można znaleźć kolumny „Column1” w tabeli. (ang. The column 'Column1' of the table wasn't found.). Zgłasza go automatyczny krok Zmieniono typ z chwili łączenia plików, który wskazuje dawne nazwy Column1, Column2 i kolejne. Usuń ten krok krzyżykiem.
  5. Ustaw typy na połączonej tabeli: kliknij nagłówek pierwszej kolumny, naciśnij Ctrl+A, przejdź na kartę Przekształć i kliknij Wykryj typ danych. Kolumna Source.Name ma znowu swoją nazwę, a w kolumnach liczbowych nie ma tekstów z nagłówków.
  6. Wariant awaryjny, gdy nie możesz zmieniać zapytań pomocniczych: w zapytaniu głównym, przed ustawieniem typów, otwórz filtr kolumny Sklep, wejdź w Filtry tekstu, wybierz Nie równa się i wpisz Sklep. Formuła kroku to Table.SelectRows(#"Nagłówki o podwyższonym poziomie", each [Sklep] <> "Sklep"). Pierwszej kolumnie przywróć nazwę Source.Name.

Jak sprawdzić, że zadziałało

W zapytaniu głównym otwórz filtr kolumny Sklep i wyszukaj na liście wartości słowo Sklep: nie powinno go tam być. Włącz na karcie Widok opcję Jakość kolumn i sprawdź, że w kolumnach liczbowych udział błędów wynosi 0%. Porównaj też liczbę wierszy z sumą wierszy danych w plikach. W kursie cztery pliki mają razem 9256 linii paragonów, a każdy zbłąkany nagłówek podniósłby ten wynik o jeden.

Żeby problem nie wrócił, trzymaj się podziału z lekcji: wszystko, co dotyczy pojedynczego pliku (wiersze tytułowe, nagłówki, wiersz Razem), robisz w zapytaniu Przekształć przykładowy plik, a typy danych, duplikaty i scalanie robisz w zapytaniu głównym. Po dodaniu nowego pliku do folderu odśwież wynik i sprawdź, czy liczba wierszy wzrosła dokładnie o liczbę wierszy danych w nowym pliku.

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 po połączeniu plików pierwsza kolumna nazywa się tak jak pierwszy plik?
Krok Użyj pierwszego wiersza jako nagłówków w zapytaniu głównym promuje cały pierwszy wiersz, także wartość w kolumnie Source.Name. Ta kolumna zawiera nazwę pliku, więc nazwa pierwszego pliku staje się nagłówkiem. Gdy promowanie przeniesiesz do zapytania Przekształć przykładowy plik, kolumna Source.Name zachowa swoją nazwę.
Czy wystarczy usunąć błędy po zmianie typu zamiast przenosić kroki?
Usunięcie błędów zabierze zbłąkane nagłówki, ale razem z nimi każdy inny wiersz z błędem, także taki, który sygnalizuje prawdziwy problem w danych. Bezpieczniej usunąć przyczynę w zapytaniu Przekształć przykładowy plik albo odfiltrować wiersze nagłówków po treści, zanim ustawisz typy.
Czy zmiany w zapytaniu Przekształć przykładowy plik obejmą wszystkie pliki z folderu?
Tak. Funkcja Przekształć plik powstaje z kroków tego zapytania i Power Query wywołuje ją osobno dla każdego pliku z folderu. Każdy krok dodany w pliku przykładowym wykona się więc na każdym pliku, także na tych, które trafią do folderu później.
Co zrobić, gdy pliki mają różną liczbę wierszy nad nagłówkiem?
Stała liczba w kroku Usunięto pierwsze wiersze działa tylko wtedy, gdy każdy plik ma tych wierszy tyle samo. Gdy liczba się zmienia, zamień ją w funkcji Table.Skip na warunek, który pomija wiersze aż do wiersza z nazwą pierwszej kolumny, i dopiero potem promuj nagłówki.

Komentarze (0)

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

Brak komentarzy...