Co robi inżynier Danych
W największym skrócie inżynier Danych jest odpowiedzialny za przygotowanie i integrację danych. Dane trzeba przygotować do użycia bo surowe raczej są w słabej formie. A integracja to połączenie danych z wielu źródeł i form.
Skąd biorą się dane w twojej firmie?
Na samym początku źródła są ludzie, którzy te dane generują. Są to różnego rodzaju typy danych wprowadzane przez użytkownika oraz generowane w przeróżnych systemach.
W zależności od wielkości firmy, źródeł danych może być bardzo dużo. Strony internetowe, systemy sprzedaży, systemy CRM, aplikacje wewnętrzne, urządzenia Iot, ect.
Każdy z tych systemów przetrzymuje dane w najróżniejszych formatach od relacyjnych baz danych, aż po pliki, bazy nosql ect. Ilość formatów danych jest bez liku.
Skoro te dane, a zarazem systemy są rozproszone, to powstaje problem z ich “komunikacją”. Jeśli byłbym managerem, to chciałbym wiedzieć co dzieje się w firmie. Najważniejsze są podstawowe pytania, gdzie są problemy, jak wygląda sprzedaż. Każda osoba decyzyjna powinna móc przeprowadzić analizę tych danych, przynajmniej wizualną. Jednakże dane one w wielu miejscach i do tego przeróżnych formatach. To wszystko inżynier danych musi ogarnąć 😨
Wyobraź sobie ile czasu, musiałbyś poświęcić na to, żeby zebrać te wszystkie dane, np. w excelu i wyświetlić jakiś wykres. Zrobienie tego jednorazowo zajmie dużo czasu. A taką analizę trzeba robić regularnie. Jest to bardzo kosztowna i mozolna praca. Czy nie lepiej byłoby zautomatyzować ten proces.
Każdy kto potrzebuje dostępu do danych miałby je w zasięgu ręki, i do tego bez wysiłku. To jest zadanie dla inżyniera danych.
Centrala z danymi
Najbardziej popularnym rozwiązaniem stosowanym przez inżyniera danych jest utworzenie centralnego repozytorium, gdzie wszystkie dane będą składowane. Dzięki temu będzie znacznie łatwiej dostać się do danych i sprawdzić co dzieje się w firmie. Najprostszym rozwiązaniem jest hurtownia danych. Jest to w większości relacyjna baza danych, gdzie przetrzymujemy wszystkie dane. Bardziej nowoczesnym rozwiązaniem jest Lakehouse, sprawdź mój artykuł na ten temat.
Co buduje inżynier danych
Inżynier danych tworzy potoki danych z ang 'data pipelines’. Czym jest ten potok (pipeline)? Wyobraź sobie firmę, w której jest 7 systemów i chcemy wszystkie dane z tych systemów zintegrować i wrzucić do jednego centralnego repozytorium.
W najprostszym scenariuszu każde źródło będzie miało swój własny potok danych. Taki potok może mieć postać jakichś skryptów (kod np. w Pythonie). W zależności od użytych narzędzi może on mieć różną formę. Są to zaprogramowane wieloetapowe procesy, które definiują, w jaki sposób dane są pobierane i przetwarzane. Mogą to być specyficzne transformacje, podczas których inżynier danych przygotuje dane zgodnie z wymaganiami firmy. Dzięki temu wszystkie dane będą miały ten sam standard. W poszczególnych etapach można sprawdzić ich jakość i usunąć bądź naprawić dane, dodając bądź usuwając brakujące elementy.
Na poniższym przykładzie widzisz kilka potoków, z których każdy przetwarza dane z osobnego źródła.
Co to jest ETL

Jest to najpopularniejszy proces integracji danych. ETL to skrót Extract Transform i Load, czyli po naszemu Wyciągnij, Przekształć i Załaduj. Są to trzy etapy następujące po sobie. Oczywiście proces ten powinien być w pełni zautomatyzowany oparty na harmonogramie zgodnym z częstotliwością systemów źródłowych.
Extract – jest to pierwszy etap, gdzie wyciągam dane z systemu bądź pliku. Sprawdzam, czy są nowe świeże dane. Jeśli tak to uruchamia się następny etap.
Transform – drugi i najbardziej skomplikowany etap. Dokonuje transformacji, oczyszczam, łącze dane z różnych systemów, dokonuje agregacji, sprawdzam jakość, naprawiam, ect. Wprowadzam specyficzne reguły firmy.
Load – etap ostatni, kiedy ładuje już przygotowane dane do docelowego systemu.
Hurtownia Danych/Lakehouse/Data Lake
Jest to centralne repozytorium, przygotowane do przechowywania danych. Dane pochodzące z wielu źródeł powinny być odpowiednio uporządkowane. Czyli logicznie poukładane tak aby można je było łatwo wykorzystać. Tutaj dane powinny być gotowe do analizy i wizualizacji.
Korzyści z integracji danych
- Jakość
- Standaryzacja
- Szybki dostęp
- Zasady i procesy firmy są zintegrowane z danymi
Najczęstsze problemy inżyniera danych
Pracując ponad 15 lat z danymi. Widziałem małe firmy oraz wielkie korporacje. W wielu miejscach zetknąłem się z podobnymi problemami. Jak to zwykle bywa problem siedzi pomiędzy monitorem, a krzesłem 🙂 ot zwykła natura ludzka, nie tylko inżyniera danych.
Problemy
- Dane: Dane są słabej jakości, np. pole kodu pocztowego jest w złym formacie, miejsce, w którym powinno być słowo są cyfry.
- Ludzie: Czynnik ludzki zawsze będzie miał znaczenie, a szczególnie dostępność czasu danego czynnika ludzkiego.
- Brak dokumentacji: Bardzo często wiedza domenowa jest tylko w głowie posiadacza, jeśli posiadacz nie jest dostępny to i wiedzy brak.
- Systemy i wsparcie IT: Często napotkasz problemy z dostępami do systemów lub uprawnieniami.
- Środowiska: To nawiązuje do poprzedniego punktu, duża liczba systemów w przeróżnych środowiskach i trudności związane z dostępem.
- Pieniądze: Banalne, ale prawdziwe, cięcie kosztów w wielu miejscach sprawia, że będziesz miał utrudnioną pracę, słabe narzędzia i brak ludzi do pomocy.
- Terminy: Firma chce jak najszybciej, a ty się nie wyrabiasz, ciśnienie prawie zawsze jest na czas, a nie na jakość.
- Komunikacja: Jeśli jest dużo ludzi to i powstanie duży chaos komunikacyjny, co będzie utrudniało pracę.
Więcej znaczy trudniej
Weź pod lupę przykład z siedmioma systemami. Każdy z nich jest zarządzany przez 7 osób. Więc będziesz musiał pracować z wieloma osobami, żeby zrozumieć dane z poszczególnych systemów.
Może się okazać, że te same zasady firmy wyglądają inaczej w każdym systemie. Dzieje się tak dlatego, że są stworzone przez różnych ludzi – a my “niezawodni ludzie” bardzo często mamy problemy z komunikacją, ot taka nasza natura.
Przy dużych systemach możesz mieć analityka biznesowego, który będzie ogarniał część komunikacji. Realia są takie, że bardzo często sam musisz szukać ludzi i pytać o, co chodzi z tymi danymi?
Ilość problemów jest skorelowana z wielkością firmy i ilością danych, im większa firma tym więcej danych i dużo skomplikowanych reguł biznesowych. Będziesz potrzebował więcej czasu na ogarnięcie tego wszystkiego.
Umiejętności inżyniera danych
Żeby to wszystko robić musisz mieć określone umiejętności.
- Projektowanie
Zanim przystąpisz do pracy, powinieneś wszystko zaprojektować, tutaj nie mówię tylko o architekturze. W dużych firmach pewne elementy będą zaprojektowane przez architektów, ale ty musisz umieć projektować rozwiązanie na poziomie pojedynczego problemu.
Każda reguła biznesowa ma swoją specyfikację i będziesz musiał ją rozwiązać. To wszystko wymaga zdolności projektowania. Powinieneś starać się myśleć jak architekt. Pamiętaj, że to rozwiązanie musi być łatwe do utrzymania, i testowania.
- Programowanie
Pomimo tego, że jest mnóstwo narzędzi „no code„. Takich, które nie wymagają programowania. W końcu trafi się coś bardziej skomplikowanego, co będziesz musiał zaprogramować. Jak już zaprojektujesz reguły firmy te z punktu powyżej nadejdzie czas na pisanie kodu. Nie chce doradzać jakiego języka powinieneś się uczyć. Jeśli wiesz, w jakiej technologii chcesz pracować, wystarczy wejść na oferty pracy i one Ci powiedzą jakich narzędzi będziesz używał. Język programowania jest narzędziem, jednym z wielu wymagającym poznania. Jeśli chodzi o trend w środowisku Big Data i Databricks to dominuje Python.
- Skryptowanie
Jest to ściśle powiązane z punktem 2. Programowanie, jest odpowiedzialne za przetwarzanie danych. Skryptowanie dotyczy automatyzacji procesów i samego środowiska. np. PowerShell jest używany do uruchamiania kodu i zarządzania środowiskiem. Pracując w chmurze powinieneś mieć podstawy DevOps, yml, terraform, PoweShell, Bash. Na przykład w Pythonie możesz pisać proste skrypty, które będą zarządzać uruchamianiem np. apache airflow.
- Testowanie
Umiejętność testowania i znajomości dobrych praktyk jest bardzo ważna. W większych projektów możesz mieć dedykowanego testera, ale w mniejszych to ty będziesz testerem, architektem i programistą. Oprócz testów jednostkowych będziesz musiał zautomatyzować testy integracyjne. Testy są po to, żebyś wiedział, co przestanie działać poprawnie po jakiejkolwiek zmianie kodu.
- Monitorowanie systemu i logów
Wszystko co robisz powinno być zautomatyzowane i działać bez twojej interwencji (przynajmniej w teorii). A jeśli pojawią się problemy, to powinieneś dostać jakąś notyfikację. W zależności czy pracujesz on-premise czy w chmurze powinieneś znać narzędzia i biblioteki zarządzające logami. Logi pozwolą każdemu nie tylko inżynierowi danych dowiedzieć się, co dzieje się w systemie.
- Chmura
Chmura publiczna w dzisiejszych czasach staje się coraz bardziej popularna. Firmy wykorzystują jej zalety, co oznacza, że jest sporo pracy i sporo nowych narzędzi do opanowania. Dla Azure certyfikat DP-203 jest dobrym przykładem tego, co powinieneś wiedzieć. Wystarczy przejść przez ich samouczek i się pobawić. Chciałbym tutaj dodać, że oprócz chmury firmy dalej będą korzystały z lokalnych centrów danych, ale będzie coraz więcej rozwiązań hybrydowych. Takie rozwiązanie używa systemów z lokalnej infrastruktury firmy oraz chmury publicznej.
- Narzędzie no code
Coraz częściej pojawiają się narzędzia niewymagające programowania. Są to narzędzia do integracji danych z wielu różnorodnych źródeł. Dla użytkownika dostępny jest interfejs z podstawowymi opcjami typu przeciągnij i upuść. Jak się domyślasz większość procesów ładownia danych, jest takie same więc da się stworzyć jedno narzędzie ze standardowym zestawem zadań. Obsługują one powszechne czynności takie jak wczytywanie plików csv, kopiowanie danych z bazy czy łączenie danych z różnych źródeł. Podobne narzędzie znajdziesz w Azure Data Factory, AWS Glue lub GCP data Fusion. Jest też cała masa narzędzi on premise np. SSIS.
Inżynier danych a data science
Mam nadzieję, że już wiesz co nieco o pracy inżyniera danych. Ja bardzo lubię pracę z danymi i uważam, że to świetne zajęcie. Jest dużo wyzwań, niemniej jednak jeszcze mi się nie znudziło. Pamiętaj, że nie ważne co wybierzesz po jakimś czasie to polubisz a jak nie, to zawsze możesz zmienisz specjalizację.
Jak to się łączy z Data Science czyli z bardziej zaawansowaną analizą danych. Wiele źródeł piszących o Data Science oraz sami analitycy twierdzą, że 80% czasu zajmuje im przygotowanie danych. Czyli robią to, co inżynier danych. Oprócz tego muszą znać statystykę, żeby opanować bardziej zaawansowaną analizę. Oprócz tego wymagana jest znajomość algorytmów z dziedziny AI i ML.
W swojej pracy inżynier danych również robi analizę danych, ale podstawową. Data science jest dziedziną znacznie bardziej matematyczną, tutaj trzeba znać statystykę i wiedzieć, kiedy użyć jakiej metodyki. Data science to również machine learning. Jest takie powiedzenie że data scientist być lepszy w statystyce od programisty i lepszy w programowaniu od statystyka. Inżynier danych jest osoba, która przygotowuje dane pod analizę, znajomość dobrych praktyk inżynierii danych jest ważna dla obu domen. W obu przypadkach warto znać takie narzędzia jak Apache Spark i oczywiście Databricks.
Wady i zalety pracy
Jest to praca technologiczna i oprócz samych zalet 🙂 ma takie same wady jak praca w innych technologiach. W obu przypadkach jest spora ilość narzędzi, które musisz znać. Inżynier to inżynier i musi umieć posługiwać się sporą liczbą narzędzi, zmieniających się co miesiąc. W tym cała zabawa, że nie da się nudzić. A dane to klucz do naszej przyszłości. Jeśli opanujesz dane, to opanujesz świat.
Daj znać czy o czymś zapomniałem?
