Ugrás a fő tartalomra

Adattárház lookup töltések

 A lookup töltéseket (előfordulás keresés vagy referenciaadatok becsatolása) akkor használjuk az adattárház töltése során, amikor egy rekordhoz kapcsolódó kiegészítő információkat kell beemelni egy másik táblából, általában egy dimenziótáblából.





Mikor használunk lookup töltéseket?

Értéklisták biztosítása: Lookup táblák segítségével előre meghatározott értéklistákat biztosítunk, amelyekből a felhasználók választhatnak. Ez különösen hasznos olyan mezők esetében, mint például országkódok, állapotkódok, vagy egyéb kategorizált adatok1.

Adatvalidáció: Lookup táblák segítségével biztosíthatjuk, hogy csak érvényes értékek kerüljenek be az adatbázisba. Például egy státusz mező csak előre meghatározott értékeket (pl. "Aktív", "Inaktív") tartalmazhat1.

Adatkonzisztencia fenntartása: A lookup táblák használatával elkerülhetjük a duplikált vagy hibás adatok bevitelét, mivel a felhasználók csak a meghatározott értékek közül választhatnak


Milyen mezőtípusoknál használjuk?

Kód mezők: Olyan mezők, amelyek előre meghatározott kódokat tartalmaznak, például országkódok, állapotkódok, termékkódok stb.

Kategória mezők: Olyan mezők, amelyek kategorizált adatokat tartalmaznak, például termékkategóriák, ügyféltípusok stb.

Állapot mezők: Olyan mezők, amelyek az adatok aktuális állapotát jelzik, például "Aktív", "Inaktív", "Törölt" stb.


Miért van szükség rájuk?

Adatminőség javítása: A lookup táblák használatával biztosíthatjuk, hogy csak érvényes és konzisztens adatok kerüljenek be az adatbázisba

Egyszerűsített adatbevitel: A felhasználók számára egyszerűbbé válik az adatbevitel, mivel előre meghatározott értékek közül választhatnak

Karbantartás és frissítés: A lookup táblák segítségével könnyebben karbantarthatók és frissíthetők az értéklisták, anélkül, hogy az adatbázis struktúráját módosítani kellene



Mire jó még?

Kódok és megnevezések becsatolása

Példa: Az ügyfelek tábla csak egy országkódot (COUNTRY_CODE) tartalmaz, de a riportokhoz szükség van az ország nevére is.

Megoldás: A lookup segítségével az LKP_COUNTRY táblából hozzárendeljük az ország nevét (COUNTRY_NAME).


Főbb dimenziók beazonosítása és becsatolása

Példa: Az értékesítési tranzakciók (FACT_SALES) csak az ügyfél azonosítóját (CUSTOMER_ID) tartalmazzák.

Megoldás: A lookup betölti a megfelelő dimenzió-azonosítót (D_CUSTOMER.DIM_CUSTOMER_ID), hogy a riportolás dimenzió-alapú legyen.



SCD (Slowly Changing Dimension) típusú frissítésekhez

Példa: Egy termék megnevezése változhat az idő múlásával.

Megoldás: A lookup az aktuális aktív verziójú rekordot keresi ki a dimenziótáblából (D_PRODUCT).



Kapcsolati kulcsok generálása és validálása

Példa: Egy megrendelés-tétel tábla (ORDER_ITEMS) tartalmaz egy PRODUCT_CODE mezőt, de az adattárházban kulcsot használunk (PRODUCT_ID).

Megoldás: A lookup összeköti az ORDER_ITEMS.PRODUCT_CODE értéket a D_PRODUCT.PRODUCT_ID mezővel.



Hierarchikus adatok kezelése

Példa: Egy dolgozó egy adott részleghez tartozik, amely egy adott üzletághoz kapcsolódik.

Megoldás: Lookup segítségével hozzárendelhetjük a részleghez tartozó üzletág azonosítóját.



Milyen mezőtípusoknál használunk lookupokat?

MezőtípusPéldaLookup célja
Kódok (szöveges vagy numerikus)COUNTRY_CODE, PRODUCT_CODEMegnevezések, egyéb információk becsatolása
Kulcsok (szintetikus ID-k, surrogate key-ek)CUSTOMER_ID, PRODUCT_IDDimenzió-azonosítók hozzárendelése
Hierarchikus mezőkDEPARTMENT_ID, REGION_IDKapcsolódó entitások kikeresése
Dátumok/időbélyegekORDER_DATE, JOIN_DATEIdőszakos aggregációkhoz lookupolás
SCD támogatásához szükséges mezőkVALID_FROM, VALID_TO, IS_CURRENTAz aktuális rekordok kiválasztása


Miért van szükség lookupokra?

  1. Relációs összefüggések kezelése

    • Az adattárház táblái normalizált vagy denormalizált formában lehetnek. Lookupok segítenek az összekapcsolásban.
  2. Jobb riportálhatóság

    • Ahelyett, hogy egy riport csak ID-kat mutatna, lookup betöltésekkel értelmezhető megnevezések kerülnek a riportokba.
  3. Történeti adatok kezelése (Slowly Changing Dimensions)

    • Lookup segít az aktuális és múltbeli rekordok közötti különbségtételben (pl. SCD Type 2).
  4. Konzisztencia és adatminőség javítása

    • Az adatokat egységesen lehet kezelni és validálni a lookup táblák segítségével.
  5. Adattisztítás és szabványosítás

    • Lookupok segítenek a hibás vagy eltérő formátumú adatok egységesítésében (pl. US, USA, United StatesUnited States).


Minták:


SQL alapú lookup

SELECT o.ORDER_ID, o.PRODUCT_CODE, p.PRODUCT_NAME 
FROM ORDER_ITEMS o
LEFT JOIN D_PRODUCT p 
ON o.PRODUCT_CODE = p.PRODUCT_CODE;


Lookup megvalósítása SQL-ben egy tábla frissítéséhez

UPDATE ORDER_ITEMS oi
SET oi.PRODUCT_ID = (
    SELECT p.PRODUCT_ID 
    FROM D_PRODUCT p 
    WHERE p.PRODUCT_CODE = oi.PRODUCT_CODE
);


Lookup használata egy ETL eszközben (pl. Oracle Data Integrator - ODI, Informatica, Talend)

Lookup transformation segítségével egy külső dimenziótáblából csatlakoztatjuk az adatokat.
Például egy LKP_CUSTOMER lookup objektum visszaadja az ügyfél nevét az ügyfél ID alapján.



Hogyan halad tovább a forrás adat az adattárházban?

Mivel az adattárház Stage terület (betöltési réteg) egy átmeneti tár, ahol az adatokat nyers formában tároljuk, közvetlenül a forrásrendszerből betöltve. Az Integrációs terület az adattárház egyik kulcsfontosságú rétege, ahol az adatok tovább tisztításra, transzformációra és integrációra kerülnek mielőtt a végső célstruktúrába (pl. dimenziók, ténytáblák) betöltődnének.



Adattisztítás és szabványosítás

  • Duplikátumok kiszűrése
  • Nem megfelelő karakterek cseréje, adatmezők formátumának átalakítása
  • Hiányzó adatok kezelése (pl. default értékek beállítása)

Integráció és konszolidáció

  • Ha több forrásból érkeznek adatok, akkor azok összefésülése és normalizálása
  • Adatok egyedi azonosítókkal való ellátása (pl. ügyfél egyedi azonosítása különböző rendszerekből)

Delta képzés (változásdetektálás)

  • Az új és módosított rekordok azonosítása az előző állapothoz képest
  • Általában hash-kód vagy timestamp alapján történik

Történetkezelés előkészítése

  • Slowly Changing Dimension (SCD) támogatás előkészítése
  • Verziókezelés bevezetése (pl. VALID_FROM, VALID_TO)

Adatok kulcsokkal való ellátása

  • Surrogate kulcsok generálása, amelyek a végső dimenziókban is szerepelni fognak

Milyen technikai mezőket használunk az Integrációs területen?

Az integrációs területen gyakran használunk olyan technikai mezőket, amelyek segítik az adatok változáskövetését, auditálását és az adatminőség ellenőrzését.

1️⃣ Elsődleges technikai mezők

Mező neveJelentése / Szerepe
SRC_SYSTEMA forrásrendszer azonosítója (ha több rendszerből érkeznek adatok)
EXTRACT_DATEAz adat betöltésének dátuma a Stage területre
LOAD_DATEAz adat betöltésének dátuma az Integrációs rétegbe
RECORD_SOURCEMegmutatja, hogy az adott rekord melyik táblából vagy rendszerből származik
HASH_VALUEA rekord tartalmának egyedi hash-kódja a változásdetektáláshoz
IS_ACTIVEFlag, amely mutatja, hogy az adott rekord érvényes-e (pl. SCD Type 2 esetén)

2️⃣ Változásdetektálási mezők

Mező neveJelentése
DELTA_FLAGMutatja, hogy az adott rekord új (I - Insert), módosult (U - Update) vagy törölt (D - Delete)
PREV_HASH_VALUEAz előző állapot hash értéke (segít megállapítani, hogy az adat módosult-e)
LAST_UPDATE_DATEAz utolsó módosítás időpontja
VALID_FROMAz érvényesség kezdete (SCD Type 2)
VALID_TOAz érvényesség vége (SCD Type 2)


A Stage → Integrációs terület töltésénél szabályrendszere

1️⃣ Adattisztítás és minőségellenőrzés

  • Hiányzó, duplikált vagy érvénytelen adatok kiszűrése
  • Karakterkódolási problémák kezelése

2️⃣ Teljesítményoptimalizálás

  • Indexek és particionálás használata az integrációs táblákon
  • MERGE vagy INSERT/UPDATE stratégiák alkalmazása az inkrementális betöltésre

3️⃣ Változásdetektálás (Change Data Capture - CDC)

  • Hash-alapú összehasonlítás: ha nincs timestamp vagy egyéb változáskövető mező
  • Timestamp-alapú: ha az időbélyegek megbízhatóak
  • Log alapú CDC: ha a forrásrendszer támogatja az adatbázis naplók figyelését

4️⃣ Adatkonzisztencia biztosítása

  • Integritási szabályok ellenőrzése: például, hogy egy megrendelés mindig létező ügyfélhez tartozzon
  • Üzleti szabályok alkalmazása az adattisztítás során

5️⃣ Historikus adatok kezelése (SCD támogatás)

  • SCD Type 1: régi adat felülírása
  • SCD Type 2: időbélyeges verziózás (VALID_FROM, VALID_TO)
  • SCD Type 3: korlátozott számú történeti állapot megőrzése egy külön oszlopban







Megjegyzések