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ípus | Példa | Lookup célja |
---|---|---|
Kódok (szöveges vagy numerikus) | COUNTRY_CODE , PRODUCT_CODE | Megnevezések, egyéb információk becsatolása |
Kulcsok (szintetikus ID-k, surrogate key-ek) | CUSTOMER_ID , PRODUCT_ID | Dimenzió-azonosítók hozzárendelése |
Hierarchikus mezők | DEPARTMENT_ID , REGION_ID | Kapcsolódó entitások kikeresése |
Dátumok/időbélyegek | ORDER_DATE , JOIN_DATE | Időszakos aggregációkhoz lookupolás |
SCD támogatásához szükséges mezők | VALID_FROM , VALID_TO , IS_CURRENT | Az aktuális rekordok kiválasztása |
Miért van szükség lookupokra?
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.
Jobb riportálhatóság
- Ahelyett, hogy egy riport csak ID-kat mutatna, lookup betöltésekkel értelmezhető megnevezések kerülnek a riportokba.
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).
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.
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 States
→United States
).
- Lookupok segítenek a hibás vagy eltérő formátumú adatok egységesítésében (pl.
Minták:
Hogyan halad tovább a forrás adat az adattárházban?
✅ 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ő neve | Jelentése / Szerepe |
---|---|
SRC_SYSTEM | A forrásrendszer azonosítója (ha több rendszerből érkeznek adatok) |
EXTRACT_DATE | Az adat betöltésének dátuma a Stage területre |
LOAD_DATE | Az adat betöltésének dátuma az Integrációs rétegbe |
RECORD_SOURCE | Megmutatja, hogy az adott rekord melyik táblából vagy rendszerből származik |
HASH_VALUE | A rekord tartalmának egyedi hash-kódja a változásdetektáláshoz |
IS_ACTIVE | Flag, amely mutatja, hogy az adott rekord érvényes-e (pl. SCD Type 2 esetén) |
2️⃣ Változásdetektálási mezők
Mező neve | Jelentése |
---|---|
DELTA_FLAG | Mutatja, hogy az adott rekord új (I - Insert), módosult (U - Update) vagy törölt (D - Delete) |
PREV_HASH_VALUE | Az előző állapot hash értéke (segít megállapítani, hogy az adat módosult-e) |
LAST_UPDATE_DATE | Az utolsó módosítás időpontja |
VALID_FROM | Az érvényesség kezdete (SCD Type 2) |
VALID_TO | Az é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
vagyINSERT/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
Megjegyzés küldése