Jak wyodrębnić litery, cyfry i symbole z tekstu w Power Query?

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.

Udostępnij ten wpis:

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *