Ile razy zdarzyło Ci się pracować z danymi, które nie mają dobrze przygotowanych kluczy do WYSZUKAJ.PIONOWO (aka Scalania lub JOIN)? Ile razy przy łączeniu po tekście okazywało się, że jeden klucz się nie połączył, bo była w nim literówka? Przy dużych bazach danych można tego nie zauważyć. Power Query (na razie tylko po stronie Power BI) wychodzi naprzeciw temu problemowi i daje nam do testów nową funkcję – scalanie rozmyte (ang. fuzzy merge). Jeśli chcesz wczytać „Takie”, „tAkIe”, a nawet „t a K E” jako „TAKIE”, nie ma prostszej metody.
Co może być fuzzy w łączeniu danych?
Łączenie tabel kojarzy się ze zgodnością wartości; szukamy takich samych wartości w różnych tabelach, tak zwanych kluczy, by móc połączyć informacje z wierszy tabel. Power Query idzie o krok dalej: co jeśli by łączyć po nie tylko idealnie dopasowanych wartościach (z uwzględnieniem dużych i małych liter), ale i przybliżonych? To właśnie fuzzy merge! Fuzzy merge, czyli po polsku scalanie rozmyte, to łączenie po idealnie dopasowanych, ale i zbliżonych wartościach. Jako że w momencie pisania artykułu jest to funkcja testowa (preview), trzeba ją specjalnie włączyć.
Otwórz Power BI Desktop > Plik > Opcje i ustawienia > Opcje > Funkcje w wersji zapoznawczej > Włącz scalanie rozmyte.
Po kliknięciu OK możliwe, że trzeba będzie zrestartować Power BI, zatem zanim zaczniesz pracę, najpierw włącz tę funkcję.
A teraz przejdźmy do przykładu!
Popraw nazwy z literówkami
Wyobraź sobie, że sprzedajesz meble: szafy, komody, stoły i krzesła. Prowadzisz także rejestr sprzedaży, ale bywa, że w bazie znajdzie się literówka z nazwą produktu. Dzięki fuzzy merge możesz połączyć tabelę z produktami poprawnie napisanymi z produktami z błędami.
Załaduj dane i w Narzędzia główne kliknij Edytuj zapytania. Otworzysz Edytor Power Query.
Następnie w Narzędziach głównych Power Query kliknij Połącz > Scal zapytania. Wybierz tabele, które chcesz połączyć – w moim przypadku Sprzedaż i Produkty. Zaznacz kolumny, po których tabele mają się łączyć oraz zaznacz Użyj dopasowania rozmytego w celu wykonania scalenia.
Rozwińmy Opcje scalania rozmytego. Jest tu kilka możliwości, które pozwalają określić stopień dopasowania.
- Próg podobieństwa – przyjmuje wartości od 0 do 1, gdzie 0 sprawi, że wartości połączą się ze sobą bez względu na treść, a 1 dopuszcza tylko idealnie zgodne łączenie. Domyślnie program zakłada próg 0,8.
- Ignoruj wielkość liter – nieważne, czy nazwę napiszesz Tak czy taK – scalanie rozmyte potraktuje te słowa jako takie same.
- Ignoruj odstępy – „to jest” i „tojest” to samo. Innymi słowy program wyszuka podobieństwa bez względu na obecność spacji.
- Maksymalna liczba dopasowań – mówi, ile maksymalnie dopasowań życzysz sobie znaleźć. Przykładowo, jeśli chcesz dopasować tylko jedną nazwę do tabeli początkowej, wpisz 1. Domyślnie Power Query pokaże wszystkie możliwe dopasowania.
- Tabela przekształcenia – gdy pojawią się kłopoty z przypisywaniem wartościom z błędami nowych wartości, warto wskazać dodatkową tabelę, która połączy problematyczne nazwy.
Zobaczmy wynik domyślnych ustawień. Rozpakujmy nową kolumnę.
Pojawiło się kilka wierszy z wartościami NULL. Spróbujmy zmienić parametry w progu podobieństwa na np. 0,1, by sprawdzić, czy więcej kolumn się połączy.
Rezultat jest jednak bez zmian.
Stwórzmy zatem tabelę transformacji, która przypisze poprawne wartości. W Narzędziach głównych kliknij Wprowadź dane, a następnie stwórz tabelę z tłumaczeniem błędnych nazw na poprawne.
Jeszcze raz zróbmy scalanie rozmyte, ale tym razem w opcjach wstawmy przygotowaną tabelę transformacji.
Efekt?
Udało się! W tabeli transformacji nie trzeba wpisywać idealnie zgodnych nazw z tabelą docelową. Wpisz takie, by były wystarczająco podobne do tabeli docelowej. Teraz wystarczy usunąć zbędne kolumny i voilà!
Tabela gotowa do dalszej obróbki!
Odporne na niekonsekwencję
Takie, tAkIe, a nawet t a K E mogą być wartości w tabeli – fuzzy merge bez problemu sobie z nimi poradzi. Funkcja może ignorować wielkość liter, ale i spacje między znakami oraz, przede wszystkim, literówki. Scalanie rozmyte pomoże Ci nie tylko w eliminowaniu błędów literowych w danych, tak częstych przy ręcznym wprowadzaniu. Z sukcesem zaktualizujesz stare, niejednolite nazwy, np. produktów, na nowe lub połączysz tabele po nie w pełni zgodnych kluczach. Uważaj jednak, by nie połączyło Ci się zbyt wiele informacji; zawsze sprawdzaj, czy na pewno dane dobrze się złączyły. Sprzężenie lewe zewnętrzne w ustawieniach scalania to dobry wybór, by móc przeglądać wszystkie wyniki. Spróbuj sam!