Blog JSystems - uwalniamy wiedzę!

Szukaj

Power BI - Komunikaty błędów DAX

Błąd składni DAX - przecinek czy średnik i nieoczekiwany znak w formule

W skrócie

  • Błąd składni DAX przy przecinku albo średniku to komunikat w rodzaju „The syntax for ',' is incorrect.”, gdy formuła używa innego separatora listy albo dziesiętnego niż ten ustawiony w Power BI Desktop.
  • Standardowe separatory DAX to przecinek między argumentami i kropka w liczbach dziesiętnych. Polskie ustawienia Windows mają średnik i przecinek, a edytory tekstu w rodzaju Worda potrafią zamienić cudzysłowy na drukarskie, których DAX nie rozpoznaje.
  • Ustaw standardowe separatory w opcjach, pisz liczby z kropką i bez spacji, tekst w zwykłym cudzysłowie, a nazwy tabel ze spacją albo polską literą w apostrofach.

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ę.

Jak to wygląda w praktyce

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.”).

  • Średnik między argumentami, CALCULATE([Łączna sprzedaż]; DimSklepy[Miasto] = "Kraków"): „The syntax for ';' is incorrect.”
  • Przecinek dziesiętny, [Łączna sprzedaż] * 1,23: „The syntax for ',' is incorrect.”
  • Spacja w liczbie, [Łączna sprzedaż] > 1 000 000: „The syntax for '000' is incorrect.”
  • Nazwa tabeli ze spacją bez apostrofów, MAX(Rabat proc[Rabat proc]): „The syntax for 'proc' is incorrect.”
  • Drukarski cudzysłów z Worda, 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, „.”).
  • Polska litera w nazwie tabeli bez apostrofów, MAX(Elastyczność[Value]): nieprawidłowy token „ś”. Tak samo skończyła się nazwa miary bez nawiasów kwadratowych: token „Ł”.
  • Przecinek na końcu listy argumentów: „Argument „3” w funkcji CALCULATE jest wymagany.” (w angielskiej wersji: „Argument '3' in CALCULATE function is required.”).

Dlaczego tak się dzieje

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.

Co zrobić krok po kroku

  1. Kliknij Plik > Opcje i ustawienia > Opcje, w sekcji Globalne wybierz Ustawienia regionalne i znajdź grupę Separatory języka DAX. Zaznacz (Zalecane) Użyj standardowych separatorów języka DAX. Wtedy formuły z dokumentacji, z kursu i z tego posta działają bez przeróbek.
  2. Zamień średniki między argumentami na przecinki, także w nawiasach klamrowych listy. Na modelu Nordvelli poprawiona formuła dała 50 479 566,75 zł sprzedaży w Krakowie, a lista dwóch miast w IN 78 334 427,94 zł.
    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"})
  3. Liczby dziesiętne pisz z kropką. [Łą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
  4. Duże liczby wpisuj bez spacji: 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.
  5. Nazwę tabeli ze spacją albo polską literą weź w apostrofy, a tekst w zwykły cudzysłów z klawiatury. Na Nordvelli 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")
  6. Gdy komunikat wskazuje znak, który wygląda dobrze, szukaj błędu przed nim. Niedomknięty cudzysłów 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.
  7. Gdy składnia jest poprawna, a komunikat mówi o kolumnie, to już inny błąd. 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.

Jak sprawdzić, że problem zniknął

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.

Źródła i sposób sprawdzenia

  • Microsoft Learn: DAX syntax (nazwy tabel w apostrofach, cudzysłowy z innych dokumentów) (źródło)
  • Microsoft Learn: DAX queries (źródło)
  • Microsoft Learn: DIVIDE function (DAX) (źródło)
  • Sprawdzone zapytaniami DAX na modelu Nordvelli: średnik, przecinek dziesiętny, spacja w liczbie, nazwy bez apostrofów, drukarskie cudzysłowy, niedomknięte nawiasy i cudzysłów, poprawne wersje formuł.

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

Najczęściej zadawane pytania

Przecinek czy średnik w formułach DAX w Power BI?
Przy standardowych separatorach DAX argumenty oddziela przecinek, a część dziesiętną kropka. Średnik działa tylko przy zlokalizowanych separatorach w polskich ustawieniach Windows. Ustawienie zmienisz w Plik, Opcje i ustawienia, Opcje, Ustawienia regionalne, Separatory języka DAX.
Dlaczego średnik w formule DAX daje błąd składni?
Przy standardowych separatorach DAX argumenty oddziela przecinek, więc silnik nie rozpoznaje średnika i zgłasza błąd składni z tym znakiem w treści: po angielsku komunikat zaczyna się od słów The syntax for, a w polskich tekstach silnika od słów Składnia tokenu. Zamień średniki na przecinki albo przełącz separatory na zlokalizowane.
Dlaczego formuła DAX wklejona z Worda daje błąd nieprawidłowy token?
Word potrafi zamienić zwykły cudzysłów na drukarski, a DAX rozpoznaje tylko zwykły. Silnik zgłasza wtedy nieprawidłowy token i podaje ten znak. Przepisz cudzysłowy z klawiatury albo wklej formułę najpierw do Notatnika.
Kiedy nazwę tabeli w DAX trzeba wziąć w apostrofy?
Gdy nazwa ma spację, znak specjalny albo literę spoza zakresu ANSI, w tym każdą polską literę. Na modelu Nordvelli Rabat proc bez apostrofów dał błąd składni, a nazwa z literą ś nieprawidłowy token. W apostrofach obie zadziałały.

Komentarze (0)

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

Brak komentarzy...