Blog JSystems - uwalniamy wiedzę!
Blog JSystems - uwalniamy wiedzę!
Power Query w Excelu, Power BI i Fabric
Różne zapisy tej samej nazwy w danych - ujednolicanie wielkości liter w Power Query
Na ten problem trafiasz, gdy dane wpisywało kilka osób albo pochodzą z kilku systemów: ta sama nazwa sklepu, klienta czy produktu występuje w kilku zapisach, a tabela przestawna liczy je osobno. W Power Query wielkie litery ustawisz jednym poleceniem, po którym każdy wyraz zaczyna się wielką literą, ale żeby warianty naprawdę się połączyły, liczy się kolejność kroków. Pokazujemy ją na danych fikcyjnej sieci Nordvella z naszego kursu, razem z pułapką skrótów i sposobem sprawdzenia wyniku.
W kolumnie Sklep ten sam sklep występuje jako „Nordvella Wrocław”, „NORDVELLA WROCŁAW” i „Nordvella Wrocław ” ze spacją na końcu. Lista wartości w filtrze kolumny ma kilka pozycji dla jednej nazwy, a tabela przestawna po załadowaniu danych pokazuje osobny wiersz dla każdego zapisu i dzieli między nie sprzedaż.
Skala bywa duża. W kursie, w przepływie danych w Microsoft Fabric uruchomionym celowo bez kroków czyszczenia, zapytanie SQL na tabeli wynikowej pokazało 30 różnych zapisów nazwy sklepu przy 15 sklepach. Ten sam problem dotyczy kodów: „bex-1021 ” zapisany małymi literami ze spacją nie znajdzie pary w katalogu, w którym stoi „BEX-1021”.
Power Query porównuje tekst znak po znaku, więc inna wielkość liter albo spacja na końcu tworzy nową wartość. Polecenie Zamień pierwszą literę każdego wyrazu na wielką odpowiada funkcji Text.Proper, która według swojego opisu zamienia na wielką pierwszą literę każdego wyrazu, a wszystkie pozostałe litery na małe. Sprawdziliśmy w polskim Excelu, że poprawnie obsługuje polskie znaki i łącznik:
Text.Proper("NORDVELLA wROCŁAW") // Nordvella Wrocław
Text.Proper("BIELSKO-BIAŁA") // Bielsko-Biała
Text.Proper("NORDVELLA SP. Z O.O.") // Nordvella Sp. Z O.O.
Text.Proper("ABC SA") // Abc SaDwa ostatnie wyniki pokazują pierwszą pułapkę: skróty i formy prawne też dostają małe litery. Druga pułapka to spacje. Zmiana wielkości liter ich nie usuwa, więc „Nordvella Wrocław ” zostaje osobną wartością. W naszym teście trzy warianty nazwy po samym Text.Proper dały dwie różne wartości, a po Text.Proper(Text.Trim(_)) jedną.
Text.Replace(Text.Proper([Kontrahent]), "Sp. Z O.O.", "Sp. z o.o."), która w naszym teście dała „Nordvella Sp. z o.o.”. Dla pojedynczych słów, takich jak SA, użyj kolumny niestandardowej z formułą Text.Combine(List.Transform(Text.Split(Text.Proper([Kontrahent]), " "), each if List.Contains({"Sa"}, _) then Text.Upper(_) else _), " "). Z tekstu „HURTOWNIA PÓŁNOC SA” powstało „Hurtownia Północ SA”.
Na karcie Widok włącz Rozkład kolumn i Profil kolumny, a na pasku stanu przełącz profilowanie z pierwszych 1000 wierszy na cały zestaw danych. Liczba wartości odrębnych w kolumnie powinna odpowiadać liczbie rzeczywistych obiektów. W kursie po przycięciu i ujednoliceniu wielkości liter kolumna Sklep ma dokładnie 15 wartości odrębnych, po jednej na sklep. Przejrzyj też listę wartości w filtrze kolumny: każda nazwa powinna wystąpić raz.
Żeby nowe warianty nie wracały, trzymaj oba kroki formatowania zaraz po ustawieniu typów. Przy każdym odświeżeniu obejmą także nowe pliki. W przepływie danych Gen2 w Microsoft Fabric dodasz je tymi samymi poleceniami z menu Format na karcie Transformacja.
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...