Blog JSystems - uwalniamy wiedzę!
Blog JSystems - uwalniamy wiedzę!
Power Query w Excelu, Power BI i Fabric
Kolumna ma typ Dowolny (ABC123) - dlaczego to problem po załadowaniu
Kolumna niestandardowa kończy się w Power Query ikoną ABC123 w nagłówku, czyli typem Dowolny. W podglądzie liczby wyglądają dobrze, więc łatwo to przeoczyć, a skutki wychodzą dopiero po załadowaniu. Pokazujemy, co dzieje się z taką kolumną w arkuszu, w modelu danych, w Power BI i w Fabric oraz jak ustawić typ, żeby nie wracać do tematu.
Po kliknięciu OK w oknie Kolumna niestandardowa nowa kolumna ma w nagłówku ikonę ABC123. To typ Dowolny, w języku M Any.Type, a nie mieszanka tekstu z liczbami. W kursie widać to na kolumnie Wartość brutto: wartości są wyliczone poprawnie, a kolumna nie ma typu.
Skutki zależą od miejsca, do którego ładujesz dane, i sprawdziliśmy je w polskim Excelu. W tabeli w arkuszu każda komórka zachowuje typ swojej wartości: liczby z kolumny Dowolny dały poprawną sumę, ale tekst, który tylko wygląda jak liczba, trafił do arkusza jako tekst i SUMA zwróciła 0. W modelu danych Excela ta sama kolumna z liczbami dostała typ tekstowy. W Dataflow Gen2 typ Dowolny nie jest obsługiwany w miejscach docelowych, takich jak Lakehouse czy Warehouse.
Osobny przypadek to wartości złożone, na przykład rekordy, w kolumnie Dowolny. Dokumentacja Microsoft opisuje je jako błędy zgłaszane przy ładowaniu, z komunikatem Expression.Error: W tym kontekście nie możemy zwrócić wartości o typie Record. (ang. We cannot return a value of type Record in this context.), gdzie w miejscu Record stoi typ wartości. Takich błędów nie widać w edytorze, bo powstają dopiero przy ładowaniu. W naszym teście tabela w arkuszu pokazała w tej kolumnie tekst [Record] zamiast danych.

Typ kolumny nie wynika z wartości, które policzy formuła. Okno Kolumna niestandardowa w Excelu tworzy krok Table.AddColumn bez czwartego argumentu, więc kolumna dostaje typ Any.Type, nawet gdy każda wartość jest liczbą. Sprawdziliśmy to funkcją Table.Schema: kolumna dodana bez typu ma w polu TypeName wartość Any.Type, choć wartość w pierwszym wierszu to liczba 123.
Typ kolumny i typ wartości to dwie różne rzeczy. Tabela w arkuszu zapisuje każdą wartość osobno, dlatego liczby przechodzą tam bez kłopotu. Model danych potrzebuje jednego typu dla całej kolumny i z typu Dowolny robi tekst, a miejsca docelowe w Fabric typu Dowolny nie przyjmują. Dlatego dokumentacja Microsoft zaleca, żeby w wyniku zapytania nie zostawiać kolumn typu Dowolny.
Table.TransformColumnTypes, która zamienia wartości na wskazany typ.= Table.AddColumn(Poprzedni, "Wartość brutto", each Number.Round([Wartość netto] * (1 + [Stawka VAT]), 2), type number). Dla liczb całkowitych użyj Int64.Type, dla tekstu type text.type number miała w schemacie Number.Type, a wartość dalej była tekstem. Gdy formuła może zwrócić tekst, na przykład fragment wycięty z opisu, ustaw typ przez Zmień typ, który naprawdę konwertuje wartości.= Table.Schema(NazwaPoprzedniegoKroku). W kolumnie TypeName każda pozycja Any.Type to kolumna bez typu. Po sprawdzeniu usuń ten krok krzyżykiem.Po poprawce nagłówek kolumny pokazuje ikonę 1.2 albo 123 zamiast ABC123. Krok Table.Schema pokazuje dla tej kolumny Number.Type zamiast Any.Type, tak samo po zmianie typu przyciskiem, jak po dopisaniu czwartego argumentu. Po odświeżeniu modelu danych kolumna ma typ liczbowy, a w Dataflow Gen2 typy z zapytania przechodzą do mapowania kolumn miejsca docelowego bez zmian, tak jak w kursie przy tabeli w Lakehouse.
Żeby problem nie wrócił, ustawiaj typ od razu po każdej kolumnie niestandardowej, a zapytanie, które trafia do modelu albo do Fabric, kończ przeglądem ikon we wszystkich nagłówkach. Kolumna z ikoną ABC123 na końcu zapytania to sygnał, że brakuje kroku zmiany typu.
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...