Blog JSystems - uwalniamy wiedzę!

Szukaj

Power Query w Excelu, Power BI i Fabric

Expression.Error: Nie można znaleźć kolumny w tabeli - jak naprawić zapytanie

W skrócie

  • Komunikat Expression.Error „Nie można znaleźć kolumny w tabeli” zatrzymuje całe zapytanie Power Query, zwykle po nowym eksporcie albo po zmianie nazwy kolumny we wcześniejszym kroku.
  • Kroki Zmieniono typ, Zmieniono nazwy kolumn czy Usunięto kolumny mają nazwy kolumn wpisane na sztywno, a Power Query porównuje je dokładnie, razem z wielkością liter i spacjami.
  • Znajdź pierwszy krok z błędem na liście Zastosowane kroki, popraw w nim nazwę albo usuń automatyczną zmianę typu, a kolumny, których może zabraknąć, obsłuż parametrem MissingField.

Błąd Power Query „Nie można znaleźć kolumny w tabeli” pojawia się zwykle po zmianie pliku źródłowego: zapytanie działało przy poprzednim eksporcie, a przy nowym zatrzymuje się na żółtym pasku. Trafia na niego każdy, kto odświeża raport z plików przysyłanych przez inny dział albo system, a także każdy, kto zmienia nazwy kolumn w środku przepisu. Pokazujemy, skąd się bierze, jak wskazać krok, który go zgłasza, i jak przygotować zapytanie na kolumny, których czasem brakuje.

Jak to wygląda w praktyce

Zamiast podglądu danych edytor pokazuje żółty pasek z komunikatem:

Expression.Error: Nie można znaleźć kolumny „Sklep” w tabeli.
Szczegóły:
    Sklep

W angielskiej wersji Excela ten sam błąd brzmi Expression.Error: The column 'Sklep' of the table wasn't found. W miejscu „Sklep” stoi nazwa kolumny, której szuka krok, a pole Szczegóły powtarza ją jeszcze raz. To najważniejsza wskazówka: od razu wiesz, której nazwy szukać. W panelu Zapytania przy nazwie zapytania pojawia się wykrzyknik zamiast ikony tabeli.

To błąd kroku, a nie błąd w komórce. Błąd w komórce zostawia działające zapytanie z napisem Error w pojedynczych wierszach. Błąd kroku zatrzymuje całe zapytanie, ale kroki położone wyżej na liście Zastosowane kroki nadal pokazują dane po kliknięciu. Na zrzucie z kursu ten sam komunikat dotyczy kolumny Column1 w zapytaniu, które łączy pliki z folderu.

Błąd Power Query Expression.Error: Nie można znaleźć kolumny Column1 w tabeli w kroku zmiany typu w zapytaniu Sprzedaz_miesieczna
Expression.Error: Nie można znaleźć kolumny „Column1” w tabeli. Pasek formuły pokazuje przyczynę: krok Zmieniono typ wskazuje nazwy Column1, Column2 i kolejne, których po ustawieniu nagłówków już nie ma.

Dlaczego tak się dzieje

Power Query zapisuje każdą operację jako krok w języku M, a kroki wskazują kolumny po nazwie. Krok Zmieniono typ, który Power Query dodaje sam po wczytaniu pliku CSV albo po kliknięciu Użyj pierwszego wiersza jako nagłówków, wygląda na przykład tak:

= Table.TransformColumnTypes(#"Nagłówki o podwyższonym poziomie",
    {{"Data", type date}, {"Sklep", type text}, {"Wartość netto", type number}})

Lista nazw jest wpisana na sztywno. Jeśli nowy eksport ma kolumnę „Nazwa sklepu” zamiast „Sklep”, krok szuka nazwy, której już nie ma. Tak samo działają kroki Zmieniono nazwy kolumn, Usunięto kolumny i Usunięto inne kolumny. Sprawdziliśmy w Excelu funkcje wszystkich czterech kroków i każda zgłasza dokładnie ten sam komunikat.

Rozjazd nazw ma zwykle jedno z trzech źródeł:

  • nowy plik ma inny nagłówek albo nie ma jednej z kolumn,
  • kolumnie zmieniono nazwę we wcześniejszym kroku, a późniejszy krok wciąż używa starej, na przykład automatyczna zmiana typu zapamiętała nazwy Column1, Column2 sprzed ustawienia nagłówków,
  • nazwa różni się wielkością liter albo spacją na końcu. „sklep” i „Sklep ” to dla Power Query inne kolumny niż „Sklep”, więc krok wskazujący „Sklep” zgłosi błąd w obu przypadkach.

Gdy brakującą kolumnę wskazuje formuła, na przykład filtr albo kolumna niestandardowa z [Sklep], komunikat brzmi inaczej: Expression.Error: Nie można znaleźć pola „Sklep” w rekordzie. (ang. The field 'Sklep' of the record wasn't found.). Formuła sięga do pola bieżącego wiersza, ale przyczyna jest ta sama.

Jak to rozwiązać krok po kroku

  1. Otwórz zapytanie w edytorze i na liście Zastosowane kroki klikaj kroki od góry. Pierwszy krok, przy którym zamiast danych pojawia się żółty pasek, trzeba poprawić. Kliknij krok tuż nad nim i odczytaj z nagłówków, jak nazywają się kolumny w tym miejscu przepisu.
  2. Wróć do kroku z błędem i spójrz na Pasek formuły (jeśli go nie widzisz, włącz go na karcie Widok). Znajdź w formule nazwę podaną w polu Szczegóły i porównaj ją znak po znaku z nagłówkiem z poprzedniego kroku, łącznie z wielkością liter i spacjami.
  3. Jeśli kolumna zmieniła nazwę na stałe, popraw ją wprost w pasku formuły, na przykład {"Sklep", type text} na {"Nazwa sklepu", type text}, i zatwierdź klawiszem Enter.
  4. Gdy starej nazwy używa wiele kroków, zmień nazwę raz, tuż po źródle. Otwórz Edytor zaawansowany (karta Strona główna), dopisz po kroku z nagłówkami nowy krok #"Ujednolicone nazwy" = Table.RenameColumns(#"Nagłówki o podwyższonym poziomie", {{"Nazwa sklepu", "Sklep"}}, MissingField.Ignore), a w następnym kroku zamień odwołanie #"Nagłówki o podwyższonym poziomie" na #"Ujednolicone nazwy" i kliknij Gotowe. Dzięki MissingField.Ignore ten sam przepis zadziała ze starym i z nowym eksportem.
  5. Jeśli błąd zgłasza automatyczny krok Zmieniono typ, a nazwy zmieniłeś świadomie wcześniejszymi krokami, usuń go krzyżykiem przy nazwie kroku. Typy ustaw raz, na końcu przepisu: zaznacz kolumny i na karcie Przekształć kliknij Wykryj typ danych albo wybierz typ ikoną w nagłówku kolumny.
  6. Żeby automatyczna zmiana typu nie powstawała przy nowych zapytaniach w tym skoroszycie, w Excelu na karcie Dane rozwiń Pobierz dane, wybierz Opcje dodatku Query, a w części Bieżący skoroszyt otwórz Ładowanie danych i w sekcji Wykrywanie typu odznacz Wykrywaj nagłówki i typy kolumn dla źródeł bez struktury.
  7. Kolumny, których w części plików może zabraknąć, obsłuż parametrem MissingField. MissingField.UseNull dodaje brakującą kolumnę z pustymi wartościami, na przykład = Table.SelectColumns(Źródło, {"Data", "Sklep", "Kanał"}, MissingField.UseNull), a MissingField.Ignore ją pomija. W kroku zmiany typu podajesz go w rekordzie opcji: = Table.TransformColumnTypes(Źródło, {{"Kanał", type text}}, [MissingField = MissingField.Ignore]). Ten wariant sprawdziliśmy w Excelu z Microsoft 365.

Jak sprawdzić, że zadziałało

Kliknij ostatni krok na liście Zastosowane kroki: zamiast żółtego paska powinny być dane, a przy zapytaniu w panelu Zapytania znowu ikona tabeli. Kliknij Odśwież podgląd na karcie Strona główna, żeby edytor przeczytał źródło od nowa, a potem Zamknij i załaduj. Jeśli użyłeś MissingField.UseNull, włącz na karcie Widok pole Jakość kolumn. Kolumna pusta w stu procentach to sygnał, że w źródle zabrakło danych, a nie że wszystko jest w porządku.

Nawrotom zapobiegniesz trzema nawykami: ustawiaj typy jednym krokiem na końcu przepisu, zmieniaj nazwy kolumn w jednym miejscu blisko źródła i ustal z właścicielem eksportu, że nagłówki się nie zmieniają. Zanim zmienisz nazwę kolumny w zapytaniu, z którego korzystają inne, otwórz na karcie Widok Zależności zapytań i sprawdź, co jeszcze z niego czyta.

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 zapytanie działało wczoraj, a dziś zgłasza brak kolumny?
Jeśli nikt nie edytował zapytania, zmienił się plik źródłowy: nowy eksport ma inny nagłówek albo nie ma jednej z kolumn. Kroki Power Query pamiętają nazwy kolumn z chwili, w której je utworzyłeś, więc zmiana nagłówka w źródle zatrzymuje pierwszy krok, który tej nazwy używa. Porównaj nagłówki w kroku przed błędem z nazwą podaną w polu Szczegóły.
Czy Power Query rozróżnia wielkość liter w nazwach kolumn?
Tak. Kolumna „sklep” to dla Power Query inna kolumna niż „Sklep”, a „Sklep” ze spacją na końcu to jeszcze inna. Sprawdziliśmy w Excelu, że krok zmiany typu wskazujący „Sklep” zgłasza błąd braku kolumny w obu przypadkach. Porównując nazwy, zwracaj uwagę na wielkie litery i spacje na końcu nagłówka.
Jak sprawić, żeby brak kolumny nie zatrzymywał odświeżania?
Dopisz do kroku parametr MissingField. Wartość MissingField.Ignore pomija brakującą kolumnę, a MissingField.UseNull dodaje ją z pustymi wartościami. Działa w Table.SelectColumns, Table.RemoveColumns i Table.RenameColumns, a w Table.TransformColumnTypes jako pole rekordu opcji. Raport odświeży się wtedy bez części danych, więc sprawdzaj jakość kolumn po każdym odświeżeniu.
Czym różni się ten błąd od komunikatu o brakującym polu w rekordzie?
Komunikat o kolumnie zgłaszają kroki, które dostają listę nazw kolumn, na przykład zmiana typu albo usuwanie kolumn. Gdy brakującą kolumnę wskazuje formuła w filtrze albo w kolumnie niestandardowej, Power Query zgłasza komunikat Expression.Error: Nie można znaleźć pola „Sklep” w rekordzie. W kolumnie niestandardowej błąd ląduje w komórkach, ale naprawa jest ta sama: popraw nazwę w formule albo przywróć kolumnę w źródle.

Komentarze (0)

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

Brak komentarzy...