Wyodrębnianie, przekształcanie i ładowanie (ETL)

Microsoft Fabric
Azure Data Factory

Organizacje często muszą zbierać dane z wielu źródeł w różnych formatach i przenosić je do co najmniej jednego magazynu danych. Miejsce docelowe może nie być tym samym typem magazynu danych co źródło, a dane często muszą być kształtowane, czyszczone lub przekształcane przed załadowaniem.

Różne narzędzia, usługi i procesy pomagają sprostać tym wyzwaniom. Niezależnie od podejścia należy koordynować pracę i stosować przekształcenia danych w potoku danych. W poniższych sekcjach przedstawiono typowe metody i rozwiązania dotyczące tych zadań.

Proces wyodrębniania, przekształcania, ładowania (ETL)

Wyodrębnianie, przekształcanie, ładowanie (ETL) to proces integracji danych, który konsoliduje dane z różnych źródeł w ujednolicony magazyn danych. W fazie transformacji dane są modyfikowane zgodnie z regułami biznesowymi przy użyciu wyspecjalizowanego aparatu. Często wiąże się to z przejściowymi tabelami, które tymczasowo przechowują dane podczas ich przetwarzania i ostatecznie są ładowane do miejsca docelowego.

Diagram procesu wyodrębniania, przekształcania, ładowania (ETL).

Transformacja danych, która odbywa się zwykle, obejmuje różne operacje, takie jak filtrowanie, sortowanie, agregowanie, łączenie danych, czyszczenie danych, deduplikacja i weryfikowanie danych.

Często trzy fazy ETL są uruchamiane równolegle, aby zaoszczędzić czas. Na przykład podczas wyodrębniania danych proces przekształcania może pracować nad danymi już odebranych i przygotować je do załadowania, a proces ładowania może rozpocząć pracę nad przygotowanymi danymi, zamiast czekać na ukończenie całego procesu wyodrębniania. Zwykle projektuje się równoległość w oparciu o granice partycjonowania danych (data, klient, klucz shardu), aby uniknąć konfliktów zapisu i umożliwić idempotentne ponawianie prób.

Odpowiednia usługa:

Inne narzędzia:

Ekstrakcja, ładowanie, transformacja (ELT)

Ekstrakcja, ładowanie, transformacja (ELT) różni się od ETL wyłącznie miejscem, w którym odbywa się transformacja. W potoku ELT transformacja odbywa się w docelowym magazynie danych. Zamiast korzystać z oddzielnego aparatu przekształcania, możliwości przetwarzania docelowego magazynu danych są używane do przekształcania danych. Upraszcza to architekturę przez usunięcie silnika transformacji z potoku przetwarzania. Kolejną zaletą tego podejścia jest to, że skalowanie docelowego magazynu danych powoduje również skalowanie wydajności potoku ELT. Jednak ELT działa dobrze tylko wtedy, gdy system docelowy jest wystarczająco zaawansowany, aby efektywnie przekształcać dane.

Schemat procesu ekstrakcji, ładowania i transformacji (ELT).

Typowe przypadki użycia ELT należą do obszaru danych big data. Na przykład możesz zacząć od wyodrębnienia danych źródłowych do plików prostych w skalowalnym magazynie, takim jak rozproszony system plików Hadoop (HDFS), magazyn obiektów blob platformy Azure lub usługa Azure Data Lake Storage Gen2. Technologie takie jak Spark, Hive lub PolyBase mogą być następnie używane do wykonywania zapytań dotyczących danych źródłowych. Kluczowym punktem z ELT jest to, że magazyn danych używany do przeprowadzenia transformacji jest tym samym magazynem danych, w którym dane są ostatecznie używane. Ten magazyn danych odczytuje dane bezpośrednio ze skalowalnej pamięci masowej, zamiast ładować je do własnego, oddzielnego magazynu. To podejście pomija kroki kopiowania danych w etl, które często mogą być czasochłonne w przypadku dużych zestawów danych. Niektóre procesy materializują przekształcone tabele lub widoki, aby poprawić wydajność zapytań lub egzekwować zasady ładu; ELT nie zawsze oznacza transformacje wyłącznie zwirtualizowane.

Ostatnia faza potoku ELT zwykle przekształca dane źródłowe do formatu lepiej dostosowanego do typów zapytań, które trzeba obsługiwać. Na przykład dane mogą być partycjonowane przez często filtrowane klucze. ELT może również używać zoptymalizowanych formatów przechowywania danych, takich jak Parquet, czyli kolumnowego formatu przechowywania, który organizuje dane według kolumn, aby umożliwić kompresję, predicate pushdown i wydajne skany analityczne.

Odpowiednia usługa firmy Microsoft:

Wybieranie protokołu ETL lub ELT

Wybór między tymi podejściami zależy od wymagań.

Wybierz opcję ETL, gdy:

  • Należy przenieść zasobożerne przekształcenia poza system docelowy o ograniczonych zasobach
  • Złożone reguły biznesowe wymagają wyspecjalizowanych aparatów transformacji
  • Wymagania dotyczące przepisów lub zgodności nakazują wyselekcjonowane inspekcje przejściowe przed załadowaniem

Wybierz pozycję ELT, gdy:

  • Docelowy system to nowoczesna hurtownia danych lub lakehouse z elastycznie skalowaną mocą obliczeniową
  • Należy zachować nieprzetworzone dane na potrzeby eksploracyjnej analizy lub przyszłej ewolucji schematu
  • Logika przekształcania korzysta z natywnych możliwości systemu docelowego

Przepływ danych i przepływ sterowania

W kontekście potoków danych przepływ sterowania zapewnia uporządkowane przetwarzanie zestawu zadań. Aby wymusić poprawną kolejność przetwarzania tych zadań, używane są ograniczenia pierwszeństwa. Te ograniczenia można traktować jako łączniki na diagramie przepływu pracy, jak pokazano na poniższej ilustracji. Każde zadanie ma wynik, taki jak powodzenie, niepowodzenie lub ukończenie. Każde kolejne zadanie nie inicjuje przetwarzania, dopóki jego poprzednik nie zakończy się jednym z tych wyników.

Przepływy sterowania wykonują przepływy danych jako zadanie. W zadaniu przepływu danych dane są wyodrębniane ze źródła, przekształcane lub ładowane do repozytorium danych. Dane wyjściowe jednego zadania przepływu danych mogą być danymi wejściowymi do następnego zadania przepływu danych, a przepływy danych mogą być uruchamiane równolegle. W przeciwieństwie do przepływów sterowania nie można dodawać ograniczeń między zadaniami w przepływie danych. Można jednak dodać przeglądarkę danych, aby obserwować dane przetwarzane przez każde zadanie.

Diagram przepływu danych wykonywanego jako zadanie w przepływie sterowania.

Na diagramie znajduje się kilka zadań w przepływie sterowania, z których jednym jest zadanie przepływu danych. Jedno z zadań jest zagnieżdżone w kontenerze. Kontenery mogą służyć do zapewnienia struktury zadań, zapewniając jednostkę pracy. Jednym z takich przykładów są powtarzające się elementy w kolekcji, takie jak pliki w folderze lub instrukcje bazy danych.

Odpowiednia usługa:

Odwrotne ETL

Reverse ETL to proces przenoszenia przekształconych, modelowanych danych z systemów analitycznych do narzędzi operacyjnych i aplikacji. W przeciwieństwie do tradycyjnego ETL, w którym dane przepływają z systemów transakcyjnych do systemów analitycznych, reverse ETL pozwala wykorzystać wnioski, przesyłając przygotowane dane z powrotem tam, gdzie użytkownicy biznesowi mogą na ich podstawie podejmować działania. W odwrotnym potoku ETL dane przepływa z magazynów danych, magazynów typu lakehouse lub innych magazynów analitycznych do systemów operacyjnych, takich jak:

  • Platformy zarządzania relacjami z klientami (CRM)
  • Narzędzia do automatyzacji marketingu
  • Systemy obsługi klienta
  • Bazy danych obciążeń

Podejście nadal opiera się na procesie wyodrębniania, przekształcania i ładowania. Krok transformacji polega na tym, że konwertujesz z określonego formatu używanego przez magazyn danych lub inny system analityczny w celu dostosowania do systemu docelowego.

Przykład znajdziesz w artykule Odwrotne wyodrębnianie, przekształcanie i ładowanie (ETL) za pomocą usługi Azure Cosmos DB for NoSQL.

Dane strumieniowe i architektury szybkiej ścieżki

Jeśli potrzebujesz architektury Lambda z gorącą ścieżką lub architektury Kappa, możesz subskrybować źródła danych w momencie ich generowania. W przeciwieństwie do ETL lub ELT, które przetwarzają zbiory danych wsadowo, według harmonogramu, strumieniowe przetwarzanie danych w czasie rzeczywistym odbywa się w miarę ich napływu, umożliwiając natychmiastowe uzyskiwanie informacji i podejmowanie działań.

Diagram procesu wypychania, przekształcania i ładowania.

W architekturze strumieniowej dane są pobierane ze źródeł zdarzeń do brokera komunikatów lub centrum zdarzeń (takich jak Azure Event Hubs lub Kafka), a następnie przetwarzane przez moduł przetwarzania strumieniowego (taki jak Fabric Real-Time Intelligence, Azure Stream Analytics lub Apache Flink). Procesor stosuje przekształcenia, takie jak filtrowanie, agregowanie, wzbogacanie lub łączenie z danymi referencyjnymi — wszystko w ruchu — przed kierowaniem wyników do systemów podrzędnych, takich jak pulpity nawigacyjne, alerty lub bazy danych.

Takie podejście jest idealne w scenariuszach, w których małe opóźnienia i ciągłe aktualizacje mają krytyczne znaczenie, takie jak:

  • Monitorowanie sprzętu produkcyjnego pod kątem anomalii
  • Wykrywanie oszustw w transakcjach finansowych
  • Zasilanie dashboardów czasu rzeczywistego dla logistyki i operacji
  • Wyzwalanie alertów na podstawie progów czujników

Zagadnienia dotyczące niezawodności przesyłania strumieniowego

  • Użyj mechanizmu punktów kontrolnych, aby zagwarantować przetwarzanie co najmniej raz i umożliwić odzyskiwanie po awariach
  • Projektuj przekształcenia tak, aby były idempotentne i obsługiwały potencjalne zduplikowane przetwarzanie.
  • Wdrożyć znaczniki wodne dla zdarzeń przychodzących z opóźnieniem i przetwarzania zdarzeń poza kolejnością
  • Używaj kolejek martwych komunikatów dla wiadomości, których nie można przetworzyć

Wybór technologi

Magazyny danych:

Potok i aranżacja:

Lakehouse i nowoczesna analityka:

Następne kroki