GH GambleHub

Пакетна обробка даних

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

Batch-конвеєри формують надійні щоденні/погодинні вітрини для:
  • Регуляторної та фінансової звітності (GGR/NGR, податки, RG/AML реєстри).
  • BI і продуктової аналітики (когорти, LTV, конверсійні воронки).
  • Звірок точності (OLTP↔DWH, провайдери/PSP), історизації (SCD).
  • Підготовки фічів і навчальних наборів для ML.

Ключові властивості: передбачуваність, повнота, відтворюваність, низька вартість на одиницю даних.

2) Архітектура (референс)

1. Ingest (raw capture): HTTP/gRPC, CDC з OLTP, провайдерські вивантаження → Bronze.
2. Lakehouse: Bronze (raw, append-only) → Silver (clean/conform) → Gold (serve).
3. Оркестрація: Airflow/Dagster/Prefect (DAG'і, залежності, ретраї, SLA).
4. Обробка: Spark/Trino/DBT/SQL-рушії; партіонування та ACID-формати (Delta/Iceberg/Hudi).
5. DQ і Контракти: Schema Registry, DQ-правила (YAML/SQL), consumer-tests.
6. Сервінг: BI/семантичний шар, звітні експорти (CSV/PDF/JSON + hash), API/GraphQL.
7. Спостережуваність: метрики пайплайнів, lineage, логи, вартість (cost/GB, cost/query).

3) Частоти і SLAs

Щоденні (D + 1 до 06:00 лок.) : звіти GGR, регуляторні вивантаження, звірки.
Погодинні/квазіреалтайм: оперативні панелі для Ops/Фінансів.
Тижневі/місячні: фінконсолідація, моделі та ретропроцеси.

Рекомендовані SLO:
  • Gold-щоденні вітрини готові до 06:00 локального часу.
  • Freshness Silver p95 ≤ 15 хв для мікробатчів/ ≤ 2 год для денних.
  • Completeness ≥ 99. 5%, Validity (схема) ≥ 99. 9%.

4) Інкрементальні завантаження та CDC

Підходи:
  • CDC (Change Data Capture): Debezium/лог-реплікація → Bronze → інкременти в Silver.
  • Watermark за часом: `updated_at > max_loaded_ts`.
  • Хеш-порівняння: 'md5 (row)'для детекту змін.
  • Upsert/Merge: ідемпотентні оновлення Silver/Gold.
Приклад MERGE (Delta/Iceberg):
sql
MERGE INTO silver. payments AS s
USING staging. payments_delta AS d
ON s. transaction_id = d. transaction_id
WHEN MATCHED THEN UPDATE SET
WHEN NOT MATCHED THEN INSERT;

5) SCD (історизація вимірювань)

SCD I: перезапис (орфографія, мінорні виправлення).
SCD II: повнофункціональна історія ('valid _ from/valid _ to/is _ current').
SCD III: «до/після» для коротких порівнянь.

SCD II (приклад):
sql
MERGE INTO dim. users_scd t
USING stage. users u
ON t. user_pseudo_id = u. user_pseudo_id AND t. is_current = TRUE
WHEN MATCHED AND (t. country <> u. country OR t. rg_status <> u. rg_status)
THEN UPDATE SET t. is_current = FALSE, t. valid_to = CURRENT_TIMESTAMP
WHEN NOT MATCHED
THEN INSERT (user_pseudo_id, country, rg_status, valid_from, valid_to, is_current)
VALUES (u. user_pseudo_id, u. country, u. rg_status, CURRENT_TIMESTAMP, NULL, TRUE);

6) Backfill и Reprocessing

Backfill: первинне заповнення/історичне довантаження.
Reprocessing: перерахунок вітрин після правок логіки/виправлення даних.

Принципи:
  • Ідемпотентність (MERGE/upsert), незмінюваність Bronze, версіонування логіки.
  • Time-travel для повторних прогонів; снапшоти метаданих.
  • Guardrails: обмеження діапазонів, квот і конкурентних джобів.
  • Документація: runbook з кроками і критеріями завершення.

7) Моделювання шарів

Bronze:
  • Append-only, партії'event _ date','jurisdiction','tenant'.
  • Зберігаємо вихідний payload (для форензики), фіксуємо'ingested _ at'.
Silver:
  • Нормалізація та стандартизація: FK/довідники, дедуп, FX/таймзони.
  • Таблиці фактів/вимірювань (3NF/BCNF), SCD для ключових вимірювань.
Gold:
  • Денормалізовані вітрини під BI/регуляторку/фінанси, SLA готовності.
  • Матеріалізація агрегатів; незмінні артефакти експорту (hash + WORM).

8) Якість даних (DQ-як-код)

Приклад YAML-правил для Silver:
yaml table: silver. payments slo:
freshness_minutes: 15 completeness_percent: 99. 5 rules:
- name: amount_positive type: range column: amount_base min: 0. 01 severity: critical
- name: currency_whitelist type: in_set column: currency set: [EUR,USD,GBP,TRY,BRL]
severity: major
- name: unique_tx type: unique columns: [transaction_id]
severity: critical
- name: fk_user type: foreign_key column: user_pseudo_id ref_table: dim. users_scd severity: critical

Політики реакції: critical → fail job + DLQ; major/minor → тег + звіт.

9) Семантичний шар і звітність

Єдині визначення метрик (GGR/NGR, ARPPU, Retention) в semantic-layer/metrics-store.
Версіонування метрик; інтеграція з BI/експортними пакетами.
Звіти: CSV/JSON/PDF + sha256, журнал вивантажень і Legal Hold при необхідності.

10) Приватність, резидентність, безпека

PII-мінімізація: псевдонімізація користувачів; маппінг - в окремому захищеному контурі.
Data residency: роздільні каталоги/ключі по EEA/UK/BR; заборона крос-регіональних join'ів без правової підстави.
Шифрування: TLS in-transit; KMS/CMK at-rest; Контроль експортів.
DSAR/RTBF: обчислювані проекції, селективні редагування; аудит доступів.
Legal Hold: WORM-архіви для регуляторних артефактів.

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

Партіонування за датою/ринком/тенантом; Z-order/cluster за частими предикатами.
Формати: Parquet + ACID-таблиці; компресія/статистика, OPTIMIZE/VACUUM.
Матеріалізація: стабільні агрегації в Gold; уникати «монолітних» джобів.
Квоти/бюджети: chargeback за командами; ліміти на backfill/важкі запити.
Планування: вікна низького навантаження (ніч/вихідні), пріоритети черг.

12) Спостережуваність і управління

Метрики пайплайнів: duration, success rate, retries, rows processed, cost/query.
DQ-метрики: completeness, validity, uniqueness, FK-ошибки, drift.
Freshness heatmap: по доменах і ринках; SLA-дашборди.
Lineage: походження від Bronze до звітів; impact-аналіз перед змінами.
Алерти: SLO-бюджети, деградації DQ, затримки, зростання вартості.

13) Приклади SQL/моделей

Нормалізація валют (Silver):
sql
CREATE OR REPLACE TABLE silver. payments AS
SELECT p. transaction_id,
p. user_pseudo_id,
p. currency,
p. amount_orig,
r. rate AS fx_rate_used,
p. amount_orig r. rate AS amount_base,
p. market,
CAST(p. event_time AS TIMESTAMP) AS event_time
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';
Щоденна вітрина GGR (Gold):
sql
CREATE OR REPLACE VIEW gold. ggr_daily AS
SELECT
DATE(b. event_time) AS event_date,
b. market,
g. provider_id,
SUM(b. stake_base) AS stakes_eur,
SUM(p. amount_base) AS payouts_eur,
SUM(b. stake_base) - SUM(p. amount_base) AS ggr_eur
FROM silver. fact_bets b
LEFT JOIN silver. fact_payouts p
ON p. user_pseudo_id = b. user_pseudo_id
AND p. game_id = b. game_id
AND DATE(p. event_time) = DATE(b. event_time)
JOIN dim. games g ON g. game_id = b. game_id
GROUP BY 1,2,3;
Контроль повноти (DQ SQL):
sql
SELECT market, event_date, COUNT() AS n
FROM silver. fact_bets
GROUP BY market, DATE(event_time) AS event_date
HAVING n = 0;

14) Процеси і RACI

R (Responsible): Data Engineering (DAG'і, моделі Silver/Gold), Data Platform (інфра, регістр схем, DQ).
A (Accountable): Head of Data / Chief Data Officer.
C (Consulted): Compliance/Legal/DPO (PII/retention), Finance (FX/GGR), Risk (RG/AML), SRE (SLO/стоимость).
I (Informed): BI/Продукт/Маркетинг/Операції.

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

MVP (4-6 тижнів):

1. Lakehouse Bronze/Silver (ACID-формат), CDC/інкременти для 2-3 доменів.

2. DQ-як-код: 10-15 правил для Payments/Gameplay + CI-валідація.

3. Перша Gold-вітрина (GGR Daily) з SLA до 06:00; звітний експорт + hash.

4. Дашборди Freshness/Completeness/Cost, базові алерти.

Фаза 2 (6-12 тижнів):
  • SCD II для users/games/providers; розширення доменів.
  • Семантичний шар метрик; звірки з OLTP/провайдерами (accuracy).
  • Процедури backfill/reprocessing, lineage і impact-аналіз, регіоналізація (EEA/UK).
Фаза 3 (12 + тижнів):
  • Автосимуляція змін (dry-run), бюджети/квоти, chargeback.
  • Автоматична документація (data product pages), DR-навчання і time-travel-відновлення.
  • Оптимізація вартості (кластеризація, матеріалізація, TTL, вакуум).

16) Чек-лист перед продом

  • Контракти і схеми в Registry, тести сумісності зелені.
  • Інкрементальні завантаження/CDC працюють, MERGE ідемпотентний.
  • DQ-правила активні; critical → fail + DLQ; Звіт про порушення.
  • SLA/дашборди свіжості/повноти; алерти налаштовані.
  • Політики PII/DSAR/RTBF/Legal Hold підтверджені Legal/DPO.
  • Runbook'і backfill/reprocessing/DR протестовані.
  • Вартість під контролем (cost/query, cost/GB, квоути).

17) Анти-патерни і як уникнути

Монолітні нічні джоби: дробіть на незалежні кроки, паралельті по партіях.
Full-reload без потреби: використовуйте інкременти/CDC/мерджі.
Змішування PII в аналітиці: тримайте маппінги окремо, застосовуйте CLS/RLS.
Відсутність DQ/lineage: вводьте DQ-як-код і відстежуйте походження.
«Ручні» backfill'и: автоматизуйте і документуйте, обмежуйте діапазони.
Некерована вартість: кластеризація, матеріалізація, ретеншн-політики.

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

CDC - захоплення змін з OLTP.
SCD - повільно мінливі вимірювання (I/II/III).
Lakehouse - data lake + ACID-таблиці.
MERGE/Upsert - ідемпотентні операції оновлення.
Time-travel - читання історичних версій таблиць.
WORM - незмінне зберігання артефактів.

19) Підсумок

Пакетна обробка - це дисципліна передбачуваних, відтворюваних і комплаєнтних конвеєрів. Дотримуючись принципів schema-first, інкрементів/CDC, SCD-історизації, DQ-як-код, спостережуваності і усвідомленої економіки, ви отримаєте стабільні Gold-вітрини і звіти, що перевіряються звірками і готові до аудиту в будь-який момент.

Contact

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

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

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

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

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

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