GH GambleHub

Збагачення даних

1) Призначення та бізнес-цінність

Збагачення перетворює «сирі» події в корисні факти, додаючи контекст і ознаки:
  • Фінанси/звітність: fx-нормалізація сум, прив'язка до ринків/податкових ставок, розрахунок GGR/NGR.
  • Комплаєнс/AML/RG: скоринги ризику, санкційні/РЕР-мітки, RG-ліміти, поведінкові ознаки.
  • Маркетинг/продукт: джерела трафіку, сегменти, місії/квести, персоналізація.
  • SRE/операції: гео/ASN для трафіку, тип клієнта/пристрої, фічфлаги і релізи.

Ключовий результат - підвищення точності моделей, якість звітів і швидкість прийняття рішень.


2) Збагачуючі джерела (приблизний каталог)

Референс/каталоги: ігри, провайдери, ринки/юрисдикції, валюти, податкові таблиці, календар свят.
KYC/KYB/RG: рівні перевірки, статуси, самовиключення, ліміти, вікові групи.
AML/санкції/PEP: хіти скринінгу, списки, рівні ризику.
Мережі та пристрої: IP→geo/ASN, пристрій/OS/браузер, device fingerprint.
Платіжні провайдери (PSP): BIN-таблиці, методи, MCC, ризик-мітки.
FX/час: курси валют на дату події, локальні часові пояси/DST.
Контент і маркетинг: джерела/кампанії/UTM, афіліати, сегменти.
Моделі та евристики: переднавчені скоринги, ембеддинги, категоріальні маппінги.


3) Типи збагачення

Lookup-джойн: точкове зіставлення за ключем (game_id, BIN, ip_range, user_pseudo_id).
Dimension attach: приєднання вимірювань (dim.) до фактів.
Derived fields: обчислювані колонки (amount_base, local_time, tax_rate).
Aggregations/velocity: лічильники за вікна (N ставок/хв, сума депозитів/год).
Risk/behavioral features: «час з останньої події», share-of-wallet, нічна активність.
Geo/ASN/Device: код країни, регіон, оператор, тип пристрою/браузера.
Semantic mappings: класифікація провайдерів/ігор, кластери гравців.
ML-фічі: ознаки для онлайн/офлайн моделювання (Feature Store).


4) Де збагачувати: Batch vs Stream

Stream (real-time): антифрод, RG-тригери, алерти SRE - затримки p95 ≤ 2-5 с; lookup в кеші (Redis/Scylla), асинхронні запити до провайдерів з таймаутами.
Batch (мікро-батчі/щодня): вітрини Gold (GGR/RG/AML), звірки, звіти - стабільність і повнота важливіше латентності.
Гібрид: швидка онлайн-ознака + нічне перезбагачення (reconciliation/accuracy).


5) Архітектурний референс

1. Bronze - сирі події (append-only).
2. Silver (clean/conform) - нормалізація, ключі, первинні lookup'і (fx, geo, dim.) .
3. Enrichment Layer - розширені ознаки, агрегати вікон, ризик-мітки.
4. Feature Store - регістр ознак (онлайн/офлайн узгодженість).
5. Gold - вітрини під BI/регуляторку/моделі; незмінні артефакти.
6. Сервіси - API/GraphQL, звітні експорти, real-time альберти.

Компоненти: Kafka/Redpanda, Flink/Spark/Beam, Redis/Scylla (lookup), ClickHouse/Pinot (оперативне читання), Lakehouse (Delta/Iceberg/Hudi).


6) Контракти та схеми

Schema-first: 'event _ time','schema _ version', стабільні ключі (user_pseudo_id, game_id, transaction_id).
Відмітки збагачення: `enrichment. version`, `enrichment. sources`, `fx_source`, `geo_source`, `model_version`.
Версіонування: нові ознаки додаються як nullable; breaking-зміни - через '/v2'і подвійний запис.


7) Приклади збагачення (SQL/псевдокод)

7. 1 FX-нормалізація і локальний час

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 по IP (псевдокод)

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 Віконні ознаки швидкості депозитів (stream)

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 Сполучення з 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) Якість збагачення (DQ)

Мінімальні правила:
  • FX: 'fx _ rate _ used'не NULL,'fx _ source'з whitelist, розрахункова'amount _ base ≥ 0'.
  • Geo/ASN: частка успішних lookups ≥ 98% (по ринках),'country'в довіднику.
  • RG/AML мітки: 'valid _ from/valid _ to'( SCD II) не перетинаються; відсутність «дірок» в історії.
  • Агрегати/вікна: коректність вікон (немає подвійного обліку), completeness ≥ 99. 5%.
  • Версії моделей: 'model _ version'присутній, контроль дрейфу ознак.
Приклад YAML-правил:
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) Приватність і комплаєнс

Мінімізація PII: збагачуйте за псевдо-ID, реальні ідентифікатори - в окремому контурі.
Geo-локалізація та резидентність: маршрутизація по регіону (EEA/UK/BR), роздільні ключі шифрування.
DSAR/RTBF: збагачені проекції повинні підтримувати «приховування «/редакцію; зберігайте правову підставу для винятків.
Legal Hold: заморожування видалень для звітних артефактів/кейсів.


10) Спостережуваність і lineage

Лінедж: від сирої події → lookup/агрегати → вітрини/моделі; фіксуйте версії джерел («fx _ source», «geo _ source», «bin _ source»).
SLI/SLO: freshness p95 (Silver) ≤ 15 хв; успішні geo-lookups ≥ 98%; частка записів із заповненими ключовими ознаками ≥ 99%; latency enrich-стріму p95 ≤ 2-5 с.
Дашборди: теплова карта completeness за джерелами, карта версій довідників/моделей, монітор «дорогих» join'ів, дрейф ознак.


11) Вартість і продуктивність

Кеші/матеріалізація: часті lookup'і в Redis/Scylla; періодичні snapshot'и.
Компактні ознаки: зберігайте агрегати (а не «сирі» списки); використовуйте Parquet/колонічні формати.
Партіонування: за датою/ринком/тенантом; кластеризація по часто фільтруваних полях.
Адаптивна частота: важкі enrich-джоби - ночами; realtime - тільки критичні.
Chargeback: облік cost/query і cost/GB за командами/фічами.


12) Патерни і анти-патерни

Патерни:
  • Dimension Lookup + SCD II для RG/KYC/провайдерів.
  • Async Enrichment з таймаутами і fallback (мітка «unknown» + повтор).
  • Feature Store з online/offline-узгодженням і тестами репрохідності.
  • Rule-as-Code для збагачень (порогові/категоріальні карти).
Анти-патерни:
  • Жорстка прив'язка до зовнішніх API в гарячому шляху без кешу.
  • Немарковані версії джерел ('fx _ source','geo _ source').
  • Денормалізація «все з усім» в Silver (вибухи вартості/складності).
  • Привнесення PII в аналітичні шари.

13) Процеси і RACI

R (Responsible): Data Engineering (пайплайни enrich/stream), Domain Owners (семантика ознак), MLOps (Feature Store).
A (Accountable): Head of Data / Chief Data Officer.
C (Consulted): Compliance/Legal/DPO, Finance (FX/налоги), Risk (RG/AML), SRE.
I (Informed): BI/Продукт/Маркетинг/Операції.


14) Дорожня карта впровадження

MVP (2-4 тижні):

1. Каталог збагачувальних джерел (fx, geo, markets, RG/KYC).

2. Silver-нормалізація + базові lookup'і (fx/geo/dim.) .

3. Перші агрегати velocity (депозити/ставки) і enriched. v1 таблиці.

4. Дашборд completeness/freshness, версії джерел.

Фаза 2 (4-8 тижнів):
  • Підключення санкцій/РЕР/КУВ, BIN-таблиць PSP, device fingerprint.
  • Feature Store (ядро ознак) + онлайн-кеш, realtime-збагачення Flink.
  • DQ-правила на enrich-шар, lineage і «dry-run» симуляції.
Фаза 3 (8-12 тижнів):
  • Персоналізація (місії/квести) і RG/AML-детектори на онлайні.
  • Управління вартістю (квоти, матеріалізація, Z-order), мульти-регіон.
  • Автогенерація документації ознак і каталогу («feature cards»).

15) Чек-лист якості перед продом

  • Узгоджені ключі і схеми, версії джерел підписані.
  • DQ-правила на fx/geo/RG/санкції/вікна; алерти і SLO.
  • Кеші/таймаути і fallback для зовнішніх lookup'ів.
  • Лінедж і дашборди вартості/продуктивності.
  • Процедури DSAR/RTBF/Legal Hold для збагачених таблиць.
  • Документація ознак (owner, формули, SLO, вплив).

16) Часті помилки і як їх уникнути

Непомічені версії довідників/моделей: завжди фіксуйте'_ source'і'model _ version'.
Обчислення fx «заднім числом»: використовуйте курс на момент події; зберігайте джерело FX.
Змішування PII: токенізуйте та ізолюйте маппінги.
Подвійний облік в агрегатах: перевіряйте вікна і дедуп.
Синхронні зовнішні виклики без кешу: вводите async + кеш/ретраї.
Немає репрохідності фіч: єдиний код трансформацій online/offline, тести відповідності.


17) Глосарій (коротко)

Lookup/Dimension attach - приєднання довідника до факту за ключем.
Feature Store - регістр і сервінг ознак для ML.
SCD II - історизація вимірювань з інтервалами валідності.
FX - курси валют і нормалізація сум.
ASN - автономна система мережі; корисно для антифрода і гео-аналітики.


18) Підсумок

Збагачення - це дисципліна перетворення подій на знання: узгоджені ключі і схеми, контрольовані lookup'і і агрегати, версіоновані джерела, приватність за замовчуванням, DQ і спостережуваність. Слідуючи описаним патернам, ви отримаєте відтворювані, економічні і комплаєнтні вітрини і ознаки, готові до звітності, персоналізації і real-time детекторам ризику.

Contact

Зв’яжіться з нами

Звертайтеся з будь-яких питань або за підтримкою.Ми завжди готові допомогти!

Розпочати інтеграцію

Email — обов’язковий. Telegram або WhatsApp — за бажанням.

Ваше ім’я необов’язково
Email необов’язково
Тема необов’язково
Повідомлення необов’язково
Telegram необов’язково
@
Якщо ви вкажете Telegram — ми відповімо й там, додатково до Email.
WhatsApp необов’язково
Формат: +код країни та номер (наприклад, +380XXXXXXXXX).

Натискаючи кнопку, ви погоджуєтесь на обробку даних.