Blog JSystems - uwalniamy wiedzę!
Blog JSystems - uwalniamy wiedzę!
Power BI - Komunikaty błędów DAX
Błąd składni DAX - przecinek czy średnik i nieoczekiwany znak w formule
Błąd składni DAX z przecinkiem albo średnikiem zgłasza Power BI, gdy wklejasz formułę z polskiego Excela, z forum albo z maila i silnik nie rozpoznaje jednego znaku. Trafia na to autor nowej miary, kolumny lub zapytania w widoku zapytań w języku DAX. Pokazujemy dosłowne komunikaty dla siedmiu takich znaków na modelu Nordvelli, ustawienie separatorów w opcjach i jedną pułapkę, w której przecinek nie daje błędu, tylko złą liczbę.
Formuła się nie zatwierdza, a komunikat wskazuje jeden znak albo słowo. Te zapytania uruchomiliśmy na modelu Nordvelli. Komunikaty o składni przyszły po angielsku, a komunikat o brakującym argumencie po polsku. W polskich tekstach silnika ten sam komunikat brzmi „Składnia tokenu „;” jest niepoprawna.” (w angielskiej wersji: „The syntax for ';' is incorrect.”).
CALCULATE([Łączna sprzedaż]; DimSklepy[Miasto] = "Kraków"): „The syntax for ';' is incorrect.”[Łączna sprzedaż] * 1,23: „The syntax for ',' is incorrect.”[Łączna sprzedaż] > 1 000 000: „The syntax for '000' is incorrect.”MAX(Rabat proc[Rabat proc]): „The syntax for 'proc' is incorrect.”DimSklepy[Miasto] = „Kraków”: „Podczas analizy wystąpił następujący błąd składniowy: nieprawidłowy token, wiersz 1, przesunięcie 83, „.” (w angielskiej wersji: „The following syntax error occurred during parsing: Invalid token, Line 1, Offset 83, „.”).MAX(Elastyczność[Value]): nieprawidłowy token „ś”. Tak samo skończyła się nazwa miary bez nawiasów kwadratowych: token „Ł”.Zobacz też: Szkolenie Zaawansowany DAX w Power BI
Power BI Desktop ma dwa sposoby zapisu formuł. W opcjach jest grupa Separatory języka DAX z wyborem między (Zalecane) Użyj standardowych separatorów języka DAX: przecinka (,) jako separatora listy i kropki (.) jako separatora dziesiętnego a Użyj zlokalizowanych separatorów języka DAX: separatory listy i dziesiętne definiuje się za pomocą ustawień regionalnych systemu Windows. W polskich ustawieniach regionalnych Windows separatorem listy jest średnik, a dziesiętnym przecinek, co sprawdziliśmy w systemie maszyny kursu. Formuła napisana w jednym zapisie nie przejdzie w drugim. Dokumentacja Microsoft i kurs używają zapisu standardowego.
Druga grupa przyczyn to znaki, które wyglądają poprawnie. Według dokumentacji Microsoft nazwę tabeli trzeba ująć w apostrofy, gdy ma spację, znak specjalny albo literę spoza zakresu ANSI, więc dotyczy to każdej nazwy z polską literą. Ta sama dokumentacja ostrzega, że cudzysłowy wklejone z dokumentu albo strony bywają innymi znakami niż zwykły cudzysłów. Edytory tekstu, na przykład Word, potrafią zamienić go na drukarskie „ i ”. Liczba skopiowana z polskiego Excela z formatem tysięcy może mieć spacje między grupami cyfr. Podobne pułapki w języku M opisujemy w poście o błędzie Oczekiwano tokenu w Power Query.
Sprzedaż Kraków =
CALCULATE([Łączna sprzedaż], DimSklepy[Miasto] = "Kraków")
Sprzedaż Kraków i Gdańsk =
CALCULATE([Łączna sprzedaż], DimSklepy[Miasto] IN {"Kraków", "Gdańsk"})[Łączna sprzedaż] * 1.23 dało 575 363 261,28 zł. Uważaj na funkcje z argumentem opcjonalnym: DIVIDE([Łączna sprzedaż], 1,23) nie zgłosiło błędu i zwróciło 467 775 009,17 zł, bo silnik odczytał to jako dzielenie przez 1 z wynikiem zastępczym 23. Przy takim zapisie zła liczba przechodzi bez żadnego komunikatu.Sprzedaż brutto = [Łączna sprzedaż] * 1.23
1000000, nie 1 000 000. W polskich ustawieniach Windows separatorem tysięcy jest twarda spacja, więc liczba skopiowana z polskiego Excela z formatem tysięcy może nieść znak, który wygląda jak zwykła spacja. Na Nordvelli liczba z twardymi spacjami dała nieprawidłowy token, a ta sama bez spacji przeszła.MAX('Rabat proc'[Rabat proc]) dało 30, a 'Elastyczność'[Value] zadziałało bez błędu. Formułę z Worda albo z maila przepisz w miejscu cudzysłowów albo wklej ją najpierw do Notatnika i sprawdź znaki.Najwyższy rabat = MAX('Rabat proc'[Rabat proc])
Sprzedaż Kraków = CALCULATE([Łączna sprzedaż], DimSklepy[Miasto] = "Kraków")"Kraków) dał komunikat o składni dla pierwszego słowa za kolejnym cudzysłowem, w naszym zapytaniu „The syntax for 'Wynik' is incorrect.”, bo tekst połknął nawias i resztę formuły aż do tego cudzysłowu. Brak nawiasu zamykającego CALCULATE zgłosił się dopiero przy następnym słowie zapytania. Brak nawiasu kwadratowego w FaktSprzedaz[WartoscNetto) dał nieprawidłowy token z resztą formuły.SUM(FaktSprzedaz[Wartosc Netto]) skończyło się komunikatem „Nie można odnaleźć kolumny „Wartosc Netto” w tabeli „FaktSprzedaz” lub nie można jej użyć w tym wyrażeniu.” (w angielskiej wersji: „Column 'Wartosc Netto' in table 'FaktSprzedaz' cannot be found or may not be used in this expression.”), co opisujemy w poście o błędzie Nie można odnaleźć kolumny.Po poprawce formuła się zatwierdza, a liczba zgadza się z kontrolą. Wklej do widoku zapytań w języku DAX EVALUATE ROW("Kraków", CALCULATE([Łączna sprzedaż], DimSklepy[Miasto] = "Kraków")). Na modelu Nordvelli wynik to 50 479 566,75 zł. Przy formułach z liczbą dziesiętną porównaj wynik z obliczeniem na kalkulatorze, bo zapis z przecinkiem w DIVIDE czy ROUND może przejść bez błędu.
W całym zespole trzymajcie jedno ustawienie separatorów, najlepiej standardowe. Ustawienie regionalne pliku dla liczb i dat z importu to osobna opcja, opisana w poście o przecinku i kropce w liczbach i datach.
Zachowanie programu sprawdziliśmy w Power BI Desktop 2.157 (wydanie z sierpnia 2026 r.) z polskim interfejsem, a przykłady na modelu sieci Nordvella z bezpłatnego kursu Power BI. Microsoft wydaje nową wersję Power BI Desktop co miesiąc, więc nazwy przycisków i limity usługi mogą się zmieniać. Aktualne wartości podaje dokumentacja Microsoft Learn.
Wróć do listy: 131 najczęstszych pytań i problemów związanych z Power BI
Komentarze (0)
Brak komentarzy...