Blog JSystems - uwalniamy wiedzę!
Blog JSystems - uwalniamy wiedzę!
Power BI - Komunikaty błędów DAX
Nie można przekonwertować wartości typu Text na typ Date - daty z tekstu w DAX
Tekst „03/04/2024” zapisany w układzie miesiąc/dzień/rok oznacza 4 marca, a DATEVALUE w DAX zamienia go na 3 kwietnia i nie zgłasza żadnego błędu. To cicha postać problemu, którego głośna wersja przerywa kolumnę obliczeniową albo miarę komunikatem, że nie można przekonwertować wartości typu Text na typ Date. Pokazujemy oba przypadki na modelu Nordvelli, jak czytać ustawienia regionalne modelu i które formuły dają daty bez niespodzianek.
Silnik przerywa obliczenie komunikatem z wartością, której nie odczytał. Na modelu Nordvelli DATEVALUE("2024-13-01") dało: „Nie można przekonwertować wartości „2024-13-01” typu Text na typ Date.” (w angielskiej wersji: „Cannot convert value '2024-13-01' of type Text to type Date.”). Ten sam komunikat dostaliśmy dla tekstu „brak daty” i dla liczby: DATEVALUE(20241015) zamienia liczbę na tekst i zgłasza „Nie można przekonwertować wartości „20241015” typu Text na typ Date.”. W kolumnie obliczeniowej na kluczu FaktZwroty[DataZwrotu] silnik podał pierwszą wartość, na której się zatrzymał: „Cannot convert value '20220201' of type Text to type Date.”.
Druga postać jest groźniejsza, bo nie ma komunikatu. Zapisaliśmy każdą z 1826 dat kalendarza Nordvelli jako tekst w układzie miesiąc/dzień/rok i zamieniliśmy z powrotem przez DATEVALUE. Zgodnych wyszło 1166. W pozostałych 660 dniach dzień zamienił się z miesiącem: tekst „03/04/2024” stał się 3 kwietnia, a „10/15/2024” poprawnie 15 października, bo miesiąca 15 nie ma.
Zobacz też: Szkolenie Zaawansowany DAX w Power BI
Według dokumentacji Microsoft DATEVALUE odczytuje tekst według ustawień regionalnych i ustawień daty modelu. Gdy to się nie uda, próbuje innych formatów, więc w jednej kolumnie część wierszy może być odczytana jednym formatem, a część drugim. Model Nordvelli ma kulturę pl-PL, co zwraca zapytanie do INFO.MODEL. Dlatego „15.10.2024” i „2024-10-15” dały poprawną datę we wszystkich 1826 wierszach kalendarza, a układ amerykański już nie. Ustawienia regionalne modelu powstają razem z plikiem: w opcjach jest Język modelu, który według opisu w Power BI Desktop dotyczy tylko nowo tworzonego raportu i nie da się go zmienić w istniejącym.
Liczba w rodzaju 20241015 to klucz daty, nie data. W Nordvelli takie klucze mają DimKalendarz[DataID] i FaktZwroty[DataZwrotu]. DATEVALUE zamienia liczbę na tekst „20241015”, którego nie zna żaden format daty, i kończy się błędem. Gdy tekstowa data trafi do porównania bez konwersji, dostajesz inny błąd, opisany w poście o porównaniu wartości różnych typów.
EVALUATE SELECTCOLUMNS(INFO.MODEL(), "Kultura", [Culture]). Na Nordvelli wynik to pl-PL, więc DATEVALUE oczekuje układu dzień, miesiąc, rok albo zapisu rok-miesiąc-dzień.FaktZwroty kolumna poniżej dała daty od 9 stycznia 2022 do 31 maja 2026, a wszystkie 2714 wierszy zgodziły się z datą w DimKalendarz dla tego samego klucza. Wersja z DATEVALUE(FORMAT(FaktZwroty[DataZwrotu], "0000-00-00")) dała ten sam zakres.Data zwrotu =
DATE(
INT(FaktZwroty[DataZwrotu] / 10000),
MOD(INT(FaktZwroty[DataZwrotu] / 100), 100),
MOD(FaktZwroty[DataZwrotu], 100)
)Data z tekstu =
DATE(
VALUE(RIGHT([DataTekst], 4)),
VALUE(MID([DataTekst], 4, 2)),
VALUE(LEFT([DataTekst], 2))
)DATE(2024, 13, 1) dało 1 stycznia 2025, a DATE(2024, 2, 30) 1 marca 2024. Tak opisuje to też dokumentacja Microsoft. Po złożeniu daty z części policz wiersze, w których miesiąc z tekstu różni się od MONTH wyniku.Data lub pusto = IFERROR(DATEVALUE([DataTekst]), BLANK())
CALCULATE([Łączna sprzedaż], DimKalendarz[Data] = DATE(2024, 10, 15)) dało 331 066,17 zł, tyle samo co wersja z literałem dt"2024-10-15", który według dokumentacji Microsoft zastępuje DATEVALUE. Uważaj na tekst bez roku: DATEVALUE("15.10") wziął bieżący rok z zegara komputera.Po konwersji porównaj wynik z datą, którą znasz. Policz wiersze zgodne z kalendarzem, tak jak w kroku 3: na Nordvelli 2714 z 2714. Przy tekście z innego kraju sprawdź dni od 1 do 12, bo tylko w nich dzień może zamienić się z miesiącem bez błędu. Zakres dat po konwersji musi mieścić się w tabeli kalendarza, tu od 1 stycznia 2022 do 31 grudnia 2026, inaczej funkcje czasu dadzą puste wyniki, o czym piszemy w poście o ciągłej tabeli dat.
Ustaw typ Data już w Power Query z ustawieniami regionalnymi źródła, a w DAX zostaw konwersję tylko dla kluczy liczbowych i stałych w formułach.
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...