GH GambleHub

Przetwarzanie partii

1) Cel i wartość

Przenośniki seryjne tworzą niezawodne dzienne/godzinne skrzynki wyświetlające dla:
  • Sprawozdawczość regulacyjna i finansowa (GGR/NGR, podatki, rejestry RG/AML).
  • BI i analityka produktów (kohorty, LTV, lejki konwersyjne).
  • Weryfikacja dokładności (OLTP i DWH, dostawcy/PSP), historyzacja (SCD).
  • Przygotowanie funkcji i zestawów treningowych do ML.

Kluczowe właściwości: przewidywalność, kompletność, odtwarzalność, niski koszt na jednostkę danych.

2) Architektura (odniesienie)

1. Ingest (raw capture): HTTP/gRPC, CDC z OLTP, dostawca uploads → Brąz.
2. Lakehouse: Brąz (surowy, tylko dodatek) → Srebrny (czysty/zgodny) → Złoty (służyć).
3. Orkiestra: Airflow/Dagster/Prefekt (DAG'i, zależności, przekładki, SLA).
4. Przetwarzanie: silniki iskrowe/trino/DBT/SQL; formaty podziału i ACID (Delta/Iceberg/Hudi).
5. DQ i kontrakty: Schema Registry, zasady DQ (YAML/SQL), testy konsumenckie.
6. Obsługa: warstwa BI/semantyczna, eksport raportowany (CSV/PDF/JSON + hash), API/GraphQL.
7. Obserwowalność: metryka rurociągu, rodowód, kłody, koszt (koszt/GB, koszt/zapytanie).

3) Częstotliwości i SLA

Codziennie (od D + 1 do 06:00) : raporty GGR, przesyłki regulacyjne, pojednania.
Godzina/kwasi-czas: panele operacyjne dla Ops/Finance.
Tygodniowo/miesięcznie: konkonkonsolidacja, modele i retroprocesje.

Zalecane SLO:
  • Prezentacje Gold-Daily są gotowe do 06:00 czasu lokalnego.
  • Świeżość Srebro p95 ≤ 15 min dla mikrobatów/≤ 2 h w ciągu dnia.
  • Kompletność ≥ 99. 5%, ważność (program) ≥ 99. 9%.

4) Dodatkowe pliki do pobrania i CDC

Podejścia:
  • CDC (Zmiana przechwytywania danych): Replikacja debezu/dziennika → Brąz → przyrosty w srebrze.
  • Znak wodny według czasu: 'updated _ at> max_loaded_ts'.
  • Porównanie hash: 'md5 (wiersz)' do wykrywania zmian.
  • Upsert/Merge: Idempotent Silver/Gold aktualizacje.
Przykład 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 (historia pomiarów)

SCD I: nadpisywanie (pisownia, drobne korekty).
SCD II: pełna historia ('valid _ from/valid _ to/is _ current').
SCD III: „przed/po” dla krótkich porównań.

SCD II (przykład):
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, Reprocessying

Zasypka: Początkowe wypełnienie/historyczne zasypki.
Ponowne przetwarzanie: ponowne obliczanie okien sklepu po edycji danych logicznych/korygujących.

Zasady:
  • Idempotencja (MERGE/upsert), odporność na brąz, wersioning logiczny.
  • Podróż w czasie dla powtarzających się metadanych migawek.
  • Poręcze: ograniczenia zakresów, kwot i konkurencyjnych miejsc pracy.
  • Dokumentacja: książka startowa z etapami i kryteriami wykonania.

7) Modelowanie warstwy

Brąz:
  • Tylko dodatek, 'event _ date', 'jurysdykcja', 'lokator' partycje.
  • Przechowujemy oryginalny ładunek (do kryminalistyki), naprawiamy 'ingested _ at'.
Srebro:
  • Normalizacja i standaryzacja: FK/katalogi, dedup, FX/timezones.
  • Tabele faktów/wymiarów (3NF/BCNF), SCD dla wymiarów kluczowych.
Złoto:
  • Denormalizowane sklepy dla BI/regulacja/finanse, gotowość SLA.
  • Materializacja kruszyw; niezmienne artefakty eksportowe (hash + WORM).

8) Jakość danych (DQ-as-code)

Przykład zasad YAML dla 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

Polityka reakcji: krytyczna → praca awaryjna + DLQ; major/minor → tag + report.

9) Warstwa semantyczna i sprawozdawczość

Ujednolicone definicje mierników (GGR/NGR, ARPPU, Retention) w sklepie semantycznym/metrycznym.

mierniki wersji; Integracja z pakietami BI/export

Raporty: CSV/JSON/PDF + sha256, download log and Legal Hold, jeśli to konieczne.

10) Prywatność, rezydencja, bezpieczeństwo

Minimalizacja PII: pseudonimizacja użytkowników; mapowanie - w osobnej pętli chronionej.
Miejsce zamieszkania danych: oddzielne katalogi/klucze dla EOG/UK/BR; zakaz przyłączenia się międzyregionalnego bez podstaw prawnych.
Szyfrowanie: TLS w tranzycie; KMS/CMK w stanie spoczynku; kontrole wywozu.
DSAR/RTBF: projekcje obliczeniowe, edycje selektywne; audyt dostępu.
Legal Hold: Archiwum WORM do artefaktów regulacyjnych.

11) Wydajność i koszt

Podział według daty/rynku/najemcy; Z-order/cluster według częstych predykatów.
Formaty: Parkiet + tabele ACID; kompresja/statystyki, OPTIMIZE/VACUUM.
Materializacja: stabilne agregacje w złocie; unikać „monolitycznych” miejsc pracy.
Kwoty/budżety: obciążenie zwrotne według zespołu; limity zasypki/ciężkie żądania.
Harmonogram: okna niskiego obciążenia (noc/weekend), priorytety kolejki.

12) Obserwowalność i zarządzanie

Metryka rurociągu: czas trwania, wskaźnik sukcesu, ponowne próby, przetworzone wiersze, koszt/zapytanie.
Wskaźniki DQ: kompletność, ważność, wyjątkowość, błędy FK, dryf.
mapa ogrzewania świeżości: według domeny i rynku; Deski rozdzielcze SLA.
Rodowód: Brązowe pochodzenie raportów; analiza wpływu przed zmianami.
Wpisy: budżety SLO, degradacja DQ, opóźnienia, wzrost kosztów.

13) Przykłady SQL/modelu

Normalizacja waluty (srebro):
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 Codzienna prezentacja (złoto):
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;
Kontrola kompletności (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) Procesy i RACI

R (odpowiedzialny): Data Engineering (DAG ', Silver/Gold models), Data Platform (infra, circuit register, DQ).
A (Odpowiedzialny): Szef Danych/Główny Inspektor Danych.
C (konsulowane): Zgodność/Prawna/DPO (PII/retencja), Finanse (FX/GGR), Ryzyko (RG/AML), SRE (SLO/стоноста).
I (Poinformowany): BI/Produkt/Marketing/Operacje.

15) Plan działania w zakresie wdrażania

MVP (4-6 tygodni):

1. Lakehouse Bronze/Silver (format ACID), CDC/przyrosty dla 2-3 domen.

2. DQ-like-code: 10-15 zasad dla płatności/Gameplay + CI walidacji.

3. Pierwszy Gold Showcase (GGR Daily) z SLA do 06:00; zgłoszony eksport + hash.

4. Świeżość/Kompletność/Deski rozdzielcze kosztów, podstawowe wpisy.

Faza 2 (6-12 tygodni):
  • SCD II - użytkownicy/gry/dostawcy; rozszerzenie domeny.
  • Warstwa semantyczna mierników; kontrole z OLTP/dostawcami (dokładność).
  • Procedury zasypywania/regeneracji, rodowód i analiza oddziaływania, regionalizacja (EOG/UK).
Faza 3 (12 + tygodnie):
  • Automatyczna symulacja zmian (sucha), budżety/kwoty, obciążenie zwrotne.
  • Automatyczna dokumentacja (strony produktu danych), ćwiczenia DR i odzyskiwanie czasu podróży.
  • Optymalizacja kosztów (klastrowanie, materializacja, TTL, próżnia).

16) Lista kontrolna przedsprzedaży

  • Umowy i schematy w rejestrze, testy zgodności są zielone.
  • Dodatkowe pliki do pobrania/CDC, MERGE jest idempotent.
  • Zasady DQ są aktywne; krytyczny → fail + DLQ; raport z naruszeń.
  • Deski rozdzielcze SLA/świeżości/pełności; Alerty są ustawione.
  • Polityka PII/DSAR/RTBF/Legal Hold potwierdzona przez Legal/DPO.
  • Run Book "i backfill/reprocessing/DR testowane.
  • Koszt kontrolowany (koszt/zapytanie, koszt/GB, kwoty).

17) Anty-wzory i jak uniknąć

Monolityczne dźwięki nocne: podzielone na niezależne kroki, równoległe przez strony.
Pełny przeładowanie niepotrzebnie: używać przyrostów/CDC/scalić.
Mieszanie PII w analityce: przechowywać mapy oddzielnie, stosować CLS/RLS.
Brak DQ/lineage: Wprowadź kod DQ-as i pochodzenie śladowe.
„Ręczne” zasypki: zautomatyzować i dokumentować, zakresy limitów.
Koszty niemożliwe do opanowania: klastrowanie, materializacja, polityka zatrzymywania.

18) Słownik (krótki)

CDC - Przechwytywanie zmian z OLTP.
SCD - powoli zmieniające się pomiary (I/II/III).
Lakehouse - jezioro danych + tablice ACID.
MERGE/Upsert - idempotent aktualizacji operacji.
Podróże w czasie - czytanie historycznych wersji tabel.
WORM - niezmienne przechowywanie artefaktów.

19) Najważniejsze

Przetwarzanie partii jest dyscypliną przewidywalnych, powtarzalnych i bezpłatnych rurociągów. Stosując się do zasad schematu-first, przyrostów/CDC, historyzacji SCD, DQ-as-code, obserwowalności i świadomej ekonomii, otrzymasz stabilne prezentacje i raporty Gold, zweryfikowane przez iskry i gotowe do audytu w dowolnym momencie.

Contact

Skontaktuj się z nami

Napisz do nas w każdej sprawie — pytania, wsparcie, konsultacje.Zawsze jesteśmy gotowi pomóc!

Rozpocznij integrację

Email jest wymagany. Telegram lub WhatsApp są opcjonalne.

Twoje imię opcjonalne
Email opcjonalne
Temat opcjonalne
Wiadomość opcjonalne
Telegram opcjonalne
@
Jeśli podasz Telegram — odpowiemy także tam, oprócz emaila.
WhatsApp opcjonalne
Format: kod kraju i numer (np. +48XXXXXXXXX).

Klikając przycisk, wyrażasz zgodę na przetwarzanie swoich danych.