Blog JSystems - uwalniamy wiedzę!
Blog JSystems - uwalniamy wiedzę!
Power Query w Excelu, Power BI i Fabric
Dołączanie zapytań: kolumny się rozjeżdżają i pojawiają się puste wartości
Polecenie Dołącz zapytania w Power Query daje null tam, gdzie spodziewasz się liczb, gdy tabele źródłowe mają choć trochę inaczej nazwane kolumny. Trafisz na to przy łączeniu eksportów z różnych systemów, oddziałów albo okresów, na przykład gdy dział ekspansji Nordvelli przysyła sprzedaż nowych sklepów w osobnym pliku, jak w lekcji o dołączaniu zapytań. Pokazujemy, jak Power Query dopasowuje kolumny, jak znaleźć tę, która się rozjechała, i jak ujednolicić nazwy, zanim tabele trafią do jednej.
Okno Dołączanie pokazuje tylko nazwy tabel, a nie ich kolumny, więc niczego nie ostrzega. Problem widać dopiero w wyniku: obok oczekiwanej kolumny pojawia się druga o prawie takiej samej nazwie, a wartości są rozdzielone między nie. W naszym teście w Excelu dołączyliśmy tabelę z kolumnami Sklep i Ilość do tabeli z kolumnami Sklep i Ilosc (bez ogonka). Wynik miał trzy kolumny, Sklep, Ilość i Ilosc:
Suma kolumny Ilość pomija więc całą drugą tabelę, a raport zbudowany na tej kolumnie pokazuje za mało. Ten sam efekt dały w teście nazwa ze spacją na końcu (Ilość ) i nazwa pisana małą literą (ilość).

Dołączanie (ang. append) zapisuje się w języku M jako Table.Combine({tSklepy, tSklepy_nowe}). Funkcja układa wiersze tabel jeden pod drugim i dopasowuje kolumny po nazwach, nie po kolejności. Wynikają z tego wprost dwie rzeczy:
Ilosc to Ilość, więc dokłada kolumnę i wypełnia ją wartością null w wierszach tabel, które jej nie mają.Tak samo działa dołączanie co najmniej trzech tabel: w teście trzecia tabela miała dodatkową kolumnę Uwagi i wiersze dwóch pierwszych dostały w niej null. Gdy nazwa się zgadza, a typy są różne (liczba w jednej tabeli, tekst w drugiej), kolumna wyniku traci typ: w teście dostała typ ogólny Any.Type.
= List.Transform(Table.ColumnNames(Sprzedaz_nowe_sklepy), each "[" & _ & "]"), podstawiając nazwę swojego zapytania. Każda nazwa pojawi się w nawiasach kwadratowych, więc nazwa ze spacją wyświetli się jako [Ilość ]. Porównaj listy wszystkich dołączanych zapytań.Table.RenameColumns. W teście zmiana Ilosc na Ilość dała jedną kolumnę z wartościami 5 i 7, bez null.= Table.TransformColumnNames(#"Poprzedni krok", Text.Trim), podstawiając nazwę poprzedniego kroku. Formuła przycina wszystkie nazwy naraz, także w przyszłych plikach. W teście kolumna Ilość po tym kroku połączyła się z Ilość.Table.Combine wystarczy odświeżyć, bo poprawione nazwy przejdą do wyniku. Nowe dołączenie tworzysz tak: zaznacz pierwsze zapytanie, na karcie Strona główna rozwiń strzałkę przy Dołącz zapytania, wybierz Dołącz zapytania jako nowe i wskaż tabele w polach Pierwsza tabela i Druga tabela. Przy większej liczbie źródeł zaznacz Co najmniej trzy tabele.Po dołączeniu porównaj listę kolumn wyniku z oczekiwaną. Kolumny nadmiarowe pokaże formuła w pustym zapytaniu = List.Difference(Table.ColumnNames(Sprzedaz_razem), {"Sklep", "Ilość"}), w której w nawiasach klamrowych wpisujesz nazwy oczekiwane, a Sprzedaz_razem to nazwa zapytania z dołączeniem. Pusta lista oznacza zgodność. W teście formuła zwróciła Ilosc, czyli dokładnie kolumnę, która się rozjechała. Drugi test to lista wartości w filtrze kolumny: null w kolumnie, która w źródłach jest zawsze wypełniona, wskazuje źródło z inną nazwą. Gdy pliki przychodzą od różnych osób, zostaw krok z Table.TransformColumnNames na stałe, a zmianę nazwy w nagłówku powtórz w każdym nowym źródle, zanim je dołączysz.
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...