Blog JSystems - uwalniamy wiedzę!

Szukaj

Power Query w Excelu, Power BI i Fabric

Expression.Error: Import nie pasuje do żadnego eksportu - literówka i wielkość liter w nazwie funkcji

W skrócie

  • Komunikat „Import nie pasuje do żadnego eksportu, Czy brakuje przywołania modułu?” pojawia się w Power Query, gdy formuła używa nazwy funkcji, kroku albo zapytania, która nie istnieje.
  • Język M rozróżnia wielkość liter, więc text.upper to inna nazwa niż Text.Upper. Ten sam błąd daje literówka w nazwie funkcji i odwołanie do kroku, którego nazwę zmieniono w kodzie.
  • Odczytaj nazwę stojącą po słowie Import, popraw jej pisownię albo nazwę kroku w Edytorze zaawansowanym, a poprawne nazwy funkcji sprawdzaj w podpowiedziach i w liście #shared.

Błąd „Import nie pasuje do żadnego eksportu” w Power Query oznacza, że formuła używa nazwy, której silnik nie zna. Trafia na niego każdy, kto wpisuje funkcje ręcznie w kolumnie niestandardowej, wkleja kod z innego skoroszytu albo poprawia nazwy kroków w Edytorze zaawansowanym. Pokazujemy, jak z komunikatu odczytać błędną nazwę, jak ją poprawić i jak sprawdzić, czy funkcja o danej nazwie istnieje.

Jak to wygląda w praktyce

Komunikat ma postać, w której w miejscu nazwy stoi to, czego silnik nie rozpoznał. Dla literówki w nazwie funkcji wygląda tak:

Expression.Error: Import Text.Uper nie pasuje do żadnego eksportu, Czy brakuje przywołania modułu?

Angielski oryginał to The import Text.Uper matches no exports. Did you miss a module reference? Polska wersja ma w środku przecinek i wielką literę w słowie Czy, tak jak w Excelu. Sprawdziliśmy w polskim Excelu, że ten sam komunikat dostają:

  • funkcja zapisana małymi literami: text.upper("a") i table.addcolumn(...),
  • literówka w nazwie funkcji: Text.Uper("a"),
  • odwołanie do kroku, którego nie ma, na przykład #"Zmieniono typ1", gdy krok nazywa się Zmieniono typ,
  • nazwa kroku zapisana inną wielkością liter, na przykład krok zamiast Krok,
  • odwołanie do zapytania, którego nie ma w skoroszycie.

Gdy błędna nazwa stoi w formule kolumny niestandardowej, błąd ląduje w komórkach nowej kolumny. Gdy stoi w kroku, od którego zależą kolejne, zatrzymuje całe zapytanie.

Dlaczego tak się dzieje

Każda nazwa w formule musi wskazywać coś, co istnieje: funkcję z biblioteki standardowej, krok tego samego zapytania albo inne zapytanie w skoroszycie. Jeśli silnik nie znajdzie nazwy w żadnym z tych miejsc, traktuje ją jak odwołanie z zewnątrz (import) i zgłasza, że nic o tej nazwie nie jest udostępnione (eksport). Stąd sformułowanie komunikatu.

Pierwsze źródło kłopotu to wielkość liter. Język M rozróżnia ją wszędzie: Text.Upper istnieje, a text.upper i Text.upper już nie. Tak samo nazwy kroków: krok Krok i odwołanie krok to dwie różne nazwy. Nazwy ze spacjami i polskimi znakami zapisuje się w postaci #"Zmieniono typ", a cyfra na końcu, na przykład Zmieniono typ1, tworzy osobną nazwę.

Drugie źródło to ręczna edycja kodu. Zmiana nazwy kroku na liście Zastosowane kroki poleceniem Zmień nazwę zmienia ją też w odwołaniach, ale zmiana wpisana w Edytorze zaawansowanym obejmuje tylko to miejsce, które poprawiłeś. Kod wklejony z innego źródła odwołuje się do kroków z tamtego zapytania, na przykład do kroku Source z angielskiej wersji, a w polskim Excelu pierwszy krok nazywa się Źródło.

Okno Edytor zaawansowany w Power Query z kodem M zapytania Sprzedaz_wg_sklepu_i_miesiaca: kroki od Źródło do Zmieniono typ między let i in
Kod M zapytania Sprzedaz_wg_sklepu_i_miesiaca w Edytorze zaawansowanym. Każdy krok wskazuje poprzedni po nazwie, a nazwy ze spacjami, takie jak Wstawiono początek miesiąca, są zapisane ze znakiem # i w cudzysłowie.

Jak to rozwiązać krok po kroku

  1. Przeczytaj nazwę stojącą w komunikacie między słowem Import a słowami nie pasuje. To dokładnie ta nazwa, której silnik nie zna, z zachowaniem wielkości liter.
  2. Jeśli to nazwa funkcji, popraw jej pisownię: każdy człon zaczyna się wielką literą, a człony rozdziela kropka, na przykład Text.Upper, Table.AddColumn, Date.AddDays. W oknie Kolumna niestandardowa klawisze Ctrl+Spacja wyświetlają listę dostępnych kolumn i sugestie formuł, więc nazwę możesz wybrać zamiast ją wpisywać.
  3. Gdy nie masz pewności, jak brzmi nazwa funkcji, sprawdź ją w liście funkcji silnika. Utwórz puste zapytanie (na karcie Strona główna rozwiń Nowe źródło, wybierz Inne źródła i Puste zapytanie) z formułą = List.Select(Record.FieldNames(#shared), each Text.StartsWith(_, "Text.Up")). W naszym teście zwróciła Text.Upper. Pytanie Record.HasFields(#shared, "text.upper") zwróciło false, a dla Text.Upper true.
  4. Jeśli to nazwa kroku, otwórz Edytor zaawansowany (karta Strona główna) i porównaj nazwę z komunikatu z nazwami kroków między let a in. Popraw odwołanie tak, żeby zgadzało się co do znaku, łącznie z zapisem #"..." dla nazw ze spacjami i cyfrą na końcu, i kliknij Gotowe.
  5. W kodzie wklejonym z innego zapytania zamień nazwy kroków na te z Twojego, na przykład Source na Źródło, albo zmień nazwę swojego kroku na liście Zastosowane kroki prawym przyciskiem i poleceniem Zmień nazwę (albo klawiszem F2), żeby pasowała do wklejonego kodu.
  6. Jeśli to nazwa zapytania, sprawdź w panelu Zapytania, jak nazywa się ono teraz, i popraw odwołanie. Zanim zmienisz nazwę zapytania, z którego korzystają inne, otwórz na karcie Widok okno Zależności zapytań i sprawdź, co z niego czyta.

Jak sprawdzić, że zadziałało

Po poprawce kliknij krok, w którym był błąd: zamiast żółtego paska powinny być dane, a w kolumnie niestandardowej nie powinno być napisów Error. Włącz na karcie Widok pole Jakość kolumn i upewnij się, że przy słowie Błąd stoi 0%. Kliknij też ostatni krok zapytania i zapytania, które z niego korzystają, bo poprawiona nazwa mogła być używana w kilku miejscach.

Nawrotom zapobiegniesz, zmieniając nazwy kroków i zapytań przez interfejs, a nie w kodzie, i wybierając nazwy funkcji z podpowiedzi zamiast pisać je z pamięci. Wklejając gotowy kod, od razu porównaj jego nazwy kroków z nazwami w swoim zapytaniu.

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

Co oznacza dopisek Czy brakuje przywołania modułu?
Silnik traktuje każdą nieznaną nazwę jak odwołanie do czegoś spoza zapytania i podpowiada, że może brakuje odwołania do modułu, który by ją udostępniał. W praktyce oznacza to, że nazwa nie istnieje: jest literówka, zła wielkość liter albo odwołanie do kroku lub zapytania, które zmieniło nazwę.
Czy Power Query rozróżnia wielkość liter w nazwach funkcji i kroków?
Tak. Text.Upper działa, a text.upper i Text.upper dają błąd Import nie pasuje do żadnego eksportu. Tak samo krok nazwany Krok nie zadziała, gdy odwołasz się do niego jako krok. Sprawdziliśmy oba przypadki w polskim Excelu.
Jak sprawdzić, czy funkcja o danej nazwie istnieje?
Najprościej wybrać ją z podpowiedzi w oknie Kolumna niestandardowa po naciśnięciu Ctrl+Spacja. Można też utworzyć puste zapytanie i przeszukać listę nazw z rekordu #shared, który zawiera wszystkie funkcje dostępne w silniku, na przykład filtrując nazwy zaczynające się od Text.
Dlaczego kod wklejony z internetu zgłasza Import Source nie pasuje do żadnego eksportu?
Pierwszy krok zapytania w angielskiej wersji Power Query nazywa się Source, a w polskiej Źródło, więc przykłady z anglojęzycznych źródeł odwołują się do nazwy, której w Twoim zapytaniu nie ma. Zamień w kodzie Source na Źródło albo zmień nazwę swojego kroku tak, żeby nazwy się zgadzały.

Komentarze (0)

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

Brak komentarzy...