Az adatminőség-menedzsment (DQM) az adattárház kontextusában
1. Adatminőség dimenziók az adattárházban
A következő fő dimenziókat szoktuk mérni és monitorozni:
-
Pontosság: Az adatok megfelelnek a valóságnak.
-
Teljesség: Minden szükséges adat rendelkezésre áll.
-
Konzisztencia: Nincs ellentmondás különböző rendszerek között.
-
Időszerűség: Az adatok elérhetők az elvárt időben.
-
Érvényesség: Az adatok megfelelnek az előírt formátumnak, szabályoknak.
-
Egyediség: Nincs duplikált adat.
2. DQM lehetőségek az ETL során
A. Forrásadatok validálása (Extract)
-
Kulcsmezők (pl. ügyfél ID, tranzakció ID) hiányának ellenőrzése.
-
Formátumellenőrzés (pl. dátum, pénzügyi mezők).
-
Referencia-adatok (lookup táblák) egyezése.
-
Adattisztítás (pl. whitespace eltávolítás, szabványosítás).
B. Transzformációk ellenőrzése (Transform)
-
Derivált mezők újraszámítása ellenőrzéssel (pl. összegzés, különbség).
-
Üzleti szabályok beépítése (pl. ha státusz = "lezárt", akkor dátum nem lehet üres).
-
Kód-érték megfelelések ellenőrzése (pl. "M" → "Male").
-
Számszaki anomáliák detektálása (pl. tranzakció összege > 1M).
C. Célrendszerbe írás validálása (Load)
-
Sor- és mezőszám egyezés forrás és cél között.
-
Cél adatbázis integritásellenőrzése (idegen kulcs, indexek).
-
Hash összehasonlítás forrás és cél rekordokra.
-
Slowly Changing Dimension logikák követése (pl. változásnaplózás, SCD Type 2).
3. Anomália és hiba detektálás stratégiák
Szabály alapú detektálás
-
SQL szabályokkal:
-
Validációs szabályok táblában tárolva, dinamikus ellenőrzéshez.
Statikus küszöbértékek
-
Példa: napi tranzakció szám > 10000 → riasztás.
Példa: napi tranzakció szám < 1000 → riasztás.
Statikus referencia-összehasonlítás
-
Egy adott időszakhoz viszonyított arányváltozás.
Gép tanulási alapú módszerek (fejlettebb)
-
Idősoros anomália detektálás (Z-score, Isolation Forest stb.).
-
Használható pl. Power BI/ML Services vagy Python script segítségével.
4. Tipikus megvalósítási módok
1. Audit / DQ táblák
-
Egy
DQ_LOG
vagyDQ_RESULTS
tábla, ahol minden ellenőrzés eredménye naplózva van. -
Tárolható benne: táblanév, szabály neve, dátum, hibás rekordok száma.
2. Hibás rekordok staging-je
-
BAD_RECORDS
,REJECTED_ROWS
táblákban gyűjthetők.
3. Riasztási rendszer
-
Oracle
DBMS_SCHEDULER
+ PL/SQL e-mail vagy webhook értesítések. -
Power BI dashboardon figyelmeztető vizualizáció.
4. Automatizált DQ pipeline
-
ODI, Informatica, Talend: beépített DQ komponensek.
-
PL/SQL script alapon: rugalmas, de kézi fejlesztést igényel.
5. Javasolt lépések
-
Adatminőségi szabálytár létrehozása, üzleti logikákkal.
-
Staging táblákba töltés után auditálás, mielőtt betöltés történik a célba.
-
Hibás rekordok naplózása és visszacsatolása forrás rendszerek felé.
-
Automatikus riasztások kritikus szabályok megsértése esetén.
-
Időszakos DQ riportálás, dashboard formájában (pl. Power BI).
Adatminőség-ellenőrzési szabályokat (DQ Rules) megvalósítani ETL-folyamatba integrálva, PL/SQL és staging táblák használatával.
🎯 Cél: Adatminőségi szabálymotor + Audit naplózás
1. Adatminőségi szabálytár (master tábla)
🔹 Példák a dq_rules
táblába:
2. DQ audit napló tábla
3. Adatminőségi ellenőrző PL/SQL script
4. Futtatás: ETL után
Pl. ODI-ból vagy időzített job-ból:
✅ Előnyök a használat során
Előny | Magyarázat |
---|---|
Rugalmasság | A szabályok SQL-ben definiáltak, könnyen bővíthetők/karbantarthatók az adatmodellező vagy üzleti elemző által. |
Transzparencia | A dq_audit_log táblában minden ellenőrzés és eredmény nyomon követhető. |
Auditálhatóság | Időbélyeggel, szabálynévvel dokumentált minden futás, hasznos szabályozási megfeleléshez. |
Integrálhatóság | Egyszerűen csatlakoztatható bármilyen ETL folyamathoz (ODI, PL/SQL, Python). |
Riasztási lehetőség | Kiterjeszthető e-mail vagy webhook értesítésekkel kritikus szabálysértések esetén. |
Skálázhatóság | Több tábla és adatforrás is ellenőrizhető, csak új sorokat kell felvenni a dq_rules táblába. |
🧠 Bővítési lehetőségek
-
Több minta sor (
sample_rows
) tárolása JSON formátumban. -
Dashboard készítése a
dq_audit_log
adataiból Power BI-ban. -
Gép tanulási anomália detektor integrálása (
DBMS_DATA_MINING
, Python).
Nézzük meg gép tanulási alapú anomália detektálás integrálását adattárházi környezetbe.
🎯 Cél:
Az ETL folyamatban vagy az adattárház staging/fact adataiban automatizált, tanuló algoritmus alapú anomália detekciót végzünk, például:
-
szokatlan tranzakció összegek,
-
szokatlan rekordszám-növekedés,
-
ritka ügyfélviselkedés.
Két irányt is bemutatok:
📍 1. Oracle beépített: DBMS_DATA_MINING + One-Class SVM
Ez az Oracle beépített adatbányászati csomagja. (Licenszfüggő: Oracle Advanced Analytics opcióval érhető el.)
🔹 A megközelítés: One-Class SVM
-
Célja: egy normál viselkedés alapján megtanulja az elvárt mintázatot.
-
Ha új adat ettől jelentősen eltér: anomália.
A) Előkészület: adat előkészítése
Tegyük fel, van egy transactions
staging tábla:
Képezünk egy jellemzőkben aggregált táblát:
B) Modellezés létrehozása Oracle-ben
Beállítások:
C) Anomália detektálás lekérdezés
Ahol prediction = 0
: anomália.
📍 2. Python alapú anomália detekció + staging adatok elemzése
Ha nincs Oracle Advanced Analytics licensz, vagy rugalmasabb/modern megközelítést keresel.
A) Csatlakozás Oracle adatbázishoz:
B) One-Class SVM modell betanítása
C) Anomáliák visszatöltése Oracle-be
✅ Előnyök a gépi tanulás integrálásával
Előny | Magyarázat |
---|---|
Folyamatos tanulás | A rendszer képes új mintákat megtanulni és finomítani. |
Rejtett minták feltárása | Olyan anomáliákra is figyelmeztethet, amit szabályalapú módszer nem vesz észre. |
Integrálható ETL-be | Napi modell-futtatás és anomália-lista frissítés lehetséges. |
Kvizualizálható | Power BI/Python dashboardon megjeleníthető az eredmény. |
Lépésről lépésre felépítünk egy teljes Oracle → Python → Oracle pipeline-t, amely:
-
Oracle-ből kiolvassa az aggregált jellemzőket (
feature extraction
), -
Pythonban gépi tanulással anomáliát detektál (
One-Class SVM
), -
majd visszatölti az eredményt Oracle-be egy külön táblába.
📌 0. Előfeltételek
-
Oracle adatbázis elérhető Pythonból (
cx_Oracle
vagyoracledb
modullal) -
Python környezet telepített csomagokkal:
pandas
,scikit-learn
,oracledb
(vagycx_Oracle
)
✅ 1. Oracle tábla létrehozás
A) Alap staging tábla – transactions
Tölts bele néhány minta adatot:
B) Feature táblázat (ha fix struktúrát akarsz):
✅ 2. Python: Adatok kiolvasása Oracle-ből
A) Telepítés (ha még nincs)
B) Kód: adat letöltés és jellemzők aggregálása
✅ 3. Gép tanulás: One-Class SVM
✅ 4. Eredmény visszatöltése Oracle-be
A) Cél tábla Oracle-ben:
B) Feltöltés Pythonból
✅ 5. Ellenőrzés Oracle-ben
📊 6. (Opcionális) Vizualizáció Power BI / Grafana / Dash app segítségével
🎯 Eredmény:
Egy automatizált pipeline:
-
Oracle-ben lekéri az adatokat,
-
Pythonban elemzi őket gépi tanulással,
-
az anomáliákat visszatölti Oracle-be.
Egy többdimenziós modell használatával az anomália detektálásban – ez azt jelenti, hogy:
Nemcsak tranzakcióösszegek, hanem egyéb dimenziók (pl. idő, ügyfél típus, régió, tranzakció típus stb.) alapján tanulunk és keresünk anomáliát.
Ez összetettebb mintázatok detektálását teszi lehetővé.
🎯 Cél: Többdimenziós jellemzőkből (feature set) betanítani a modellt, és az eltérő viselkedésű rekordokat azonosítani.
📌 1. Bővített feature extraction Oracle-ben
Tábla: transactions
– most kiegészítve például régióval, ügyfél típussal stb.
Feature aggregáció + kódolás (lekérdezés Pythonból)
📌 2. Python: Feature Normalizálás és gépi tanulás
Betöltés:
Modell:
-
Az
IsolationForest
jól működik többdimenziós numerikus adatokon, automatikusan felismeri szokatlan eloszlásokat. -
contamination=0.05
azt jelzi, hogy kb. 5% anomáliát várunk.
📌 3. Anomália visszatöltés Oracle-be
Lásd előző válasz – ugyanúgy:
Oracle tábla bővítve:
📊 4. Előnyök – Többdimenziós modell
Előny | Példa |
---|---|
Finomabb detekció | Nemcsak az összeg, hanem például a régióváltás, típusváltás is anomália lehet |
Kombinációs viselkedés | Pl. VIP ügyfél kis összeggel = normális, de nem-VIP ugyanazzal = gyanús |
Adaptív tanulás | Ha az új viselkedés gyakran előfordul, az modell átképzése megtanulja |
Az ETL töltés azonosító (ETL Load ID) alapú anomália detektálás és a SHAP-alapú feature importance célzott elemzése remek eszköz az adattárház adatminőség-menedzsment (DQM) támogatására.
🧭 Cél
Az ETL folyamatok teljesítmény- vagy tartalomalapú anomáliáinak detektálása ETL_RUN_ID alapján:
-
Például: egy adott töltési körben szokatlanul sok NULL érték, kiugró rekordszám, ritka értékek.
-
A gépi tanulás után SHAP segítségével értjük meg, mely jellemző(k) járult(ak) hozzá leginkább az anomália minősítéshez.
🗂️ Lépések áttekintése
Lépés | Tevékenység |
---|---|
1. | 📋 Jellemzők gyűjtése minden ETL_RUN_ID-re |
2. | 🔢 Adatok előkészítése (normalizálás, nullák kezelése) |
3. | 🧠 Gép tanulási modell betanítása |
4. | 🚨 Anomália detekció minden ETL_RUN_ID-re |
5. | 🔍 SHAP-analízis: mitől lett anomália? |
6. | 💾 Eredmények visszatöltése Oracle-be vagy dashboardba |
🛠️ 1. Adatok előkészítése Oracle-ben
Példa etl_load_stats
tábla:
Töltsd ETL végén, például a staging táblák statisztikáiból.
🐍 2. Python: Adatok beolvasása és gépi tanulás
🧠 3. SHAP – Mitől lett anomália?
👉 Ez megmutatja: mely feature mennyire járult hozzá az adott anomália detektálásához.
További hasznos plot:
💾 4. Eredmény visszatöltése Oracle-be
Vagy használj cursor.executemany(...)
Oracle DML beszúráshoz.
📈 5. Vizualizáció
A SHAP analízis alapján dashboardot építhetsz:
-
Power BI / Grafana: anomaly_flag + SHAP score súly + top feature oszlopok
-
Python Dash app: kiválasztott ETL_RUN_ID és a SHAP waterfall diagram
✅ Előnyök
Előny | Miért hasznos |
---|---|
Objektív minőségértékelés | Gépi tanulással mért mintázat-eltérés |
Magyarázható döntések | SHAP révén nem csak „mi történt”, hanem „miért” |
ETL hibák korai észlelése | Pl. elcsúszott időzóna, nem várt adatforrás tartalom |
Automatizálható pipeline | Beépíthető napi ETL workflow végére |
🧩 1. SHAP értékek visszatöltése Oracle-be
🎯 Cél:
A detektált anomáliákhoz tartozó magyarázó jellemzőket (feature-importance) elmenteni Oracle adatbázisba, hogy utólag is elemezhetők legyenek.
📌 Példa SHAP értékek JSON formátumban
💾 Tábla Oracle-ben
📤 Adatok visszatöltése Pythonból
Ha Oracle 12c vagy régebbi,
MERGE
használata ajánlott.
📊 2. Interaktív Dashboard – Python Dash-ben
🎯 Cél:
Webes felület, ahol kiválasztható egy ETL_RUN_ID
, és az ahhoz tartozó SHAP magyarázat grafikus formában megtekinthető.
📦 Szükséges csomagok:
🖼️ Dash példakód
✅ Power BI alternatíva
-
SHAP értékeket bontsd külön oszlopokra (max 10 feature-ig) és töltsd külön táblába (pl.
etl_shap_flat
) -
Power BI lekérdezi a táblát ODBC-n keresztül
-
Használj „bar chart”-ot a SHAP értékek vizualizálására
-
Slicer:
etl_run_id
🧭 Összefoglalás
Funkció | Technikai megoldás |
---|---|
SHAP érték tárolás | Oracle CLOB (JSON) vagy flatten oszlopok |
Vizuális magyarázat | Dash waterfall vagy bar plot |
Automatizálás | Beépítés ETL végén futó pipeline-ba |
Alternatíva | Power BI oszlop-alapú SHAP vizualizáció |
Ezután nézzük lépésről lépésre egy teljes SHAP flattenelés példát, amit Power BI-ben könnyedén használhatsz.
🧩 Cél:
-
A SHAP értékeket oszlopos (flattened) formában elmentjük Oracle táblába.
-
Power BI közvetlenül olvassa (ODBC/DirectQuery).
-
Cél az egyes ETL_RUN_ID-khez tartozó legfontosabb feature-importance vizualizáció.
🛠️ 1. SHAP flattenelés Pythonban
Feltételezzük, hogy már van egy betanított modellünk (model
) és egy shap_values
objektumunk.
▶️ Példa Python kód:
🔄 2. Flatten: legfontosabb N feature és értékek külön oszlopban
Itt 5 legfontosabb SHAP értéket emelünk ki (abszolút érték szerint):
🧱 3. Oracle tábla létrehozása
🚀 4. Visszatöltés Oracle-be
📊 5. Power BI vizualizáció
🧱 Előkészület:
-
Kapcsolódj az
etl_shap_flat
táblához Oracle ODBC-n vagy DirectQuery-vel. -
Importálj
etl_run_id
,feature_x_name
,feature_x_shap
oszlopokat.
🧰 Vizualizáció ötlet:
A. Slicer vagy Dropdown:
-
Típus:
etl_run_id
-
Cél: felhasználó kiválaszthatja az anomáliás töltési kört.
B. Stacked bar chart vagy column chart:
-
Tengely:
feature_1_name
...feature_5_name
(concat oszlopként is:name + shap
) -
Érték:
feature_1_shap
...feature_5_shap
C. Kiegészítő elemek:
-
Tooltip: SHAP érték
-
Szín: pozitív/negatív SHAP érték alapján (pl. piros/zöld)
✅ Összefoglalás
Lépés | Eredmény |
---|---|
SHAP flattenelés | 5 legfontosabb feature oszlopos táblában |
Oracle mentés | etl_shap_flat tábla automatikusan frissül |
Power BI | Dinamikus SHAP érték vizualizáció ETL_RUN_ID szintjén |
Automatizálható? | Igen, heti vagy napi futással CRON vagy Airflow alatt |
🎨 Power BI mockup terv: SHAP Feature Explanation Dashboard
📁 1. Adatforrás
Tábla: etl_shap_flat
(Oracle)
Oszlopnév | Leírás |
---|---|
etl_run_id | Töltési azonosító |
feature_1_name | Top 1 feature neve |
feature_1_shap | Top 1 SHAP érték |
feature_2_name | Top 2 feature neve |
feature_2_shap | Top 2 SHAP érték |
... | ... |
feature_5_name | Top 5 feature neve |
feature_5_shap | Top 5 SHAP érték |
🧱 2. Power BI modellezés
A tábla automatikusan betöltődik, unpivot szükséges a Power Query M szakaszban.
📌 Power Query lépések:
Ez átalakítja a struktúrát egy ilyen formába:
etl_run_id | Index | name | shap |
---|---|---|---|
1001 | 1 | null_ratio | 0.123 |
1001 | 2 | load_time | -0.789 |
… | … | … | … |
📊 3. Oldalelrendezés: "SHAP Magyarázat" oldal
🧭 Felső szekció:
-
Dropdown slicer:
etl_run_id
-
→ szűri a diagramokat
-
-
KPI mutatók (pl. össz. SHAP értékek összege, pozitív/negatív SHAP különbség)
📊 Bal oldali panel:
-
Stacked bar chart vagy column chart
-
Tengely (X):
shap
érték -
Tengely (Y):
name
-
Szín: Pozitív (zöld), Negatív (piros)
-
📈 Jobb oldali panel:
-
Waterfall diagram
-
Mutatja a SHAP értékek együttes hatását
-
X tengely: feature név
-
Y tengely: SHAP érték
-
🧠 4. Tippek vizualizációhoz
-
ToolTip: Mutassa az
etl_run_id
,feature_name
,shap
értéket -
Conditional formatting: SHAP értékek színkódolása
-
Segéddiagram: Pie chart vagy treemap, SHAP érték abszolút érték szerinti súlyarány
🔄 5. Frissítés és automatizálás
-
Power BI Gateway + Oracle ODBC = naprakész frissítés
-
Tábla automatikusan frissül Python pipeline futása után
📦 Export sablonként (ha saját Power BI-hez kellene):
Mivel .pbix
fájlokat nem tudok közvetlenül generálni, de elkészítheted az alábbi alapján:
-
Csatlakozz Oracle ODBC-n keresztül.
-
Power Query-ben alkalmazd az unpivot + parsing scriptet.
-
Készíts a fenti layout szerint dashboardot.
-
Használj slicer vezérlőt
etl_run_id
alapján. -
Színezéshez állíts be színskálát (
Conditional Formatting → Rules
).
Megjegyzések
Megjegyzés küldése