Oracle APEX – Let’s integrate with Pentaho! Część 2

25 listopada 2019, Lech Cieślik

Procesy ETL są częścią systemów klasy Business Intelligence. Ich tworzenie rodzi wiele wyzwań z którymi muszą zmierzyć się organizacje, które chcą opierać procesy decyzyjne na analizie danych w czasie rzeczywistym. I tu z pomocą przychodzą narzędzia takie jak Pentaho Data Integration. W aplikacjach które tworzymy dla naszych klientów często stajemy przed wyzwaniami związanymi z projektowaniem i implementacją procesów ETL. Tak na przykład dla systemów których głównym celem jest przygotowanie i wysyłka plików JPK wyzwaniem będzie pobranie danych sprzedażowych z plików w formacie takim jak xlsx, csv, txt a nawet MT940 które zawierają informacje o przelewach bankowych. Z kolei systemy ODS będą nastawione na integrację danych z wielu źródeł gdzie oprócz plików dane źródłowe są przechowywane w bazach danych takich jak PostgreSQL i MS SQL. Wśród wielu wyzwań jedno jest wspólne, rozwiązanie powinno być gotowe na łatwe i szybkie dodanie nowych i co najważniejsze różnych źródeł danych, które mogą zostać transformowane i załadowane do tworzonych systemów. Właśnie taką możliwośc daje nam Pentaho DI, które dzięki zaawansowanemu interfejsowi graficznemu pozwala na tworzenie procesów ETL praktycznie bez znajomości języków programowania. To drugi i ostatni wpis z serii ”Let’s integrate with Pentaho”. W pierwszym artykule pokazaliśmy jak stworzyć prostą transformatę za pomocą narzędzia Pentaho DI. Natomiast niniejszy artykuł w całości zostanie poświęcony integracji tego narzędzia z Oracle APEX.

Carte Server – podstawowe informacje

Carte jest to prosty serwer webowy który pozwala na zdalne wykonywanie jobów i transformat. Dodatkowo daje możliwość ich monitorowania, uruchamiania oraz zatrzymywania. Po pobraniu Pentaho DI, Carte można uruchomić z konsoli poleceń za pomocą komendy:

Gdzie plik configuration.xml może wyglądać w następujący sposób:

Dodatkowo warto wspomnieć, że Carte udostępnia własne API. Więcej na temat Carte można znaleźć na stronie producenta:

Carte Server i Oracle APEX Web Source Modules

APEX Web Source Modules umożliwia programistom dostęp do usług REST. Dodatkowo daje możliwość używania ich w wielu komponentach Oracle APEX lub w bloku PL/SQL, zarówno jeśli chodzi o wywołanie usługi jak i przetwarzanie odpowiedzi. Nic więc nie stoi na przeszkodzie, żeby utworzyć nasz własny Web Source Module i wykorzystać go do połączenia z Carte. Zajmie nam to dosłownie chwilę.

W Shared Components, w sekcji Data Sources wybieramy opcję Web Source Modules a następnie klikamy przycisk Create. Na ekranie wyświetli się wizard który poprowadzi nas przez cały proces. Na początku wybieramy opcję utworzenia naszego Web Source Module, w naszym przykładzie będzie to ‘From scratch’ i przechodzimy do kolejnego kroku. Gdzie określamy Nazwę oraz URL Endpoint.

Następnie definiujemy Base URL oraz Service URL Path, czyli adres interesującej nas usługi.

W ostatnim kroku wybieramy rodzaj uwierzytelniania. W naszym przykładzie będzie to opcja Basic, a login i hasło ustawimy jako standardowe wartości dla Carte (więcej na temat zarządzania hasłami, oraz bezpieczeństwa Carte można znaleźć na stronie producenta).

Po utworzeniu Web Source Module przechodzimy do jego edycji. W sekcji Operations wybieramy POST. W sekcji Advanced ustawiamy odpowiednią wartość Static ID.

Właśnie udało nam się utworzyć nasz własny Web Source Module który możemy wywołać za pomocą kodu PL/SQL przy użyciu pakietu apex_exec.

Carte Server i PL/SQL

Jeśli nie zdecydujemy się na użycie Web Source Modules możemy uruchomić transformatę na serwerze Carte bezpośrednio z kodu PL/SQL. Wystarczy napisanie procedury PL/SQL odpowiedzialnej za wysłanie żądania HTTP i odbiór odpowiedzi. Do jej implementacji wykorzystamy wspomnianą w poprzednich artykułach bibliotekę PL/SQL – utl_http.

Pan i Kitchen

Warto wspomnieć również o Pan i Kitchen. Są to narzędzia wiersza poleceń które pozwalają na uruchomienie transformat i jobów Pentaho. Zwykle używa się ich do zaplanowania uruchomienia transformat w cron. Jeśli chcemy wykorzystać narzędzie Pan w bloku PL/SQL, można to zrobić za pomocą dbms_scheduler według poniższego przykładu:

Oracle APEX i Pentaho DI

Po skonfigurowaniu Carte oraz przygotowaniu dowolnego z wyżej wymienionych sposobów integracji przyszedł czas na utworzenie aplikacji Oracle APEX która pozwoli użytkownikowi na wykonywanie transformat.

Przykładowe rozwiązanie:

  • Utworzenia raportu z nazwą transformaty.
  • Dodanie kolumny Run. Kliknięcie ikony powoduje wywołanie procedury procesu integracji.
  • Dodanie kolumny Carte. Kliknięcie na ikonę uruchamia przekierowanie do http://localhost:8088/kettle/status/ co pozwala na zarządzanie transformatami z poziomu interfejsu serwera Carte.

    Graficzny interfejs Carte

  • Dodanie raportu z zawartością tabeli employees.

Efekt końcowy:

Ekran Pentaho Manager

Podsumowanie

Pierwszy wpis z serii ‘Let’s integrate with Pentaho’ poświęciliśmy zaimplementowaniu transformaty odpowiedzialnej za pobranie danych z pliku CSV (Extract), modyfikację wartości kolumn (Transform) i import danych do tabeli (Load) tworząc w ten sposób kompletny proces ETL. W drugim artykule przedstawiliśmy sposoby integracji Pentaho DI z aplikacją Oracle APEX za pomocą Carte i APEX Web Source Modules, PL/SQL oraz jobów i narzędzia Pan. Na szczególną uwagę zasługuje pierwszy sposób który ogranicza się do kilku kliknięć, a jego implementacja zajmuje dosłownie chwilę. Efektem końcowym było stworzenie prostej aplikacji Pentaho Manager która pozwala na uruchamianie transformat.

 

Tagi: , , , , ,

Zapraszamy do kontaktu!

Pretius jest firmą tworząca oprogramowanie wspierające biznes.
Tworzymy aplikacje webowe wykorzystując: Java, Oracle DB, Oracle Apex, AngularJS.
Skontaktuj się z nami, aby porozmawiać o tym jak możemy pomóc w realizacji Twojego projektu!