Blog JSystems - uwalniamy wiedzę!
Blog JSystems - uwalniamy wiedzę!
Power Query w Excelu, Power BI i Fabric
Oczekiwano tokenu ',' - błędy składni w Edytorze zaawansowanym Power Query
Na komunikat Oczekiwano tokenu w Power Query trafiasz, gdy poprawiasz kod M ręcznie: dopisujesz krok w Edytorze zaawansowanym, wklejasz formułę z forum albo przenosisz nawyki z formuł Excela. Pokazujemy, jak czytać ten komunikat i jego odmiany, dlaczego wskazuje miejsce za błędem i jak szybko znaleźć brakujący przecinek, nawias albo cudzysłów. Każdy przykład uruchomiliśmy w polskim Excelu.
W Edytorze zaawansowanym pod kodem zamiast komunikatu Nie wykryto błędów składniowych pojawia się opis błędu i odnośnik Pokaż błąd. Gdy zapytanie z takim kodem trafi do podglądu, zobaczysz błąd kroku Expression.SyntaxError: Oczekiwano tokenu ','. (ang. Token ',' expected.). Ten sam mechanizm daje kilka pokrewnych komunikatów:
Znak ","nie może występować przed 'in'. (ang. A ',' cannot precede a 'in'.) - przecinek po ostatnim kroku,Oczekiwano tokenu 'in'. - brak słowa in na końcu kodu,Oczekiwano tokenu '='. - nazwa kroku ze spacją zapisana bez znaku # i cudzysłowów,Oczekiwano tokenu Identifier. - przecinek dziesiętny w liczbie, po którym silnik czeka na nazwę kolejnego kroku,Nieprawidłowy literał. (ang. Invalid literal.) - tekst bez cudzysłowu zamykającego.Gdy kod wykonuje funkcja Expression.Evaluate, komunikat dostaje współrzędne, na przykład Expression.Error: [3,5-3,10] Oczekiwano tokenu ','., czyli wiersz 3, kolumny od 5 do 10.
Kod zapytania ma stały układ. Po let stoją kroki w postaci nazwa = wyrażenie oddzielone przecinkami, po ostatnim kroku przecinka nie ma, a po in stoi nazwa kroku, którego wynik zwraca zapytanie. Silnik dzieli kod na tokeny (nazwy, liczby, teksty, symbole) i po każdym pełnym wyrażeniu czeka na przecinek albo słowo in. Gdy przecinka brakuje, trafia na nazwę następnego kroku i dopiero tam zgłasza błąd:
let
Źródło = Sprzedaz_miesieczna
#"Przefiltrowano wiersze" = Table.SelectRows(Źródło, each [Sklep] = "Gdańsk")
in
#"Przefiltrowano wiersze"Przecinka brakuje na końcu wiersza 2, a komunikat wskazuje [3,5-3,30], czyli wiersz 3 od kolumny 5: nazwę następnego kroku. Z tego samego powodu niedomknięty nawias w let a = Text.Upper("abc" in a daje Oczekiwano tokenu ','. przy słowie in: silnik wciąż czyta argumenty funkcji i czeka na przecinek albo nawias.

in wpisz nazwę nowego kroku. Przecinek zostawiony przed in daje komunikat Znak ","nie może występować przed 'in'., który wskazuje sam przecinek.Text.Start("Nordvella"; 4) kończy się komunikatem Oczekiwano tokenu ','., a Text.Start("Nordvella", 4) zwraca Nord. Liczby w kodzie zapisuj z kropką dziesiętną: let Brutto = 100 * 1,23 in Brutto daje Oczekiwano tokenu Identifier., bo po przecinku silnik czeka na nazwę kolejnego kroku, a 100 * 1.23 zwraca 123.Nieprawidłowy literał., a brak nawiasu zamykającego może wyjść dopiero przy następnym słowie jako Oczekiwano tokenu ','.#"Zmieniono typ", bez niego silnik zgłasza komunikat Oczekiwano tokenu '='. Nazwa bez spacji, także z polskimi literami, jak Źródło, działa bez dodatkowego zapisu.Po kliknięciu Gotowe zaznacz ostatni krok na liście Zastosowane kroki: podgląd ma pokazać dane, a nie żółty pasek z błędem. Sprawdź też, czy po in stoi nazwa nowego kroku. Jeśli została tam nazwa poprzedniego, kod przejdzie kontrolę składni, ale zapytanie zwróci stary wynik: let a = 1, b = a + 1 in a zwraca 1, a nie 2, bo krok, z którego nic nie korzysta, w ogóle się nie wykonuje.
Żeby błąd nie wracał, dodawaj kroki przyciskami na wstążce, bo każdy z nich dopisuje kod z poprawnymi przecinkami. Nazwy kroków zmieniaj na liście Zastosowane kroki (prawy przycisk albo klawisz F2), wtedy Power Query zmienia je także w kodzie. Większe przeróbki w Edytorze zaawansowanym rób na kopii zapytania: prawy przycisk na zapytaniu w panelu zapytań i Duplikuj.
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...