GH GambleHub

Tarixiy maʼlumotlar bilan ishlash

1) Vazifasi va prinsiplari

Maqsad: o’tmishdagi holatlarni hisobotlar, modellar va tekshiruvlar takrorlanadigan, aniq va komplayentli bo’lishi uchun saqlash va qayta ishlash.

Prinsiplar:
  • Time-aware by design: sxemalar va soʻrovlardagi aniq vaqt modellari.
  • Reproducibility: D sanasi uchun bir xil hisobot har doim bir xil natijani beradi.
  • Auditability: isbotlanadigan kelib chiqish (lineage), o’zgarmas qatlamlar, kerakli joyda WORM.
  • Cost-aware: arxiv qatlamlari, kompresssiya, tushunarli SLA bilan cold storage.
  • Privacy-by-design: retrospektiv operatsiyalar va huquqiy so’rovlarda PIIni boshqarish.

2) Vaqt modellari

Event-time: haqiqiy voqea vaqti (stavka, depozit).
Processing-time: tizim yozuvni qayta ishlaganda (har xil boʻlishi mumkin).
Bitemporal: oʻzgarishlar uchun ham event-, ham processing-vaqtni saqlash.
Validity oraliqlari:’valid _ from’,’valid _ to’,’is _ current’.
As-of queries: ma’lumotlarni tanlash «T paytida bilganingizdek».

Maydon namunasi:
sql event_time TIMESTAMP, -- event time processed_at TIMESTAMP, -- TIMESTAMP valid_from processing time, -- start of version validity valid_to TIMESTAMP, -- end of validity (NULL if current)
is_current   BOOLEAN

3) Saqlash qatlamlari va formatlari

Lakehouse: Bronze (raw append-only) → Silver (clean/SCD/normalizatsiya) → Gold (vitrinalar).
ACID-форматы: Delta/Iceberg/Hudi (MERGE/Upsert, time-travel, snapshots).
Tiered storage: hot/warm/cold + WORM regulyator artefaktlari uchun.
Partiyalashtirish:’event _ date’,’market’,’tenant’; tez-tez uchraydigan predikatlar bo’yicha klaster/Z-order (user/game/provider).

4) O’lchovlarni tarixlashtirish (SCD)

SCD I: tanqidiy boʻlmagan tahrirlar uchun qayta yozish.
SCD II: to’liq tarix; RG/KYC/trafik/oʻyin atributlari uchun tavsiya etiladi.
SCD III: «oldin/keyin» - taqqoslashning noyob holatlari.

SCD II misoli:
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. rg_status <> u. rg_status OR t. country <> u. country) THEN
UPDATE SET is_current = FALSE, 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);

5) Faktlar tarixi: suratlar va bitemporal

Rasm (snapshots): kun/oy oxiridagi agregatlar rasmi (masalan, hamyon balansi) - tarixiy hisobotlarni qayta yaratishni tezlashtiradi.
Bitemporal faktlar: kechki tuzatishlarni retrospektiv hisob-kitoblardan ajratish uchun event-time va processing-time holatlarini qayd etamiz.
Exactly-once tarixi: dedup’event _ id’+ idempotent MERGE.

6) Time-travel va takrorlanuvchanlik

Time-travel: Hata tuzatish, hodisalar, solishtirish uchun «T lahzasi» jadvallarini o’qish.
Mantiqni versiyalash: transformatsiya artefaktlari (SQL/DBT, konteynyerlar versiyalari) va chiqish jadvallaridagi «logic_version» belgilari.
Frozen outputs: Gold-hisobot artefaktlari qayd etiladi va qayta yozilmaydi, hash va eksport jurnali mavjud.

Soʻrovning as-of namunasi:
sql
SELECT
FROM silver. fact_bets VERSION AS OF 1678901234567
WHERE event_date = DATE '2025-10-31';

7) Backfill и Reprocessing

Backfill: tarixiy diapazonni birlamchi/ortiqcha yuklash.
Reprocessing: xatolarni tuzatish yoki biznes qoidalarini oʻzgartirgandan keyin qayta hisoblash.

Garderoblar:
  • Idempotentlik (MERGE/upsert), diapazonlar, kvotalar, metriklarni solishtirish bilan «qorong’u yugurish» (dry-run).
  • Natijani markalash:’recalc _ reason’,’logic _ version’,’reprocessed _ at’.
Runbook (sxema):

1. Freeze joriy Gold; 2) DLQ/DQ tekshiruvi; 3) Silver poygasi; 4) metriklarni taqqoslash; 5) Gold qayta yig’ish; 6) e’lon qilish va imzo.

8) Aniqlikni solishtirish (reconciliation)

Nazorat summalari: OLTP, PSP/provayderlar bilan aylanmalar/miqdorlarni solishtirish.
Ikki konturli tekshirish: tanlashda mustaqil pipeline (A/B taqqoslash).
Chegaralar: masalan, GGR ≤ 0 tafovutlari. Kuniga 2%.

SQL namunalari:
sql
-- Duplicates
SELECT transaction_id, COUNT() c
FROM silver. payments
GROUP BY transaction_id
HAVING COUNT() > 1;

-- Unknown Currencies/Markets
SELECT p. currency
FROM silver. payments p
LEFT JOIN ref. currencies r ON r. code = p. currency
WHERE r. code IS NULL;

9) Valyutalar, vaqt, kalendar: tarixiy to’g "rilik

FX:’fx _ rate _ used’va’fx _ source’.
Bozorning mahalliy vaqti: DST/taymzonlar taqvimlar ma’lumotnomasi orqali.
Bayramlar/mavsumiylik: alohida taqvim jadvali, modellar va hisobotlarda foydalaniladi.

FXni normallashtirish misoli:
sql
SELECT p. transaction_id,
p. amount_orig,
r. rate AS fx_rate_used,
p. amount_orig r. rate AS amount_base,
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';

10) PII, komplayens va Legal Hold

PII-minimallashtirish: taxalluslashtirish, alohida himoyalangan mapping.
DSAR/RTBF: tarixiy qatlamlarning hisoblab chiqiladigan proyeksiyalari va selektiv tahrirlari; saqlashning qonuniy majburiyati bo’yicha istisnolar hujjatlashtiriladi.
Legal Hold: hisobot artefaktlari uchun WORM, diapazon/obʼektlarga olib tashlash «muzlatish» bayroqlari.
Audit: kirish va eksportning o’zgarmas loglari.

11) Tarix uchun DQ va lineage

DQ-kod sifatida (misol):
yaml table: silver. fact_bets slo:
completeness_percent: 99. 5 freshness_minutes: 60 rules:
- name: unique_bet type: unique columns: [bet_id]
severity: critical
- name: market_known type: in_set column: market set_ref: ref. markets
- name: ts_in_range type: temporal expression: "event_time BETWEEN date_sub(now(), interval 5 year) AND now()"

Lineage: kirish/transformatsiya/chiqish versiyalarini aniqlaymiz; retro o’zgarishlar uchun bog’liqlik grafasi majburiydir.

12) Unumdorlik va qiymat

Partiyalashtirish: sana/bozor/tenant bo’yicha; ’user _ pseudo _ id ’/’ game _ id’ boʻyicha agressiv klasterlash.
Formatlar: Parquet + statistika/kompresssiya; muntazam VACUUM/OPTIMIZE.
Materiallashtirish: «qimmat» tarixiy agregatsiyalar uchun precompute; choraklik/yillik hisobot uchun snapshotlar.
Arxivlash: eski partiyalarni cold storage-ga o’tkazish (SLA qayta tiklash uchun hujjatlashtiriladi).
Samplash: faqat tadqiqot vazifalari uchun, regulyator/moliya uchun emas.

13) ML uchun tarixiy chichlar

Feature registry: har bir parda formula, owner, SLO,’model _ version’ga ega.
Muvofiqlik online/offline: transformatsiyalarning bitta kod bazasi, o’tuvchanlik testlari.
Belgilar dreyfi: davrlar bo’yicha PSI/KS, tarixiy taqsimotlarni saqlash.

14) So’rovlar patterni

As-of (sanaga): hisobotlarning takrorlanuvchanligi.
Cohort-tahlil: ro’yxatdan o’tish/birinchi depozitlar kogortlari, rolling derazalar.
Slowly changing facts: корректные join’ы с SCD II (`event_time BETWEEN valid_from AND COALESCE(valid_to, '9999-12-31')`).

SCD II bilan join’a misoli:
sql
SELECT b. bet_id, u. rg_status
FROM silver. fact_bets b
JOIN dim. users_scd u
ON u. user_pseudo_id = b. user_pseudo_id
AND b. event_time >= u. valid_from
AND (u. valid_to IS NULL OR b. event_time < u. valid_to);

15) Jarayonlar va RACI

R (Responsible): Data Engineering (modellar/SCD/backfill), Data Platform (ACID/arxiv), Finance/Compliance (solishtirmalar/saqlash talablari).
A (Accountable): Head of Data/CDO.
C (Consulted): Legal/DPO (DSAR/RTBF/Legal Hold), SRE (qiymat/SLA), Arxitektura.
I (Informed): BI/Mahsulot/Marketing/Operatsiyalar.

16) Joriy etish yo’l xaritasi

MVP (3-5 hafta):

1. time-travel (Delta/Iceberg/Hudi) bilan ACID jadvallari va bazaviy partiyalashtirish.

2. Asosiy o’lchovlar uchun SCD II (users/games/providers).

3. Tanqidiy agregatlarning kundalik snapshots (GGR Daily).

4. DQ-kod sifatida (uniqueness/in_set/temporal) + lineage-grafa.

2-faza (5-10 hafta):
  • Bitemporal faktlar, as-of API/SQL-namunalar, runbooks backfill/reprocessing.
  • FX/taqvim/DST-boyitish, solishtirish OLTP DWH/provayderlar.
  • Hisobot paketlari uchun cold storage, WORM, Legal Hold.
3-faza (10-16 hafta):
  • «replay & what-if» to’liq avtomatlashtirish, regressiya metrikasi va alertasini taqqoslash.
  • ML tarixiy chichlar va dreyf nazorati, saqlash qiymati bo’yicha chargeback.
  • Metrik va takrorlanadigan hisobotlarning «as-of» hujjatlari.

17) Sotishdan oldingi chek-varaq

  • Jadvallar time-travelni qo’llab-quvvatlaydi; VACUUM/RETENTION siyosati kelishilgan.
  • SCD II tanqidiy o’lchashlar uchun amalga oshirilgan; join’lar sinovdan o’tkazildi.
  • D/M’dagi asosiy agregatlarning suratlari mavjud va yorqinliklar bilan tekshirilgan.
  • DQ qoidalari faol; lineage mantiqning kirish/chiqish va versiyalarini koʻrsatadi.
  • DSAR/RTBF/Legal Hold tarixiy qatlamlarda sinovdan o’tkazildi.
  • Arxivlash va cold storage dan tiklash hujjatlashtirilgan va tekshirilgan.
  • Nazorat ostida saqlash narxi (cost/GB, cold ulushi, SLA tiklash).

18) Tez - tez xatolar va ulardan qanday qochish mumkin

Aniq vaqt modeli mavjud emas: event/processing/validity qoʻshing.
FX «orqaga qaytish»: doimo hodisa vaqtidagi kurs,’fx _ source’ni saqlash.
SCD bilan notoʻgʻri join’lar:’is _ current’emas, balki validlik oraligʻidan foydalaning.
Mutatsiyaga uchraydigan Gold-vitrinalar: hisobot chiqishlari o’zgarmas bo’lishi (yoki versiyalash bilan) kerak.
Lineage/DQ’siz: isbotlash va nazorat nuqtalari mavjud emas - ularni birinchi kundan boshlab kiriting.
Boshqarib bo’lmaydigan narx: issiq qismlarni o’chiring, vakuumlang, cold ga o’tkazing.

19) Glossariy

As-of Query - ma’lumotlarni so’rash.
Bitemporal - event va processing vaqtini bir vaqtda belgilash.
Snapshot - davr oxiridagi holatning/agregatlarning materiallashtirilgan surati.
Time-travel - jadvallarning tarixiy versiyalarini o’qish.
WORM - o’zgarmas saqlash (Write Once Read Many).

20) Jami

Tarixiy ma’lumotlar bilan ishlash shunchaki «uzoq saqlash» emas, balki vaqt intizomi: event/processing/bitemporal, SCD va snapshots, reproducible as-of so’rovlari, qat’iy solishtirishlar va komplayens-nazorat, kuzatuv va tejamkor saqlash arxitekturasi. Ushbu yoʻl-yoʻriqqa amal qilib, siz audit va biznes mantiqidagi oʻzgarishlarga chidamli hisobot, tahlil va ML uchun ishonchli tarixiy poydevor olasiz.

Contact

Biz bilan bog‘laning

Har qanday savol yoki yordam bo‘yicha bizga murojaat qiling.Doimo yordam berishga tayyormiz.

Telegram
@Gamble_GC
Integratsiyani boshlash

Email — majburiy. Telegram yoki WhatsApp — ixtiyoriy.

Ismingiz ixtiyoriy
Email ixtiyoriy
Mavzu ixtiyoriy
Xabar ixtiyoriy
Telegram ixtiyoriy
@
Agar Telegram qoldirilgan bo‘lsa — javob Email bilan birga o‘sha yerga ham yuboriladi.
WhatsApp ixtiyoriy
Format: mamlakat kodi va raqam (masalan, +998XXXXXXXX).

Yuborish orqali ma'lumotlaringiz qayta ishlanishiga rozilik bildirasiz.