Po prezentacji w poprzednim numerze znakomitego narzędzia, jakim jest KNIME, pora zagłębić się w tajniki jego codziennego używania. Dla kogoś, kto do tej pory pracował tylko z Excelem albo pisał zapytania w SQL, pierwsze zderzenie z tą aplikacją może być nieco utrudnione. Od czego zacząć? Z menu File wybieramy New, następnie New KNIME Workflow, nadajemy mu nazwę i… Co dalej? Wystarczy powrócić do czasów dzieciństwa i przypomnieć sobie jedną z najlepszych zabawek świata – klocki Lego.

Co jest najważniejsze w budowaniu z Lego, poza tym, żeby na żaden z nich nieopatrznie nie nadepnąć bosą stopą? Trzeba mieć instrukcję i klocki. Bez tego ani rusz. A co w przypadku, gdy chcemy budować coś bez instrukcji, bazując jedynie na własnej wyobraźni? Musimy wiedzieć, co chcemy zbudować, jak to ma wyglądać, jakie mamy klocki do dyspozycji i jak można je ze sobą połączyć. Praca z KNIME to właśnie ten drugi przypadek. Ale bez ryzyka nadepnięcia na kawałek plastiku.

Poznajmy klocki

Zanim zaczniemy tworzyć nasze budowle (czyli workflow), poznajmy klocki, z którymi przyszło nam pracować. W tej roli występują nasi znajomi z poprzedniego artykułu, czyli węzły. To z nich przyjdzie nam składać ścieżki, po których będą płynąć dane, przetwarzane na poszczególnych etapach. Aby dodać węzeł do obszaru roboczego, sięgnijmy do okna Node Repository. Znajdziemy tu wszystkie węzły pogrupowane w wygodnym drzewku według kategorii. Przyjrzyjmy się im pokrótce.

Jakie klocki do zabawy?

Kategoria IO grupuje węzły zarządzające danymi na wejściu i wyjściu. Możemy tu znaleźć moduły odczytujące pliki oraz zapisujące przetworzone dane w wybranym formacie. Są tu też węzły wspierające zarządzanie plikami (kopiowanie, pakowanie, wysyłanie mailem). Węzły typu Manipulation pozwalają na przekształcenia w ramach tabeli z danymi. Sięgamy tu, aby usuwać i dodawać kolumny lub wiersze, łączyć, dzielić i transponować tabele. Są tu też węzły umożliwiające wykonanie tych czynności w modelu PMML. W folderze Views znajdziemy przede wszystkim węzły, które pozwalają na wygenerowanie różnorakich wykresów. Analytics to wszystkie węzły, które stanowić będą serce modelu analitycznego, zarówno statystyczne, jak i wspierające data mining. Database z kolei pozwalają na podłączenie się z wybraną bazą danych, same polecenia zaś są podobne do tych zawartych w Manipulation. W Other Data Types umieszczono węzły służące do pracy z danymi czasowymi. Dzięki klockom z kategorii Structured Data możliwe jest przetwarzanie danych z plików XML czy JSON. Węzły typu Scripting umożliwiają stosowanie w workflow skryptów języka Java. W Tools & Services mamy narzędzia pozwalające na pobieranie danych z serwisów sieciowych zgodnie z praktykami REST. Workflow Control daje możliwość tworzenia pętli w workflow albo stosowania w nich zmiennych. Do ostatniej kategorii Reporting należą dwa węzły, które pozwalają na przenoszenie przekształconych danych do modułu raportowego KNIME.

Powyższe kategorie zawierają tylko podstawowe zbiory węzłów, widoczne po zainstalowaniu KNIME bez jakichkolwiek rozszerzeń. Jeśli chcemy, możemy z menu głównego wybrać polecenie File -> Install KNIME Extensions… i korzystać z węzłów stworzonych do pracy z Big Data, danymi chemicznymi lub biologicznymi, albo danymi z sieci społecznościowych (Rysunek 1). Wystarczy wybrać właściwe rozszerzenie i zaakceptować jego licencję.

Jak łączyć klocki?

Wiemy już, jakimi rodzajami klocków możemy się bawić, pora zatem przyjrzeć się im i zrozumieć, jak wysypać je na dywan i łączyć ze sobą. Znajdujemy w Node Repository interesujący nas węzeł – ze względu na ich mnogość nie warto skakać po strukturze drzewka, tylko wpisać interesujące nas słowa w wyszukiwarkę. Następnie przeciągamy dany węzeł do okna Workflow Editor. Możemy też kliknąć go dwukrotnie, należy jednak mieć świadomość, że jeśli w naszym obszarze roboczym mamy zaznaczony jakiś węzeł, który może połączyć się z właśnie wybieranym, to program automatycznie ustanowi takie połączenie. A nie zawsze jest ono pożądane.

Ciekawą i pomocną opcją jest korzystanie z okna Workflow Coach. Pojawiają się w nim sugestie następnych węzłów, bazujące na pracach całej społeczności KNIME. Aby móc z nich korzystać, musimy wyrazić zgodę na ich pobieranie przez aplikację, przy jednoczesnym udostępnianiu naszych wzorców budowania workflow. Możemy to zrobić w oknie opcji: File -> Preferences, na drzewku z lewej strony wybieramy KNIME -> Workflow Coach i zaznaczamy odpowiednie pola (konieczne jest zaktualizowanie statystyk za pomocą przycisku Update Now – Rysunek 2).

Jeśli przeciągamy nasze węzły do obszaru roboczego ręcznie, tak samo musimy je ze sobą połączyć. Każdy z węzłów ma porty wejścia lub wyjścia, a najczęściej oba z nich. Wystarczy kliknąć i przeciągnąć myszką od właściwego portu wyjścia do portu wejścia następnego węzła – zawsze w tę stronę. Szybko jednak zauważymy, że nie wszystkie porty łączą się ze wszystkimi. Podpowiedzią jest ich kształt – na tej podstawie wyróżniamy trzy rodzaje portów. Trójkątne oznaczają przepływ danych w ramach węzłów z poleceniami specyficznymi dla KNIME. Kwadraty oznaczają dane przetwarzane w sposób właściwy dla innych struktur, takich jak bazy danych, modele PMML, pliki xml czy dane z sieci społecznościowych. Różnią się one w swoim obrębie kolorem, dlatego należy zwracać na niego uwagę. Ostatni rodzaj portów to kółka, służące do przepływu zmiennych używanych w workflow. Tego typu porty wyjścia możemy połączyć z dowolnym węzłem, przeciągając ścieżkę nie do jego portu wejścia, ale do lewego górnego narożnika węzła. Dokładne opisy rodzajów danych, jakie przyjmują i zwracają porty wejścia i wyjścia, znajdziemy u dołu okna Node Description.

Nietypowe połączenia

Warto zwrócić uwagę na dwa rodzaje nietypowych węzłów (Rysunek 3). Pierwsze z nich mają inne rodzaje portów wejścia i wyjścia. Oznacza to, że dane są przekazywane z jednego rodzaju przepływu do drugiego. W ten sposób możemy przenieść dane z bazy danych do przetwarzania w ramach KNIME, zapisać dane z pliku do bazy danych lub modelu PMML, a nawet przekształcić kolumnę tabeli w zmienne sterujące workflow. Drugim nietypowym rodzajem są węzły mające więcej niż po jednym porcie wejścia lub wyjścia. Są one przede wszystkim stosowane w dzieleniu lub łączeniu danych, zarówno w obrębie jednego sposobu przetwarzania, jak i na przykład łączenia danych z modelem predykcyjnym. Podwójne porty wejścia i wyjścia używane są także w węzłach otwierających i zamykających pętle, w których dane są przetwarzane wielokrotnie.

Oczywiście samo łączenie naszych klocków nie sprawi, że workflow będzie działać tak, jak założyliśmy. Musimy jeszcze określić parametry, według których dane będą przetwarzane. Aby tego dokonać, wystarczy dwukrotnie kliknąć na danym węźle lub zaznaczyć węzeł i wcisnąć klawisz F6. Pojawi się okno dialogowe. Musimy w nim wskazać wartości, według których dany węzeł ma funkcjonować. Omówmy je na kilku najpopularniejszych przykładach.

Excel Reader to węzeł pobierający dane zapisane w pliku Excel. W jego oknie widać trzy zakładki. Dwie z nich są widoczne w każdym innym węźle. Są to Memory Policy – pozwala określić podejście do zarządzania pamięcią – i Flow Variables – przegląd zmiennych wykorzystywanych przez dany workflow. Zajmiemy się tym, co jest widoczne w pierwszej zakładce: XLS Reader Settings (Rysunek 4). Wybieramy plik, z którego będziemy pobierać dane. Następnie określamy arkusz, w którym te dane się znajdują – może to być pierwszy arkusz z danymi lub arkusz o konkretnej nazwie. Wskazujemy, czy tabela w pliku zawiera nagłówki kolumn, jak też identyfikatory wierszy. Jeśli nie, oba te parametry zostaną wygenerowane automatycznie. Możemy też określić, czy dane znajdują się w całym arkuszu, czy tylko we wskazanym zakresie. Na sam koniec mamy kilka opcji dotyczących przetwarzania błędów albo obsługi pustych wierszy i kolumn, jak też możliwość ponownego przeliczenia formuł. Tę ostatnią wartość warto pozostawić niezaznaczoną, aby uniknąć nadmiernego obciążania pamięci. Na dole okna widać podgląd danych, które będą importowane. Po zmianie parametrów należy kliknąć Refresh, aby zobaczyć zaktualizowany podgląd. Uwaga – kliknięcie OK lub Apply spowoduje zapisanie parametrów węzła, ale nie uruchomienie go. O tym, jak uruchamiać węzły – za chwilę.

Innym popularnym węzłem jest Joiner. Działa on na tej samej zasadzie co polecenie JOIN języka SQL. Węzeł ten ma dwa porty wchodzące – podłącza się do nich dwie części workflow, które do tej pory były przetwarzane niezależnie od siebie. Ważne jest, aby te części dzieliły ze sobą wspólny klucz, czyli kolumnę, dzięki której możliwe będzie połączenie dwóch tabel. W przypadku tego węzła parametry określa się w dwóch zakładkach.

W Joiner Settings określamy najpierw tryb łączenia tabel: czy dołączamy do tabeli „lewej” (górnej), czy do dolnej, czy też łączymy je równolegle. Następnie wybieramy klucz, według którego następuje łączenie. Kolumn będących kluczem może być więcej niż jedna, możemy też określić łączenie, jeśli zostaną spełnione wszystkie lub przynajmniej jeden warunek łączenia. Określamy też separator używany w indeksie rzędu nowej tabeli. Z kolei w zakładce Column Selection wybieramy kolumny, które będą tworzyły tabelę po połączeniu. Określa się tu także wybrane parametry finalnej tabeli.

Potrzebna jest instrukcja

Jak widać, określanie parametrów działania węzła jest dość intuicyjne. Warto też, w przypadku jakichkolwiek wątpliwości, sięgnąć do opisu danego węzła w oknie Node Description. Znajduje się tam dokładne wyjaśnienie wszystkich parametrów, jakimi możemy zarządzać w ramach danego węzła.

Po określeniu danych parametrów węzła warto go uruchomić, aby przetestować poprawność przyjętych założeń. W tym celu wystarczy wcisnąć klawisz F7. Możemy też wcisnąć kombinację klawiszy Shift i F7, aby uruchomić wszystkie węzły, jakie znajdują się w danych workflow. Naturalnie uruchomienie danego węzła spowoduje także pracę wszystkich węzłów poprzedzających go w workflow. Wraz z momentem uruchomienia małe żółte punkty poniżej węzłów ożyją. Jeśli zmienią się na zielone – to znaczy, że podczas wykonywania procedury z węzła nie wystąpił żaden błąd. Jeśli miałby się pojawić, punkt zmieni się na czerwony.

Oczywiście sam brak błędów nie oznacza jeszcze, że uzyskaliśmy właściwe dane. Rezultat możemy sprawdzić, klikając prawym przyciskiem myszy na danym węźle i wybierając z podręcznego menu ostatnią opcję. Jest ona nazwana tak jak dane, które tworzy dany węzeł, na przykład w przypadku Joiner będzie to Joined table, a dla Excel Reader – Output table. Jeśli dany węzeł ma więcej niż jeden port wyjścia, rezultaty wszystkich będą dostępne, ułożone w kolejności od znajdującego się najwyżej. Wciskając klawisze Shift i F6, możemy podejrzeć wynik pierwszego od góry portu danego węzła. Powyższe polecenia możemy też znaleźć na górnym pasku ikon.

Tego typu testowanie jest bardzo przydatną praktyką, zwłaszcza w przypadku złożonych workflow. Testując poszczególne węzły lub ich zbiory, mamy pewność, że dane są przetwarzane w taki sposób, w jaki chcieliśmy. Unikniemy dzięki temu żmudnego śledzenia potencjalnych błędów. Jeśli chcemy ponownie uruchomić dany węzeł, wystarczy zmienić jego parametry lub go zresetować za pomocą klawisza F8, albo wybierając odpowiednie polecenie z menu pod prawym przyciskiem myszy.

Struktury pod kontrolą

Jeśli kilka węzłów tworzy proces, który w naszym workflow jest powtarzalny, warto je skopiować. Możliwe jest połączenie ich w tzw. metawęzeł, by uniknąć tworzenia zbyt rozbudowanych struktur. W tym celu zaznaczamy myszką kilka węzłów, klikamy na nie prawym przyciskiem myszy i wybieramy Collapse into Metanode. Następnie wpisujemy nazwę naszego nowego węzła i gotowe. Możemy go kopiować i używać wielokrotnie. Aby móc edytować poszczególne węzły wchodzące w jego skład, wystarczy kliknąć nań dwukrotnie. W osobnej karcie otworzy się schemat połączenia węzłów. Pamiętajmy, aby tego typu metawęzły tworzyć, gdy składająca się na nie grupa węzłów jest połączona zarówno z prawej, jak i z lewej strony. Inaczej nasz metawęzeł zostanie utworzony bez portów wejścia i wyjścia. Możemy też skorzystać z kreatora, wybierając odpowiednią ikonę na górnym pasku menu. W takim wypadku określamy z góry liczbę węzłów wejścia i wyjścia, a następnie edytujemy wstępnie pusty workflow wewnątrz metawęzła.

Wiemy już, jakimi klockami dysponujemy. Poznaliśmy sposoby ich łączenia. Najwyższa pora stworzyć za ich pomocą jakąś budowlę. Na początek może coś prostego, niemniej pozwalającego na poznanie dość dobrze podstawowych możliwości przekształcania danych w KNIME. Ale o tym porozmawiamy w następnym artykule z tego cyklu.

Ulubione Drukuj

Zobacz również

Cyber Risk w e-commerce – bezpieczeństwo w e-sklepie

INFO_21_50.jpg

Dlaczego nie mając powierzchni wystawienniczej i showrooms możemy być okradzeni? Co, oprócz bezpieczeństwa transakcji, powinniśmy chronić, żeby nie ponieść szkód w biznesie? Przed czym chronią ubezpieczenia cyber risk?

 

Czytaj więcej

Budżetowanie kosztów metodą Activity Based Budgeting

INFO_21_46.jpg

Tradycyjne budżetowanie jest czasochłonne, może ograniczać innowacje i powodować utratę kontroli nad kosztami przez odpowiedzialnych za nie menedżerów. Activity Based Budgeting (ABB) skupia się na wyniku i lepiej dostosowuje się do strategicznych celów redukcji kosztów organizacji i ciągłej poprawy procesów.

Czytaj więcej

Możliwości w zakresie automatyzacji symulacji procesu biznesowego

INFO_21_41.jpg

Symulacja biznesowa jest kwintesencją wykorzystania języka BPMN do tworzenia modeli procesów w organizacji. Pozwala na dokonywanie głębokich analiz i ocen tego, co się dzieje w przedsiębiorstwie. Wykorzystanie atrybutów oraz danych z zewnętrznych źródeł może znacząco usprawnić ten proces.

Czytaj więcej

Numer bieżący

Przejdź do

Partnerzy

Reklama