Blog JSystems - uwalniamy wiedzę!
Blog JSystems - uwalniamy wiedzę!
Power Query w Excelu, Power BI i Fabric
Expression.Error: Jest za mało elementów w wyliczeniu, aby można było zakończyć operację
Komunikat Power Query „Jest za mało elementów w wyliczeniu” dotyczy elementów listy albo wierszy tabeli i nie wskazuje wprost pliku ani kolumny. Trafia na niego każdy, kto łączy pliki z folderu, w którym nagle nie ma pasujących plików, albo pisze formuły pobierające pierwszy wiersz wyniku filtra. Pokazujemy, jak znaleźć pustą listę, ustalić, dlaczego jest pusta, i zabezpieczyć zapytanie tak, żeby zamiast ogólnego błędu dostać czytelną informację.
Komunikat ma pełną postać:
Expression.Error: Jest za mało elementów w wyliczeniu, aby można było zakończyć operację.Angielski oryginał to Expression.Error: There weren't enough elements in the enumeration to complete the operation. Gdy błąd stoi w kroku, od którego zależą kolejne, zatrzymuje całe zapytanie i zamiast danych widać żółty pasek.
Przy łączeniu plików z folderu błąd pokazuje zapytanie pomocnicze Przykładowy plik, a razem z nim zapytanie główne. W kolumnie niestandardowej, która pobiera pierwszy wiersz wyniku filtra, błąd dostają tylko wiersze bez trafienia. W naszym teście kolumna z kursem waluty dała kurs dla EUR i Error dla waluty, której nie było w tabeli kursów.
Zapis {0} pobiera pierwszy element listy albo pierwszy wiersz tabeli, {1} drugi i tak dalej, licząc od zera. Jeśli lista ma mniej elementów, niż wymaga numer, silnik zgłasza ten błąd. Sprawdziliśmy w Excelu trzy postaci: pierwszy element pustej listy, pierwszy wiersz tabeli bez wierszy i drugi element listy jednoelementowej. Każda daje ten sam komunikat.
Pusta lista bierze się z kilku typowych miejsc:
{0}[Content], a lista jest pusta, bo folder jest pusty, parametr ze ścieżką wskazuje inny folder albo filtr po nazwie lub rozszerzeniu odrzucił wszystkie pliki,Text.Split([Nr paragonu], "-"){1} pobiera drugi fragment, a w danych trafia się numer bez myślnika.W kodzie przepływu danych z naszego kursu zapytanie Przykładowy plik kończy się krokiem Nawigacja = #"Filtrowano pliki ukryte"{0}[Content], a zapytanie główne pobiera nazwy kolumn do rozwinięcia z wyniku dla tego pliku. Dlatego pusta lista plików zatrzymuje oba zapytania. W naszym teście folder z jednym plikiem CSV i ukrytym plikiem ~$dane.xlsx po filtrze na widoczne pliki .xlsx dał pustą listę i dokładnie ten błąd.
{0}. Potem kliknij krok, do którego ta formuła się odwołuje. Jeśli jest pusty, znalazłeś przyczynę i trzeba ustalić, dlaczego nic w nim nie ma.List.First(lista, "brak plików") zwraca wartość domyślną zamiast błędu, operator ? po numerze, na przykład Text.Split([Nr paragonu], "-"){1}?, zwraca null, a przy tabelach sprawdzaj pustkę przed pobraniem wiersza: if Table.IsEmpty(Wiersz) then null else Wiersz{0}[mid]. Tak zabezpieczona jest nasza funkcja fxKursNBP, która pobiera kurs waluty z tabeli NBP.if Table.IsEmpty(Pliki) then error "Brak plików z danymi w folderze" else Pliki{0}[Content]. W naszym teście Power Query pokazał wtedy Expression.Error: Brak plików z danymi w folderze, czyli informację zrozumiałą bez zaglądania do kodu.![Edytor zaawansowany Power Query z kodem funkcji kursu walut NBP: Table.SelectRows, a potem if Table.IsEmpty(Wiersz) then null else Wiersz{0}[mid]](https://jsystems.pl/new_page_resources/images/POWER_QUERY_PRZEWODNIK/pq-excel-funkcja-kod.png)
Po poprawce kliknij ostatni krok zapytania głównego: powinny być dane. Przy łączeniu folderu zaznacz kolumnę Source.Name, włącz na karcie Widok pole Rozkład kolumn i porównaj liczbę wartości odrębnych z liczbą plików w folderze. Zabezpieczenia przetestuj na pustym przypadku: tymczasowo zmień filtr tak, żeby niczego nie zwracał, i sprawdź, czy dostajesz wartość domyślną, null albo własny komunikat, a nie ogólny błąd. Potem przywróć filtr.
Nawrotom zapobiegniesz, trzymając w folderze źródłowym tylko pliki danych i nie opierając filtrów na fragmentach nazw, które się zmieniają, takich jak rok. Jeśli zabezpieczasz kroki przez null, sprawdzaj po odświeżeniu udział pustych wartości w Jakości kolumn, bo null w miejscu kursu czy pliku to sygnał, który łatwo przeoczyć.
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...