Blog JSystems - uwalniamy wiedzę!
Blog JSystems - uwalniamy wiedzę!
Power BI - Komunikaty błędów DAX
DAX nie obsługuje porównywania wartości typu Text z wartościami typu Integer - błąd typów w Power BI
Wystarczy, że identyfikator przyszedł ze źródła jako tekst, a warunek w CALCULATE, FILTER, IF lub SWITCH porównuje go z liczbą: DAX przerywa wtedy obliczenie komunikatem, że nie obsługuje porównywania wartości typu Text z wartościami typu Integer. Podobny błąd porównania daje flaga 0 i 1 zestawiona z TRUE(). Pokazujemy dokładny komunikat, jego odmiany i poprawki sprawdzone na modelu Nordvelli.
Zapytanie albo miara kończy się komunikatem silnika: „Operacje porównania języka DAX nie obsługują porównywania wartości typu Text z wartościami typu Integer. Rozważ użycie funkcji VALUE lub FORMAT w celu przekonwertowania jednej z tych wartości.” (w angielskiej wersji: „DAX comparison operations do not support comparing values of type Text with values of type Integer. Consider using the VALUE or FORMAT function to convert one of the values.”). W komunikatach, które zwrócił nam silnik z polskimi ustawieniami, nazwy typów zostały po angielsku: Text, Integer, Date, True/False.
Na modelu Nordvelli dodaliśmy kolumnę SklepID tekst, czyli numer sklepu zapisany jako tekst. Warunek DimSklepy[SklepID tekst] = 1 w CALCULATE dał dokładnie ten komunikat. W mierze ten sam tekst dostaje przedrostek z nazwą miary: „Błąd obliczania w mierze „FaktSprzedaz”[Test typu]:”, a dalej idzie komunikat o porównaniu bez zmian.
Odmiany, które dostaliśmy na tym samym modelu: przy FaktSprzedaz[CzyZwrot] = TRUE() komunikat mówi o typach Integer i True/False, przy DimKalendarz[Data] >= "2026-01-01" o typach Date i Text. SWITCH zgłasza „Funkcja „SWITCH” nie obsługuje porównywania wartości typu Text z wartościami typu Integer.”, a operator IN pokazuje się w komunikacie jako funkcja „CONTAINSROW”.
Zobacz też: Szkolenie Zaawansowany DAX w Power BI
Według dokumentacji Microsoft operatory porównania w DAX obsługują trzy pary typów: liczbę z liczbą, wartość logiczną z logiczną i tekst z tekstem. Liczbą dla porównania są Integer, liczba dziesiętna, waluta, data i godzina oraz wartość pusta. Każda inna para kończy się błędem. Operatory arytmetyczne działają inaczej: na modelu Nordvelli "1" + 0 dało 1, a "5" * 2 dało 10, bo przy dodawaniu i mnożeniu DAX sam zamienia tekst na liczbę. Stąd zaskoczenie: formuła z mnożeniem działa, a ta sama kolumna w warunku już nie.
Tekst trafia do modelu najczęściej ze źródła. W kursie przepływ danych oddaje identyfikatory Nordvelli jako tekst, więc po podłączeniu w Power BI Desktop SklepID ma typ Tekst, co pokazujemy w lekcji o przepływach danych. Drugie źródło to sama formuła: FORMAT zawsze zwraca tekst. Trzecie to flagi, które w modelu są liczbami 0 i 1, a autor albo Copilot porównuje je z TRUE(). Kolumna CzyZwrot w Nordvelli ma typ Liczba całkowita, więc warunek z TRUE() nie przechodzi.
DimSklepy[SklepID tekst] IN {1, 2} dał komunikat o typach Integer i Text. Zaznacz kolumnę w panelu Dane i na karcie Narzędzia kolumn sprawdź pole Typ danych. Dla SklepID tekst jest tam Tekst.= 1 działa bez zmian w formułach. Gdy Power Query sam ustawił zły typ, przeczytaj dlaczego Power Query wykrywa typ na podstawie pierwszych 200 wierszy.SklepID. Ta droga nadaje się tylko do równości.Sprzedaż sklepu 1 = CALCULATE([Łączna sprzedaż], DimSklepy[SklepID tekst] = "1") Sprzedaż sklepu 1 (FORMAT) = CALCULATE([Łączna sprzedaż], FORMAT(DimSklepy[SklepID], "0") = "1")
DimSklepy[SklepID tekst] > "10" zwrócił 13 sklepów (numery 2-9 i 11-15), a wersja z VALUE poprawne 5. Z tego samego powodu MAX na tej kolumnie dał 9, a nie 15.Sklepy powyżej 10 =
COUNTROWS(
FILTER(DimSklepy, VALUE(DimSklepy[SklepID tekst]) > 10)
)Kod liczbowy = IFERROR(VALUE([Kod]), BLANK())
Sprzedaż zwrócona = CALCULATE([Łączna sprzedaż], FaktSprzedaz[CzyZwrot] = 1)
DimKalendarz[Data] >= DATE(2026, 1, 1) zwróciło 365 dni kalendarza, a ten sam warunek z tekstem „2026-01-01” skończył się błędem typów Date i Text. Gdy daty przyszły jako tekst, zacznij od posta o konwersji tekstu na datę w DAX.
Po poprawce porównaj wynik z wersją na kolumnie o właściwym typie. W widoku zapytań w języku DAX uruchom EVALUATE ROW("Sklep 1", CALCULATE([Łączna sprzedaż], DimSklepy[SklepID] = 1)): na Nordvelli to 34 740 655,15 zł, tyle samo co poprawione miary z kroku 3. Dla zakresów policz wiersze, na przykład 5 sklepów o numerze powyżej 10.
Żeby błąd nie wracał, ustaw typy w Power Query zaraz po wczytaniu źródła, identyfikatory i flagi trzymaj jako liczby, a wynik FORMAT traktuj jako tekst do wyświetlania, nie do warunków. Gdy taki błąd siedzi w mierze, wizualizacja, która ją liczy, nie dostaje danych. Jak to rozpoznać na stronie raportu, opisujemy w poście o komunikacie Nie można wyświetlić elementu wizualnego.
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...