Większość transformacji w Power Query można „wyklikać”, jednak czasem zdarzają się zadania, na które nie ma prostego rozwiązania. Wtedy użytkownik Power Query sięga po Internet i język M. Oto przykład 2 funkcji języka M, które pozwolą Ci wyodrębnić lub usunąć litery, cyfry i symbole z tekstu.
Gdy transformacja Podziel kolumny w Power Query nie wystarcza
Na blogu opisywałem już jedną z nowości w Power Query – Podziel kolumny według przejścia.
Są jednak sytuacje, gdy nie chcemy rozdzielać tekstu, a jedynie oczyścić go z niepotrzebnych znaków czy symboli. I nie chodzi tu o operacje takie jak Przycięcie (usuwa spacje) czy Wyczyść (usuwa znaki niedrukowalne).
Text.Select – wyodrębniacz znaków z kolumny w Power Query
Z pomocą przychodzi nam funkcja języka M, którą wstawimy poprzez kartę Dodaj kolumnę > Kolumna niestandardowa. Następnie wpisujemy:
=Text.Select([Tekst],{"a".."z"})
Pierwszym argumentem jest kolumna tekstowa, drugim lista znaków, które chcemy wyodrębnić. Żeby nie wpisywać wszystkich liter alfabetu, możemy się posłużyć wbudowaną w Power Query listą od A do Z, reprezentowaną przez {„a”..”z”}. Efektem końcowym jest kolumna z tekstem.
Na liście nie ma jednak polskich znaków, dlatego w naszym scenariuszu je dopiszemy.
=Text.Select([Tekst],{"a".."z","ą","ć","ę","ł","ń","ó","ś","ź","ż"})
Jak wyodrębnić duże litery w Power Query?
Analogicznie możemy zająć się tylko dużymi literami, tworząc listę liter od A do Z (dużą literą).
=Text.Select([Tekst],{"A".."Z"})
Jak wyodrębnić cyfry w Power Query?
Taką samą listę znaków możemy zastosować do wygenerowania listy cyfr, dzięki czemu wytniemy je wszystkie z tekstu.
=Text.Select([Tekst],{"0".."9"})
Jak wyodrębnić inne znaki w Power Query?
Jeśli Twój tekst zawiera różne symbole, możesz się ich pozbyć w analogiczny sposób, tworząc listę znaków do wyodrębnienia, np. – % # (.
=Text.Select([Tekst],{"-","%","#","("})
Jak usunąć znaki specjalne w Power Query?
Najczęściej zależy nam jednak na operacji przeciwnej. Przyda się wtedy druga funkcja języka M – Text.Remove. Jej składnia jest taka sama, jednak zamiast wyodrębniać wskazany tekst, funkcja usuwa go z niego. Jeśli jednak zapomnimy o jakimś znaku (np. $), wówczas pozostanie on w tekście.
=Text.Remove([Tekst],{"-","%","#","("})
Jest na to jednak sposób. Otóż Power Query przy tworzeniu list typu {„a”..”z”} bazuje na liście znaków standardu Unicode. Zamiast więc tworzyć listę znaków specjalnych, możemy ją w skrócie zapisać jako:
=Text.Remove( [Tekst], {" ".."/",":".."@", "[".."`","{".."~"} )
Pobierz plik Excel z zapytaniem Power Query
Tu możesz pobrać plik Excel ze wszystkimi kolumnami utworzonymi z funkcjami Text.Select i Text.Remove w języku M.