W dzisiejszym świecie opartym na danych ilość wytwarzanych i zużywanych danych szybko rośnie. Jednak wiele firm ma trudności z pełnym wykorzystaniem swoich danych ze względu na problemy z jakością danych. W tym miejscu pojawia się framework Great Expectations (GX). Jest to narzędzie, które pomaga firmom analizować ich dane i monitorować ich jakość, pozwalając im podejmować lepsze decyzje w oparciu o wiarygodne informacje. Dotyczy to jednak nie tylko analizy danych, ale także w zarządzaniu danymi, ponieważ może służyć do egzekwowania, śledzenia i dokumentowania reguł jakości danych. GX może być również niezwykle przydatny w nauce o danych, gdzie można zapewnić dobrą jakość danych optymalizatorowi lub modelowi. W tym artykule zbadamy framework GX i sposób, w jaki można go wykorzystać do weryfikacji jakości danych. Przedstawimy również przewodnik krok po kroku, jak korzystać z frameworka, w tym instalację, integrację z różnymi bazami danych i weryfikację danych.
Jak zacząć od GX?
Jedynym krokiem do rozpoczęcia gry w GX jest zainstalowanie go za pomocą następującego polecenia: instalacja pip great_expectations a potem pojawią się wielkie oczekiwania. Możesz skonfigurować domyślne wartości swojego środowiska przed rzeczywistą pracą z GX, jednak w przypadku tego scenariusza konfiguracja zostanie wykonana w kodzie, przed walidacją danych.GX obsługuje połączenie z wieloma bazami danych, takimi jak BigQuery, MySQL, PostgreSQL, Redshift, Snowflake itp. Dane przechowywane w plikach mogą być automatycznie ładowane do Pandas & Spark DF, nawet w pamięci dane można przetestować od razu. W tym artykule omówimy weryfikację danych w pamięci Pandas DF.

Następnym krokiem jest zdefiniowanie źródła danych i zapisanie go w kontekście GX. Można to również zrobić w konfiguracji GX i użyć później bez podawania go.

Następnie musimy utworzyć obiekt Batch Request definiujący dane do testowania.

Nadszedł czas, aby stworzyć pusty zestaw oczekiwań (zestaw testów) i grać przy użyciu wbudowanych oczekiwań:

Poniżej przedstawiono wyniki testów, warto wspomnieć, że GX podniesie błąd, jeśli kolumna nie istnieje w danych. Powinniśmy najpierw przetestować go, używając oczekiwań na poziomie tabeli, takiego jak expect_table_columns_to_match_set.

Testy można na stałe zapisywać w pakiecie oczekiwań, który później można łatwo załadować i używać w punktach kontrolnych za pomocą poniższego polecenia.

Nieudane oczekiwania można pominąć, zmieniając parametr discard_failed_expectations na True.
Analizuj dane za pomocą profilera
Profiler GX pomoże Ci stworzyć zestaw oczekiwań dla nowego zestawu danych. Po skonfigurowaniu walidatora reszta jest dość prosta. Profiler ma wiele opcji do kontrolowania, w przypadku tego scenariusza tylko kolumna „nazwa_klienta” jest wykluczona z analizy.


Poniższy ekran przedstawia tylko część testów, które zaproponował nam profiler. Warto wspomnieć, że niektóre z nich nie będą miały dla nas sensu, więc można je później zrzucić. Oczekiwania są zapisywane jako pliki JSON, więc istnieje możliwość przejścia przez plik z testami i usunięcia/zmodyfikowania tam oczekiwań.

Punkty kontrolne
Poprzednie rozwiązania są dobre do celów rozwojowych i testowych, a nie do środowiska produkcyjnego. Z pomocą tego ostatniego przychodzi punkt kontrolny. Grupuje wiele działań, w tym uruchamianie testów, generowanie raportów dokumentacji/walidacji, przesyłanie ich do magazynu w chmurze w razie potrzeby i powiadamianie o błędach za pośrednictwem wielu kanałów, takich jak e-mail lub slack. Przykładowy kod do skonfigurowania i uruchomienia punktu kontrolnego przedstawiono poniżej

Podczas opracowywania punktów kontrolnych wyniki można zweryfikować na podstawie drukowanych danych JSON, jednak jest to znacznie łatwiejszy sposób. W głównym katalogu wielkich oczekiwań można znaleźć wiele katalogów, w tym wielkie oczekiwania/niezobowiązujące/data_docs/lokalna witryna w którym można znaleźć dokumentację pakietów oczekiwań i walidacji. Punkt kontrolny, który podaliśmy powyżej, wygenerował następujący raport.

Plusy i minusy
Great Expectations to duża platforma open source z wieloma funkcjonalnościami. Narzędzie może być niezwykle przydatne do weryfikacji jakości danych, jednak musisz zdawać sobie sprawę z jego ograniczenia.Plusy:
- Obsługa wielu źródeł danych: spark, pandas, BigQuery, Athena, PostgreSQL, MySQL i więcej
- Narzędzie natywne dla programisty Pythona
- Testy można przeprowadzać w oparciu o zapisany zestaw oczekiwań, a także dynamicznie za pomocą walidatora
- Zintegrowany z frameworkiem dbt
- Dostępne powiadomienia o walidacji na slack/e-mail itp.
- Integracje z dyskami w chmurze
- Możliwość rozszerzenia wbudowanych oczekiwań
- Oczekiwania można modyfikować bezpośrednio w JSONs lub tworzyć za pomocą kodu Pythona
- Dokumentacja HTML testów i raportów walidacyjnych
Minusy:
- Utrzymanie podobnego zestawu testów może być bolesne, wszystkie z nich należy zmienić osobno.
- Duża lista zależności może powodować konflikty w projekcie
- Ramy są stale ulepszane, jednak mogą wystąpić błędy, które są trudne do zdiagnozowania i które nie zostaną szybko naprawione
Podsumowanie
W artykule przedstawiono ramy Great Expectations (GX), które mogą pomóc firmom analizować i monitorować jakość ich danych. Framework łatwo integruje się z silnikiem transformacji dbt i obsługuje połączenie z wieloma bazami danych. Artykuł zawiera przewodnik krok po kroku dotyczący korzystania z GX, w tym konfigurowanie źródła danych, tworzenie obiektu Batch Request i definiowanie testów przy użyciu wbudowanych oczekiwań. W artykule omówiono również profiler GX, który może pomóc w stworzeniu zestawu oczekiwań dotyczących nowego zestawu danych oraz punktów kontrolnych dla środowisk produkcyjnych. Ogólnie rzecz biorąc, artykuł zawiera wyczerpujący przegląd sposobu korzystania z GX do walidacji i monitorowania danych.