ETL W SŁUŻBIE LUDU (GISOWEGO)

ETL W SŁUŻBIE LUDU (GISOWEGO)

Uwaga! Wpis przeznaczony dla ludzi szanujących swoją pracę i czas. Nie tych „szanujących” i robiących trzy dni zadanie, które można zrobić w trzy godziny ale tych zorientowanych na efektywność. Wiem, zabrzmiało korporacyjną gadką ale trudno.

Otóż, istnieją w informatyce takie narzędzia, która nazywają się ETL – Extract Transform Load. W zasadzie nazwa mówi wszystko. Są to narzędzia wspomagające bazy czy hurtownie danych. Zadaniem takich narzędzi jest pozyskanie danych (Extract), przetworzenie danych (Transform) i ich załadowanie (Load). Dużą zaletą takiego oprogramowania jest możliwość zautomatyzowania procesów bez znajomości programowania, wystarczy trochę wiedzy informatycznej i zdrowy rozsądek.

Pokażę dziś jak można zastosować takie narzędzie w pracy gisowca. W moim przykładzie wykorzystam narzędzie Pentaho Data Integration, bo znam, używam i jest opensource. Żeby być bardziej precyzyjnym, pokazany będzie tylko jeden z elementów składających się na całe narzędzie – GeoKettle.

Z czym to się je

Narzędzie pozwala na składanie z gotowych klocków procesu obróbki danych, łopatologicznie rzecz ujmując. W naszym przykładzie proces będzie polegał na wyciągnięciu określonych danych z PostgreSQL, transformacji do innego układu współrzędnych (bo będą to dane przestrzenne) i zapisanie ich do pliku shp. Do procesu wstawimy zmienną, która będzie wykorzystywana przy wyborze danych. I jeszcze zmusimy nasz komputer żeby wszystkie te czynności wykonał 15 minut po północy. Jest to bardzo prosty przykład wykorzystania GeoKettle’a. Uwierzcie, możliwości są prawie nieograniczone:)

Joby i transformacje

Zaczynamy. Procesy w tym narzędziu organizowane są w „joby” i „transformacje”. „Job” może obejmować cały proces przetwarzania danych, natomiast w „transformacji” umieszczane są mniejsze fragmenty np. odpowiedzialne za przerzucanie danych z jednogo środowiska bazodanowego do drugiego. W „jobach” można zagnieżdżać inne joby.

Najpierw tworzymy swojego „joba”, w którym umieścimy wszystkie mniejsze fragmenty procesu. Jak już go mamy zapisanego to przeciągamy z lewego panelu do środka odpowiednie klocki. Najpierw umieszczamy klocek odpowiadający za uruchomienie procesu. Każdy z takich modułów można konfigurować. Poniżej przykład.

ETL_start

Ustawiamy w naszym klocku czy ma się powtarzać i co ile. Podajemy także godzinę uruchomienia. W ten sposób możemy zaplanować aby nasz proces wykonywał się codziennie albo tylko we wtorki. W naszym przykładzie będzie się uruchamiał codziennie 15 minut po północy.

Aby nasz proces się wykonał musimy połączyć wszystkie moduły. Robimy to przeciągając myszką od jednego kafelka do drugiego przy wciśniętym klawiszu shift. W ten sposób określamy kolejność wykonywania czynności w „jobie”. Na poniższej ilustracji widać, że po starcie ma się wykonać transformacja 1.

 

ETL_Transformation

Jak wcześniej napisałem, w naszym procesie będzie zmienna, którą użyjemy przy wyciąganiu danych z bazy. Przeciągamy więc odpowiedni klocek i umieszczamy go zaraz po starcie procesu. Następnie łączymy z pozostałymi.

ETL_variable

Nazywamy naszą zmienną „pow” i dajemy jej wartość 10000.

ETL_variable2

Kolejnym krokiem będzie utworzenie „transformacji”, która wyciągnie nam dane z PostgreSQL. Tworzymy ją analogicznie jak „joba” – przeciągając moduły i łącząc je. Jak widać, nasza transformacja składa się z trzech klocków – wyciągnięcie danych, zmiana układu współrzędnych i zapisanie do pliku.

ETL_transformation2

Pierwszy moduł transformacji wygląda jak niżej. Jest to zapytanie SQL które wybiera nam odpowiednie dane z bazy. Zwróćcie uwagę, że w zapytaniu używamy zmiennej „pow”. Dzięki temu nasze zapytanie wykonuje się z parametrem jaki ustawiamy na poczatku, nie ma konieczności modyfikowania samego zapytania. W tym przykładzie wybieramy budynki, które mają powierzchnię większą niż hektar. Jak widać poniżej, w samym zapytaniu, też wykonaliśmy transformację układu współrzędnych aby mieć powierzchnię w metrach. To jest źródło naszych danych.

ETL_sql

Transformacja układu współrzędnych w kolejnym module wygląda tak:

ETL_srs

Przetransformowaliśmy wartości z kolumny geometria z pseudo-mercatora do układu 92.

Na koniec zapisujemy wynik, czyli budynki o powierzchni powyżej 1 ha, będące w układzie 92, do pliku shp.

ETL_file

W ostatnim module ustawiamy jeden parametr – ścieżkę do pliku.

Wykonanie

Gdy mamy już ukończony proces, połączone ze sobą moduły, możemy go wykonać. Klikamy mały zielony trójkąt na pasku i dzieje się magia. W naszym przypadku „job” wykonuje się około sekundy. Stworzony plik wczytujemy do QGISa.

ETL_qgis_finish

Tworzenie takich procesów jak pokazany przeze mnie pozwala automatyzować pracę i wykonywać ją na przykład w nocy:) Dzięki temu będziecie lepsi niż wasi przypadkowi znajomi z pracy. A może i plakietkę pracownika miesiąca uda się zdobyć…

 

Related Posts