GH GambleHub

Analytics und ETL-Pipelines

(Abschnitt: Technologie und Infrastruktur)

Kurze Zusammenfassung

Die analytische Pipeline verwandelt die „rohen“ Betriebsereignisse von iGaming (Wetten, Einzahlungen, PSP-Webhooks, Spielprotokolle) in nachhaltige Metrikvitrinen (GGR/NGR, LTV, Retention, Anti-Fraud-Signale). Grundlagen: Einheitliches Schichtenmodell (Bronze/Silber/Gold), Instrumentaldisziplin DQ/Lineage, Inkrementalität und Idempotenz, Beobachtbarkeit und SLO, Wertsteuerung. Entscheidungen werden unter Berücksichtigung des Lastprofils (Turnierspitzen), der Regulatorik (PII/Lokalisierung) und der Datenfrischungsanforderungen des Unternehmens getroffen.

1) Architekturen: ETL vs ELT, Batch vs Stream

ETL (Extract → Transform → Load): Transformation vor dem Laden in DWH. Geeignet, wo Transformationen eine kontrollierte Umgebung/Geheimnisse vor der „Wolke“ erfordern.
ELT (Extract → Load → Transform): Rohstoffe in Lake/Lakehouse/DWH, dann SQL/Engine (dbt/SQL-Skripte). Praktisch für Säulenmotoren und flexible Iterationen.
Batch: geplante Fenster (alle 5/15/60 Minuten, nightly). Billig und vorhersehbar.
Stream: почти real-time (Kafka → Flink/ksqlDB → OLAP). Für Near-Real-Time-Vitrinen (5-60 Sekunden) und Anti-Fraud/CRM-Signale.
Hybrid: Bronze füllt sich mit Stream, Silber/Gold sind inkrementelle Batch-Modelle.

Empfehlung: in iGaming halten ELT + Streaming: Ereignisse über CDC/outbox → Bronze (eine Minute Frische), inkrementelle Transformationen in Silber/Gold.

2) Schichtenmodell (Medallion)

Bronze (Raw): Rohe Ereignisse/CDC ohne Geschäftslogik. Parkett/ORC-Formate, Schemata wie sie sind, minimale Validierung.
Silver (Conformed): Reinigung, Deduplizierung, ID-Normalisierung, SCD-Messungen, Vereinheitlichung von Währungen/Zeitzonen.
Gold (Marts): Geschäftsvitrinen (Fakten/Maße, Würfel), materialisierte Ansichten, Voraggregationen (Tage/Länder/Produkte).

Vorteile: Reproduzierbarkeit, transparente Evolution, unterschiedliche SLOs und TTLs nach Schichten.

3) Quellen und Verladung: CDC, Outbox, Dateien

CDC (Change Data Capture): Änderungsströme aus OLTP (Postgres/MySQL) mit Ordnungsgarantie und Idempotenz.
Outbox-Muster: Ereignisse werden in der Outbox-Tabelle/Sammlung in der Service-Transaktion aufgezeichnet → der Connector veröffentlicht in den Bus/See.
Datei-Upload: PSP-Uploads, Affiliate-Berichte; Verwenden Sie Manifeste, Checksum und Zulassungsverzeichnisse.

Praktiken: Quellen werden versioniert (Schema-Version), für jede Quelle gibt es einen Vertrag von Feldern und Qualitätserwartungen.

4) Orchestrierung: DAG, Abhängigkeiten, Deploy

DAGs: Explizite Abhängigkeiten (raw → staging → dims → facts → marts)

Aufgabenidempotenz: Wiederinbetriebnahme ohne Nebenwirkungen (partition-overwrite, 'MERGE '/upsert).
Trennung von Umgebungen: Dev/Stage/Prod, Förderung von Artefakten, „manual approval“ (manuelle Zulassung) für teure Backfill.
Planung: cron/Zeitfenster + Event-Trigger (nach Ankunft der Dateien/Parties).
Secrets: vom Secret Manager; Verbot von Geheimnissen im DAG-Code.

Beispiel für einen abstrakten DAG (Pseudocode):
python with DAG("dwh_daily", schedule="0  ") as dag:
bronze = ingest_cdc(source="payments", partition=hour())
silver = dedup_normalize(input=bronze)
dims  = build_dimensions(input=silver)
facts = build_facts(input=silver, dims=dims)
marts = build_marts(input=facts)
bronze >> silver >> [dims, facts] >> marts

5) Datenqualität (DQ) und Lineage

DQ-Schecks: Vollständigkeit (count, late arrivals), Eindeutigkeit der Schlüssel, Bereiche/Domänenregeln (Betrag ≥ 0, Währung im Verzeichnis).
Auslöseschwelle: Hard Stop/Soft-Fail mit Alert abhängig von der Kritikalität der Tabelle.
Lineage/Verzeichnis: Reporte zur Quelle (Tabellen, Spalten, Metriken), Besitzer, Dokumentation, PII-Klassifizierung.
Schemaüberwachung: automatische Kompatibilitätstests (backward-/forward-kompatibel), alert auf „breaking“ -Änderungen.

6) Modellierung: SCD, surrogate Tasten, Normalisierung

SCD2 für Messungen: 'valid _ from/valid _ to/is _ current', surrogate key ('_ sk') und natural key ('_ id').
SCD1: Überschreiben für unwichtige Attribute (z. B. Schnittstellenlokal).
Surrogate-Tasten: stabile'_ sk 'für Join, natürliche Tasten für Einzigartigkeit.
Normalisierung der Dimensionen: Snowflake, wo die Hierarchien tief sind; ansonsten Star für die Geschwindigkeit.

7) Inkrementelle Modelle und Partitionierung

Wasserzeichen ('updated _ at', 'ingest _ ts'): nur neue/geänderte Zeilen lesen.
Inkrementelle Strategien: 'MERGE' durch Geschäftsschlüssel, 'INSERT OVERWRITE' durch Parteien, 'DELETE + INSERT' für kleine Parteien.
Partitionierung: nach Datum/Stunde/Region; Clustering (sort keys/Z-order) über Filter- und Join-Schlüssel.
Materialisierte Ansichten: GGR/NGR-Voraggregation, Cache beliebter Abschnitte.
Approx-Einheiten: HLL/approx_distinct für billige Top-N-Vitrinen.

Beispiel für ein inkrementelles' MERGE'(verallgemeinert):
sql
MERGE INTO fact_deposits f
USING staging_deposits s
ON (f. deposit_id = s. deposit_id)
WHEN MATCHED THEN UPDATE SET amount = s. amount, status = s. status, updated_at = s. updated_at
WHEN NOT MATCHED THEN INSERT (...)
VALUES (...);

8) Backfill, Reprocessing und History Management

Backfill: separate DAGs mit Ressourcenlimits und Fenstern; ein klares „Fenster der Wahrheit“ (z.B. 2024-01-01.. 2025-11-05).

Reprocessing: deterministische Transformationen → wiederholter Durchlauf ergeben das gleiche Ergebnis. Modellcodeversionen protokollieren

Zeitreise/Tabellenversionen: praktisch für Untersuchungen und DR „logische Fehler“.
Retraction: Richtlinie zum Datenrückruf (Löschung/Korrektur) mit Protokollierung.

9) CLO/SLA/SLO des Förderers

Frische: Bronze ≤ 1-5 min, Silber ≤ 15 min, Gold ≤ 60 min (Beispiel).
Zuverlässigkeit: DAG Erfolgsquote ≥ 99. x%.
Leistung: p95/p99 Knotendauer; Zeitbudget für die Partei.
Lag-Monitoring: Ingest-Stream-Rückstand, Warteschlangentiefe, „Late Data“ -Anteil.
Alerts: Frische/Volumen Störung, DQ-Fails, steigende Kosten für Scans, Abbau von MV.

10) Kosten: Vorhersage und Optimierung

Parties und Cluster minimieren das Scanvolumen.
Materialisierung der Hot Marker (Tage/Länder/Produkte).
Ergebnis-Cache/MVs für häufig verwendete Dashboards.
Überwachung der Häufigkeit von Neustarts (keine „alle 5 Minuten“ ohne Grund).
TTL: Aggressive Bronze Retention, Medium Silver, Long Gold (nur Aggregate).
Kapazitätsplanung: Katalogmetriken, Prognose von Turnier-/Kampagnenspitzen.

11) Sicherheit, PII und Lokalisierung

Datenklassifizierung: PII/Finanz/Operativ.
Verschlüsselung: in Ruhe und im Transit; KMS/rollenbasierter Zugriff.
De-Identifizierung: Hashing/Masking, separate Spalten mit Schlüsseln.
RLS/Vuhi für Multi-Tenant (von 'tenant _ id').
Lokalisierung: Lager- und Verarbeitungsbereiche nach Regionen (EU/TR/LATAM); Export nur an zugelassene Standorte.
Audit: Lesen/Schreiben in kritische Tabellen, Zugriff auf das Verzeichnis.

12) Beobachtbarkeit: Metriken, Protokolle, Traces

Pipelinemetriken: Dauer der Aufgaben, Warteschlange, Fehler, Retrays, Menge der verarbeiteten Bytes/Zeilen, Kosten.
Protokolle: strukturiert; Korrelation durch 'trace _ id '/' run _ id'.

Von der Quelle bis zum Schaufenster (ingest → transform → load → BI)

Dashboards: Frische der Schichten, Erfolg der DAGs, top teure Anfragen, p95/p99.

13) Tools (Benchmarks nach Rolle)

Orchestrierung: DAG-Orchestratoren (mit Planer, Retrays, Alert, Secrets).
Transformationen: SQL-Modellierung („Modelle als Code“), Unit-Tests der Modelle, Dokumentation.
DQ/Contracts: Prüf- und SLA-Frameworks für Datensätze.
Linie/Verzeichnis: automatische Konstruktion des Abhängigkeitsgraphen, Suche nach dem Besitzer.
Streaming: Fenster-/Aggregations-Prozessoren, sink/source-Konnektoren.

(Spezifische Anbieter werden für den Unternehmensstack und die Sicherheitsanforderungen ausgewählt.)

14) Musterbeispiele

GGR-Schaufenstervorlage (Generalized SQL)

sql
CREATE OR REPLACE TABLE mart_ggr_daily AS
SELECT
DATE(b. ts) AS d,
c. country_code,
SUM(b. stake) AS stake_sum,
SUM(b. win)  AS win_sum,
SUM(b. stake - b. win) AS ggr
FROM fact_bets b
JOIN dim_country c ON c. country_sk = b. country_sk AND c. is_current
WHERE b. ts >= DATE_SUB(CURRENT_DATE, INTERVAL 60 DAY)
GROUP BY d, c. country_code;

Inkrementelles Modell mit „Wasserzeichen“

sql
INSERT INTO fact_bets PARTITION (dt)
SELECT
FROM staging_bets
WHERE updated_at > (SELECT COALESCE(MAX(watermark), '1970-01-01') FROM _meta_watermarks WHERE table='fact_bets');
-- then update watermark

DQ-Prüfungen (Idee)

sql
-- 1) key uniqueness
SELECT deposit_id FROM fact_deposits GROUP BY deposit_id HAVING COUNT()>1;

-- 2) negative amounts (error)
SELECT FROM fact_deposits WHERE amount < 0;

15) Checkliste Umsetzung

1. Definieren Sie das Wörterbuch der Metriken (GGR/NGR/LTV/Retention) und Eigentümer.
2. Fixieren Sie die SLO Frische über die Bronze/Silber/Gold Schichten.
3. Standardisieren Sie Quellverträge (Schemata, DQ, SLA).
4. Erstellen Sie einen DAG-Graph mit idempotenten Schritten und isolierten Geheimnissen.
5. Implementieren Sie Inkrementalität (MERGE/overwrite nach Partitur) und „Wasserzeichen“.
6. Aktivieren Sie DQ (Critical/Soft Checks), Lineage und das Datenverzeichnis.
7. Passen Sie die Beobachtbarkeit (Metriken, Protokolle, Traces) und Alerts an.
8. Geben Sie die Retention/TTL und die Backfill/Reprocessing-Richtlinie ein.
9. Bieten Sie PII-Kontrolle, Verschlüsselung, RLS und Lokalisierung.
10. Verbringen Sie einen Spieltag: Simulieren Sie den Fall der Quelle, „brechen“ Schaltungen, Masse Backfill.

16) Antipatterns

„Eine Nacht ETL für alles“ ohne Parties und Inkrementalität.
Das Fehlen von DQ und Lineage → widersprüchliche Berichte und eine „Geisterjagd“.
Komplette Überarbeitung der Tabellen bei jeder Inbetriebnahme (Kostenexplosion).
Harte Bindung in Echtzeit ohne Puffer/Retrays.
Mischen Sie PII und öffentliche Schaufenster ohne Segmentierung und Maskierung.
Keine Retraktions-/Löschrichtlinie (Fehler können nicht korrigiert werden).

Ergebnisse

Die nachhaltige Analysepipeline bei iGaming ist der ELT + Streaming-Upload in ein Schichtenmodell mit hartem DQ/Lineage, inkrementellen Modellen, transparentem Orchestrator und messbaren SLOs. Fügen Sie Kostenkontrolle, PII/Lokalisierungsrichtlinien, regelmäßige Backfill/DR-Übungen hinzu - und Ihre Analyseplattform skaliert zuverlässig für Turnierspitzen und reagiert auf das Geschäft mit Daten der richtigen Frische und Qualität.

Contact

Kontakt aufnehmen

Kontaktieren Sie uns bei Fragen oder Support.Wir helfen Ihnen jederzeit gerne!

Integration starten

Email ist erforderlich. Telegram oder WhatsApp – optional.

Ihr Name optional
Email optional
Betreff optional
Nachricht optional
Telegram optional
@
Wenn Sie Telegram angeben – antworten wir zusätzlich dort.
WhatsApp optional
Format: +Ländercode und Nummer (z. B. +49XXXXXXXXX).

Mit dem Klicken des Buttons stimmen Sie der Datenverarbeitung zu.