Wzbogacanie danych
1) Cel i wartość biznesowa
Wzbogacenie przekształca „surowe” wydarzenia w użyteczne fakty, dodając kontekst i znaki:- Finansowanie/sprawozdawczość: znormalizowanie kwot, wiążące dla rynków/stawek podatkowych, obliczanie GGR/NGR.
- Zgodność/AML/RG: wyniki ryzyka, sankcje/tagi PEP, limity RG, charakterystyka behawioralna.
- Marketing/produkt: źródła ruchu, segmenty, misje/zadania, personalizacja.
- SRE/operacje: geo/ASN dla ruchu, typ klienta/urządzenia, flagi funkcji i wydania.
Kluczowym rezultatem jest poprawa dokładności modeli, jakości sprawozdań i szybkości podejmowania decyzji.
2) Źródła wzbogacania (przykład katalog)
Referencje/katalogi: gry, dostawcy, rynki/jurysdykcje, waluty, tabele podatkowe, kalendarz wakacyjny.
KYC/KYB/RG: poziomy weryfikacji, statusy, samodzielne wyłączenia, limity, grupy wiekowe.
AML/sankcje/PEP: badania przesiewowe, wykazy, poziomy ryzyka.
Sieci i urządzenia: IP → geo/ASN, urządzenie/OS/przeglądarka, odcisk palca urządzenia.
Dostawcy płatności (PSP): tabele BIN, metody, MCC, znaczniki ryzyka.
FX/czas: kursy wymiany na dzień zdarzenia, lokalne strefy czasowe/DST.
Treść i marketing: źródła/kampanie/UTM, filie, segmenty.
Modele i heurystyka: wstępnie wyszkolone punktowanie, wbudowanie, kategoryczne odwzorowanie.
3) Rodzaje wzbogacania
Lookup-joint: mapowanie punktu za pomocą klucza (game_id, BIN, ip_range, user_pseudo_id).
Dołączyć wymiar: przymocowanie wymiarów (wym.) do faktów.
Pola pochodne: kolumny obliczeniowe (amount_base, local_time, tax_rate).
Agregacje/prędkość: liczniki dla okien (N stawki/min, ilość depozytów/godzinę).
Funkcje ryzyka/zachowania: „czas od ostatniego zdarzenia”, udział w portfelu, nocna aktywność.
Geo/ASN/Device: kod kraju, region, operator, typ urządzenia/przeglądarki.
Mapowania semantyczne: dostawca/klasyfikacja gier, klastry graczy.
Funkcje ML do modelowania online/offline (sklep z funkcjami)
4) Gdzie wzbogacić: Batch vs Stream
Strumień (w czasie rzeczywistym): antyfraud, wyzwalacze RG, wpisy SRE - p95 opóźnień ≤ 2-5 s; szukać buforów (Redis/Scylla), asynchroniczne żądania do dostawców z terminami.
Partia (mikro-partia/dziennie): Prezentacje złota (GGR/RG/AML), pojednania, raporty - stabilność i kompletność są ważniejsze niż opóźnienie.
Hybryda: szybka funkcja online + nocne ponowne wzbogacanie (pojednanie/dokładność).
5) Odniesienie architektoniczne
1. Brąz - surowe zdarzenia (tylko dodatek).
2. Srebro (czyste/zgodne) - normalizacja, klucze, primary lookup'i (fx, geo, dim.).
3. Warstwa wzbogacająca - rozszerzone właściwości, kruszywa okienne, etykiety ryzyka.
4. Funkcja Sklep - charakterystyczny rejestr (spójność online/offline).
5. Złoto - prezentacje dla BI/regulatora/modeli; niezmienne artefakty.
6. Usługi - API/GraphQL, zgłoszony eksport, wpisy w czasie rzeczywistym.
Komponenty: Kafka/Redpanda, Flink/Iskra/Wiązka, Redis/Scylla (wyszukiwanie), ClickHouse/Pinot (czytanie na żywo), Lakehouse (Delta/Iceberg/Hudi).
6) Umowy i systemy
Schemat pierwszy: 'event _ time', 'schema _ version', klucze stabilne (user_pseudo_id, game_id, transaction_id).
Znaki wzbogacania: "wzbogacenie. wersja „,” wzbogacenie. źródła ',' fx _ source ',' geo _ source ',' model _ version '.
Wersioning: nowe funkcje są dodawane jako nieważne; zmiany łamania - poprzez '/v2'i podwójne wejście.
7) Przykłady wzbogacania (SQL/pseudokoda)
7. Normalizacja 1 FX i czas lokalny
sql
SELECT p.transaction_id,
p.amount_orig,
p.currency,
r.rate AS fx_rate_used,
p.amount_orig r.rate AS amount_base,
p.event_time,
convert_timezone(m.tz, 'UTC', p.event_time) AS local_time,
r.fx_source
FROM bronze.payment_events p
JOIN dim.fx_rates r
ON r.date = DATE(p.event_time) AND r.ccy_from = p.currency AND r.ccy_to = 'EUR'
JOIN dim.markets m ON m.code = p.market;
7. 2 Geo/ASN według IP (pseudokoda)
python geo = geo_db.lookup(ip)
asn = asn_db.lookup(ip)
record["geo_country"] = geo.country record["asn"] = asn.number record["enrichment"]["geo_source"] = "mmdb:2025-10-01"
7. 3 Oznaki szybkości depozytu (strumień)
sql
SELECT user_pseudo_id,
TUMBLE_START(event_time, INTERVAL '10' MINUTE) AS win_start,
COUNT() AS deposits_10m,
SUM(amount_base) AS deposits_sum_10m
FROM silver.payments
GROUP BY user_pseudo_id, TUMBLE(event_time, INTERVAL '10' MINUTE);
7. 4 Interfejs z limitami RG
sql
SELECT b., r.daily_deposit_limit, r.self_exclusion
FROM silver.bets b
LEFT JOIN dim.rg_limits r USING (user_pseudo_id);
8) Jakość wzbogacania (DQ)
Zasady minimalne:- FX: 'fx _ rate _ used', nie NULL, 'fx _ source' z białej listy, obliczona 'amount _ base ≥ 0'.
- Geo/ASN: udział pomyślnych wyszukiwań ≥ 98% (według rynku), „kraj” w katalogu.
- Etykiety RG/AML: „valid _ from/valid _ to” (SCD II) nie przecinają się; brak „dziur” w historii.
- Agregaty/okna: poprawność okien (brak podwójnego liczenia), kompletność ≥ 99. 5%.
- Wersje modelu: 'model _ version' obecny, funkcja sterowania dryfem.
yaml table: enriched.payments rules:
- name: fx_present type: not_null column: fx_rate_used severity: critical
- name: country_known type: in_set column: geo_country set_ref: ref.countries severity: major
- name: rg_scd_valid type: scd_validity columns: [valid_from, valid_to]
severity: major
9) Prywatność i zgodność
Minimalizacja PII: wzbogacona o pseudo-ID, prawdziwe identyfikatory - w osobnej pętli.
Lokalizacja geograficzna i rezydencja: routing według regionu (EEA/UK/BR), oddzielne klucze szyfrujące.
DSAR/RTBF: wzbogacone projekcje muszą wspierać „ukrywanie „/redakcję; zachować podstawę prawną dla wyjątków.
Blokada prawna: zamrożenie usunięć artefaktów/spraw raportowanych.
10) Obserwowalność i rodowód
Linage: z surowego zdarzenia → wyszukiwanie/agregaty → wyświetlacze/modele; naprawić wersje źródłowe ('fx _ source', 'geo _ source', 'bin _ source').
SLI/SLO: świeżość p95 (Silver) ≤ 15 мий; udane wyszukiwanie geograficzne ≥ 98%; Odsetek rekordów z ukończonymi kluczowymi właściwościami ≥ 99% opóźnień wzbogaconych strumieniem p95 ≤ 2-5 s.
Deski rozdzielcze: kompletność mapy ciepła według źródeł, mapa wersji książek/modeli referencyjnych, monitor „drogich” połączeń, dryf znaków.
11) Koszt i wydajność
Bufory/materializacja: częste wyszukiwanie "i w Redis/Scylla; okresowe migawki.
Znaki zwarte: kruszywa sklepowe (nie wykazy „surowe”); używać formatów Parkiet/kolumna.
Podział: według daty/rynku/najemcy; klastrowanie przez często filtrowane pola.
Częstotliwość adaptacyjna: ciężkie, wzbogacone miejsca pracy - w nocy; czas rzeczywisty - tylko krytyczny.
Obciążenie zwrotne: koszt/zapytanie i księgowanie kosztów/GB według zespołu/funkcji.
12) Wzory i anty-wzory
Wzory:- Wyszukiwanie wymiarów + SCD II dla RG/KYC/dostawców.
- Async Wzbogacenie z czasem i wycofaniem (etykieta „nieznana” + powtórzenie).
- Funkcja Sklep z negocjacjami online/offline i testami powtarzalności.
- Kod reguły wzbogacania (mapy progowe/kategoryczne).
- Sztywne wiązanie z zewnętrznymi interfejsami API w gorącej ścieżce bez pamięci podręcznej.
- Nieznakowane wersje źródłowe ('fx _ source', 'geo _ source').
- Denormalizacja „wszystko ze wszystkim” w Silver (eksplozje kosztów/złożoności).
- Wprowadzenie PII do warstw analitycznych.
13) Procesy i RACI
R (Odpowiedzialny): Inżynieria Danych (rurociągi wzbogacone/strumień), Właściciele domen (semantyka funkcji), MLOps (Sklep z funkcjami).
A (Odpowiedzialny): Szef Danych/Główny Inspektor Danych.
C (Konsulat): Zgodność/Prawna/DPO, Finance (FX/налова), Risk (RG/AML), SRE.
I (Poinformowany): BI/Produkt/Marketing/Operacje.
14) Plan działania w zakresie wdrażania
MVP (2-4 tygodnie):1. Katalog źródeł wzbogacania (fx, geo, rynki, RG/KYC).
2. Normalizacja srebra + podstawowe wyszukiwanie "i (fx/geo/dim.) .
3. Pierwsze agregaty to prędkość (depozyty/stawki) i wzbogacone. v1 tabele.
4. Deska rozdzielcza kompletność/świeżość, wersje źródłowe.
Faza 2 (4-8 tygodni):- Podłączenie sankcji/PEP/BCL, tabele PSP BIN, odcisk palca urządzenia.
- Funkcja Sklep (podstawowe funkcje) + pamięć podręczna online, rzeczywiste wzbogacenie Flink.
- Zasady DQ dla wzbogaconych warstw, linii i symulacji suchych.
- Personalizacja (misje/zadania) i detektory RG/AML online.
- Zarządzanie wartością (kontyngenty, materializacja, Z-order), wielobranżowe.
- Automatyczna generacja dokumentacji funkcji i katalogu.
15) Lista kontrolna jakości przed sprzedażą
- Spójne klucze i schematy, podpisane wersje źródłowe.
- Zasady DQ dotyczące fx/geo/RG/sankcje/okna; wpisy i SLO.
- Caches/timeouts i fallbacks for external lookups.
- Deski rozdzielcze i kosztowe/wydajnościowe.
- Procedury DSAR/RTBF/Legal Hold dla wzbogaconych tabel.
- Dokumentacja charakterystyki (właściciel, wzory, SLO, wpływ).
16) Częste błędy i jak ich uniknąć
Niewykorzystane wersje odniesienia/modelu: Zawsze naprawić '_ source' i 'model _ version'.
Obliczanie fx „z mocą wsteczną”: zastosować szybkość w czasie zdarzenia; przechowywać źródło FX.
Mieszanie PII: Tokenizuj i izoluj mapy.
Podwójne liczenie w jednostkach: sprawdź okna i dedup.
Synchroniczne połączenia zewnętrzne bez pamięci podręcznej: wprowadź async + cache/retrai.
Nie ma powtarzalności funkcji: pojedynczy kod transformacji online/offline, testy zgodności.
17) Słownik (krótki)
Wyszukiwanie/Wymiar dołączyć - dołączyć księgę odniesienia do faktu przez klucz.
Funkcja Sklep - charakterystyka rejestru i porcji dla ML.
SCD II - historyzacja pomiarów z przedziałami ważności.
FX - kursy wymiany walut i normalizacja kwot.
ASN - autonomiczny system sieciowy; przydatne do zwalczania nadużyć finansowych i geoanalizy.
18) Najważniejsze
Wzbogacanie to dyscyplina przekształcania wydarzeń w wiedzę: spójne klucze i schematy, kontrolowane wyszukiwanie i agregaty, wersjonowane źródła, domyślna prywatność, DQ i obserwowalność. Wykonując opisane wzory, otrzymasz odtwarzalne, ekonomiczne i zgodne z wymogami prezentacje i znaki gotowe do raportowania, personalizacji i wykrywaczy ryzyka w czasie rzeczywistym.