Poprzedni artykuł opowiadał o tym, czym jest proces ETL oraz dlaczego jest niezbędny do prawidłowego funkcjonowania hurtowni danych. W związku z tym, że na tym blogu poruszam tematykę systemów BI opartą o platformę Azure, dzisiaj chciałbym podzielić się swoją wiedzą na temat Azure Data Factory – narzędzia do budowaniu procesów ETL w Azure. W tym artykule omówię pokrótce ADF, zaprezentuję poszczególne elementy i koszty wykorzystania usługi.
Czym jest Azure Data Factory?
Jest to usługa dostępna w chmurze, umożliwiająca integrację danych między różnymi systemami. Za jej pośrednictwem możliwe jest podłączenie się do systemu źródłowego, pobranie i transformacja danych oraz załadownie ich do innego systemu. Aby być bardziej precyzyjnym – ADF jest orkiestratorem. Jego zadanie polega na „mówieniu” poszczególnym usługom, co mają robić.
Mocną stroną rozwiązania jest skalowalność. Ze względu na to, że działamy na platformie Azure, mamy dostęp do bardzo dużej mocy obliczeniowej, która będzie istotna w przypadku dużych zbiorów danych (Big Data) lub w przypadku danych przesyłanych strumieniowo.
Budowanie procesu
Aby rozpocząć pracę budowę rozwiązania musimy zalogować się do portalu Azure. Następnie klikamy na „Zasób ADF”. Zostajemy wtedy przeniesieni do aplikacji, w której możemy rozpocząć pracę. Budowanie procesu do integracji danych w Azure Data Factory opiera się na metodzie „przeciągnij i upuść”. Warto zauważyć tutaj, że do dyspozycji mamy graficzne elementy, jednak wszystko zapisywane jest w postaci JSONa. Każdy bloczek można podejrzeć, aby zobaczyć jak wygląda wygenerowany kod. Ma to swoje zalety, ponieważ w przypadku, gdy np. mamy gdzieś spisane mapowanie kolumn, możemy na tej podstawie wygenerować JSONa, bez potrzeby „wyklikiwania” wszystkiego w interfejsie graficznym. Jest to spore udogodnienie w stosunku do poprzedniej wersji ADF, która nie miała edytora graficznego – wszystko było pisane w postaci JSONa.
Jeśli chodzi o kwestie finansowe – w Azure Data Factory płacimy dopiero za wykonane operacje. Oznacza to, że podczas dewelopmentu nie ponosimy żadnych kosztów. Zaczynają być one naliczane dopiero w momencie uruchomienia procesu. Aby wyliczyć orientacyjny koszt możemy skorzystać z kalkulatora.
Tworzenie instancji Azure Data Factory w 5 krokach
Aby móc korzystać z ADF niezbędna jest subskrypcja Azure. Jeśli ją posiadamy – logujemy się do portalu Azure i wykonujemy poniższe kroki:
1. Tworzymy zasób Azure Data Factory.
2. Konfigurujemy usługę – przy tym kroku należy pamiętać, że nazwa musi być globalnie unikatowa. Nie zaznaczamy też opcji „Enable GIT”, ponieważ nie będziemy w tym przykładzie wersjonować rozwiązania.
3. Aby rozpocząć budowę procesu transferu danych otwieramy zasób i wybieramy opcję „Author & Monitor”.
4. Następuje przekierowanie do usługi Data Factory. Aby rozpocząć pracę musimy wybrać opcję edycji.
5. W tym momencie możemy już przenosić dane!
Podstawowe elementy Azure Data Factory
Po otwarciu graficznego edytora ADF na lewej stronie mamy 4 podstawowe zakładki, każda z nich odpowiada innej funkcji.
Connections– w tym miejscu tworzymy połączenie do wszelkiego rodzaju źródeł i destynacji. Należy pamiętać, że aby takie połączenie utworzyć, należy dodać Linked Service. Jest to obiekt, w którym przechowywana jest referencja do serwisu z danymi. Kolejna istotna rzecz to Integration Runtime – infrastruktura, dzięki której ADF obsługuje takie operacje jak transfer danych.
Generalnie w Azure Data Factory mamy 3 typy Integration Runtime. Pierwszym z nich jest Azure – korzystając z niego możliwy jest transfer danych między obiektami znajdującymi się w chmurze Azure. Drugi typ to Self-hosted,który jest używany w sytuacji, gdy pobieramy lub ładujemy dane do jakiegoś źródła on-premises – np. gdy nasz system działa na maszynie wirtualnej poza Azure. Trzeci typ to Azure-SSIS. Umożliwia on uruchomienie paczek SQL Server Integration Services w ADF.
Datasets– w tym miejscu konfigurujemy zbiory danych, z których później będziemy je pobierać, lub do których będziemy je ładować. Upraszczając sytuację – mogą to być tabele w bazie danych, pliki CSV lub bezpośrednie zapytanie do bazy danych.
Pipelines – każdy Pipeline zawiera Aktywności. W kontekście ADF oznacza to wszelkiego rodzaju transformacje i kopiowanie danych. Pojedynczy Pipeline może na przykład kopiować dane z jednego systemu do hurtowni danych i zawierać kilka Aktywności.
Triggers – jak wskazuje nazwa, w tej zakładce możemy dodać wyzwalacze, które uruchomią nasz proces w określonym przez nas czasie. Jeżeli chcemy aby nasz proces był uruchamiany np. codziennie o godz. 5:00 rano, należy taki Trigger utworzyć i odpowiednio skonfigurować.
Aktywności Azure Data Factory
Aktywność w ADF to element, który wykonuje pojedynczą operację, taką jak np. kopiowanie danych z jednego miejsca w drugie. W chwili pisania tego artykułu mamy do dyspozycji 27 aktywności do różnego rodzaju działań. Jednym z bardziej istotnych jest Copy Activity, czyli aktywność, która po prostu przenosi dane z jednego Data Setu do drugiego. Oprócz tego ADF oferuje także konstrukcje, takie jak Pętle (Foreach i Until) oraz umożliwia uruchamianie funkcji w usłudze Azure Functions. Konfigurowanie aktywności odbywa się podobnie jak w przypadku wyżej opisanych komponentów – poprzez graficzny interfejs lub bezpośrednio w kodzie JSON.
Wyzwalacze (Triggers)
Azure Data Factory umożliwia uruchamianie zbudowanego procesu w wyznaczonym przez nas czasie. Taka funkcjonalność jest niezbędna w przypadku np. ładowania danych. Aby ustawić harmonogram uruchamiania procesu należy utworzyć Wyzwalacz. Po wybraniu w zakładce Triggers na New dostajemy możliwość konfiguracji. Do wyboru są 3 typy:
- Schedule – uruchomienie procesu w konkretnym czasie, z możliwością powtarzania co jakiś okres;
- Tumbling Window – uruchamianie co jakiś okres, z możliwością ponownego uruchomienia w przypadku niepowodzenia;
- Event – uruchamianie wyzwalane jakimś zdarzeniem, np. pojawieniem się nowego pliku w magazynie plików blob.
Po wybraniu daty startu należy zaznaczyć jeszcze opcję Activated – wtedy Trigger jest gotowy do użycia. Można go odpalić ręcznie lub poczekać na ustaloną przez nas wcześniej godzinę, w której uruchomi się sam.
Data Flows
W momencie, kiedy piszę ten artykuł, funkcjonalność Data Flows jest dostępna w opcji Public Preview. Nie należy więc korzystać z niej produkcyjnie, ale chciałbym o niej wspomnieć. Dzięki Data Flows możliwe będą transformacje znane z SQL Server Integration Services, takie jak: łączenia dwóch strumieni danych, dodanie dodatkowej kolumny do przepływu czy filtrowanie i sortowanie.
Dalsze kroki
W tym artykule teoretycznie omówiłem usługę jaką jest Azure Data Factory. Jak widać, transformacje i ładowanie danych do baz wcale nie musi być skomplikowane. W następnym artykule opiszę jak załadować dane do hurtowni Azure SQL Data Warehouse wykorzystując Azure Data Factory.