Adattárház alapok
ETL folyamat
Az ETL (Extract, Transform, Load) folyamat három fő lépésből áll:
-
Extract (Kinyerés) – Az adatok begyűjtése a forrásrendszerekből.
-
Transform (Transzformáció) – Az adatok átalakítása, tisztítása, történeti követés alkalmazása.
-
Load (Betöltés) – Az átalakított adatok betöltése az adatpiacba és a riportolási rétegbe.
1. Extract – Adatok kinyerése a forrásrendszerből
A forrásadatokat lehet fájlokból (CSV, JSON), relációs adatbázisokból (MySQL, PostgreSQL, Oracle) vagy API-kból kinyerni.
Példa SQL-lekérdezés egy forrásrendszerből:
🔹 Ez biztosítja, hogy csak az új vagy módosult rekordokat hozzuk el. (delta töltés)
Extract eszközök:
-
SQL alapú ETL: Talend, Apache Nifi, Airflow, ODI, Pentaho
-
Adatbázis replikáció: Debezium, Oracle GoldenGate
-
API integráció: Python (requests, pandas), Apache Kafka
2. Transform – Adatok előkészítése és transzformáció
Ebben a lépésben az adatokat megtisztítjuk, kiegészítjük és a megfelelő struktúrába helyezzük.
2.1 Adattisztítás
-
Hiányzó adatok kezelése:
-
Adatformátumok egységesítése:
2.2 SCD Type 2 változáskezelés
Az SCD Type 2 elv szerint az ODS-be történő betöltéskor:
-
Ha nincs változás, nem csinálunk semmit.
-
Ha van változás, az előző verziót lezárjuk (
valid_to
frissítés), és egy új rekordot beszúrunk.
Ellenőrizzük, hogy változott-e az ügyféladat:
Ha van változás, frissítjük a régi rekordot és beszúrjuk az újat:
3. Load – Adatok betöltése az adatpiacba (Data Mart)
A Data Mart rétegben már összesített, riportolásra kész adatok lesznek.
Példa aggregált riport betöltésére:
🔹 Ezzel minden nap frissül a riport az aktuális állapotokkal.
Automatizált ETL Folyamat Airflow-ban
Ha szeretnéd, az ETL folyamatot automatizálhatod Apache Airflow segítségével.
Egy egyszerű Python DAG (Directed Acyclic Graph) így néz ki:
Összegzés
-
Extract: Az új vagy módosult adatok lekérése.
-
Transform: Az adatok tisztítása, normálása és SCD Type 2 kezelése.
-
Load: Az adatok betöltése az adatpiacba riportolásra.
Automatizálás: Apache Airflow vagy SQL tárolt eljárások segítségével.
ODS
ODS (Operational Data Store) – Az Adattárház Integrációs Szintje
Az ODS (Operational Data Store) egy olyan köztes réteg az adattárház architektúrában, amely integrálja a különböző forrásrendszerek adatait, biztosítva azok történetiségét és változáskövetését.
Az ODS célja, hogy rugalmas, részletes és friss adatokkal szolgáljon a riporting és analitikai rendszerek számára, miközben minimalizálja az operatív rendszerek terhelését.
1. ODS Fő Jellemzői
✅ Köztes tároló a forrásadatok és az adatpiac (Data Mart) között
✅ Részletes, integrált adatok tárolása
✅ Történeti adatok kezelése (SCD Type 2, Type 3, Type 4)
✅ Gyors adathozzáférés biztosítása a riporting és BI rendszerek számára
✅ Időbélyegzett adatok az állapotváltozások követésére
2. ODS Felépítése és Táblaszerkezet
Az ODS réteg táblái az operatív rendszerekből érkező adatok történeti és aktuális állapotait tárolják.
2.1 Ügyfél (Customer) Tábla – SCD Type 2 Példa
🔹 Példa adatok:
Customer_SK | Customer_ID | Name | Phone | Valid_From | Valid_To | Is_Active | |
---|---|---|---|---|---|---|---|
1 | 1001 | Kovács Péter | peter@email.com | +3630111222 | 2024-01-01 12:00:00 | 2024-03-10 10:00:00 | FALSE |
2 | 1001 | Kovács Péter | peter.new@email.com | +3630111222 | 2024-03-10 10:00:00 | NULL | TRUE |
✅ Miért fontos ez?
-
Bármikor visszanézhetjük, hogy egy ügyfél milyen adatokkal rendelkezett egy adott időpontban.
-
Az ODS támogatja a riportokat, ahol fontos lehet egy adott időpillanat állapotának visszakeresése.
2.2 Szerződés (Contract) Tábla – SCD Type 2 Példa
🔹 Ha egy szerződés módosul, az előző verzió archiválódik, és egy új rekord keletkezik.
🔹 Példa adatok:
Contract_SK | Contract_ID | Customer_SK | Service_ID | Contract_Start | Contract_End | Status | Valid_From | Valid_To | Is_Active |
---|---|---|---|---|---|---|---|---|---|
1 | 5001 | 2 | 101 | 2024-01-10 | 2025-01-10 | Aktív | 2024-01-10 10:00:00 | NULL | TRUE |
2 | 5002 | 2 | 102 | 2024-02-01 | 2025-02-01 | Lezárt | 2024-02-01 10:00:00 | 2024-03-15 12:00:00 | FALSE |
2.3 Szolgáltatás (Service) Tábla – SCD Type 1 Példa
Ha egy szolgáltatás adatai nem igényelnek történetiséget, akkor SCD Type 1 megközelítést alkalmazunk, azaz egyszerűen frissítjük az adatokat.
🔹 Ebben az esetben nincs "valid_from" vagy "valid_to" mező, mindig a legfrissebb adatot tároljuk.
3. ODS Betöltési Folyamat (ETL)
Az ODS rétegbe való betöltés az SCD szabályok alapján történik.
3.1 Stage-ből ODS-be való betöltés – SCD Type 2
🔹 Mi történik itt?
-
Ha az adatok nem változtak, semmi sem történik.
-
Ha van változás, a régi rekordot lezárjuk (
valid_to = NOW()
), és egy új verziót hozunk létre.
3.2 Riportokhoz használt gyors lekérdezések
Mivel az ODS nagy mennyiségű adatot tartalmaz, érdemes indexeket és particionálást alkalmazni a gyors lekérdezésekhez.
Aktív ügyfelek listája:
Egy adott dátum szerinti állapot visszakeresése:
4. ODS és Adatpiac (Data Mart) Kapcsolata
-
Az ODS részletes, történeti adatokat tárol, de nem ideális riportkészítésre.
-
Az adatpiaci réteg (Data Mart) összegző lekérdezéseket, aggregált adatokat tartalmaz, amelyeket a BI rendszerek könnyebben tudnak használni.
🔹 Példa riport készítésére (Data Mart betöltés)
Összegzés
📌 Az ODS egy köztes réteg, amely biztosítja az adatok integrálását és változáskövetését.
📌 Az SCD Type 2 módszert alkalmazzuk a változások nyomon követésére.
📌 Az ODS adatai az adatpiaci rétegbe kerülnek aggregálás után.
Megjegyzések
Megjegyzés küldése