GH GambleHub

Maʼlumotlarni normallashtirish

1) Vazifasi

Normallashtirish yangilanishlarning dublikatlari va anomaliyalarini bartaraf etadi, yagona ma’lumotnomalar va kalitlarni o’rnatadi, ma’lumotlarni kelishilgan va arzon qiladi. iGaming’da bu GGR/NGR, AML/RG tahlillari, tartibga solish hisoboti, antifrod va ML uchun juda muhimdir.

2) Qayerda normallashtiramiz

Bronze (raw): forensika uchun (append-only) saqlashni normallashtirmaymiz.
Silver (clean/conform): asosiy normallashuv (3NF/BCNF, maʼlumotnomalar, kalitlar, SCD).
Gold (serve): maqsadli vitrinalar -/BI oʻqish uchun boshqariladigan denormalizatsiya mumkin.

3) Bazaviy prinsiplar

1. Schema-first: barcha jadvallarda aniq sxemalar va kalitlar mavjud.
2. Yagona identifikatorlar:’user _ pseudo _ id’,’session _ id’,’game _ id’,’provider _ id’,’transaction _ id’.
3. Yagona ma’lumotnomalar: valyutalar, bozorlar/yurisdiksiyalar, KYC/RG maqomlari, o’yin provayderlari, trafik kanallari.
4. Vaqt va valyuta:’event _ time’(UTC) va normallashtirilgan’amount _ base’+’fx _ source’ni saqlash.
5. Evolyutsiya: semantik versiyalar, faqat «jim» bo’shliqlarsiz mos keladigan o’zgarishlar.
6. PII-minimallashtirish: foydalanuvchi - psevdo-ID orqali; mapping alohida saqlanadi, kirish cheklangan.

4) Normal shakllar tez

1NF: atomar qiymatlar, ustunlardagi massivlarsiz (massivlar → child-jadvallar).
2NF: atributlar butun tarkibiy kalitga bogʻliq.
3NF: tranzitiv bogʻliqlik yoʻq (atribut faqat kalitga bogʻliq).
BCNF: har bir determinant - kalit. «Yadro» uchun qoʻllash (payments/gameplay).

Amaliyot: To’lovlar va o’yin faolligining silver-modellarini kamida 3NF saqlaymiz; ma’lumotnomalar va havola jadvallari uchun - qattiqroq BCNF.

5) Etalon domen modeli (Silver)

5. 1 Ma’lumotnomalar

`dim. users’(psevdo-ID, mamlakat, yosh diapazoni, RG-maqomlari).
`dim. games’(game_id, provider_id, janr, RTP, o’zgaruvchanlik).
`dim. providers’(provider_id, turi, litsenziyasi).
`dim. markets’(yurisdiksiya kodi, regulyator).
`dim. fx_rates` (date, ccy_from, ccy_to, rate, fx_source).

5. 2 Faktlar (voqealar/tranzaksiyalarning tor jadvallari)

`fact. payments` (transaction_id, user_pseudo_id, amount_orig, currency, amount_base, market, event_time, psp_ref, method).
`fact. bets` (bet_id, user_pseudo_id, game_id, stake_base, stake_ccy, outcome, event_time).
`fact. payouts` (payout_id, user_pseudo_id, game_id, amount_base, event_time).

Aloqalar: barqaror kalitlar bo’yicha ma’lumotnomalar. Barcha summalarni «boshlang’ich valyuta» da va «bazaviy valyuta» da (amount_base)’fx _ source’ni belgilab qo’yamiz.

6) Sekin o’zgaruvchan o’lchovlar (SCD)

Type I (qayta yozish): imlo/nekritik tuzatishlar.
Type II (tarix):’valid _ from/valid _ to/is _ current’, oʻzgarishlar auditi (masalan, RG-maqom oʻzgarishi).
Type III (muqobil ustuncha): qisqa taqqoslash uchun «oldin/keyin».

Tavsiya: RG/KYC/marketing kanali uchun - SCD II; o’yinlar ma’lumotnomalari (RTP) uchun - ta’sir validatsiyasiga ega bo’lgan SCD II.

SCD II misoli (soddalashtirilgan):
sql
CREATE TABLE dim. users_scd (
user_pseudo_id STRING,
country STRING,
rg_status STRING,
valid_from TIMESTAMP,
valid_to  TIMESTAMP,
is_current BOOLEAN
);

7) De-duplikatsiya va kalitlar

Ichki aloqalar uchun surrogat kalitlar (BIGINT/UUID).
Tabiiy kalitlar (masalan, PSP dan’transaction _ id’) - validatsiya qilish va alohida saqlash.
Dedup po’(event_id, source)’na ingest + biznes kalitlari bo’yicha Silver.

To’lovlar dedupi (misol):
sql
CREATE TABLE silver. payments AS
SELECT EXCEPT(rn) FROM (
SELECT p., ROW_NUMBER() OVER (PARTITION BY transaction_id ORDER BY event_time) rn
FROM bronze. payment_events p
)
WHERE rn = 1;

8) Valyutalar va taymzonlarni standartlashtirish

’event _ time’ - har doim UTC; vitrinalar uchun bozorga lokal/taymzon qo’shamiz.
Valyutalar:’amount _ orig’i’amount _ base’(masalan, EUR) +’fx _ source’,’fx _ rate _ used’.
Har kuni kurslarni belgilash:’dim. manba va xesh-imzo bilan fx_rates'.

Summalarni normallashtirish (misol):
sql
SELECT t. transaction_id,
t. amount_orig,
t. currency,
r. rate AS fx_rate_used,
t. amount_orig r. rate AS amount_base
FROM bronze. payment_events t
JOIN dim. fx_rates r
ON r. date = DATE(t. event_time) AND r. ccy_from = t. currency AND r. ccy_to = 'EUR';

9) Ma’lumotnomalarning konsistentligi

Maʼlumotlar roʻyxati (games, providers, markets, currencies).
DQ validatorlari:’in _ set’, FK-havolalar, SCDning o’ziga xosligi, ziddiyatsizligi.
Tashqi manbalardan (o’yin provayderlari, mamlakatlar, PSP) «ingichka» dimensiyalarning avtogeneratsiyasi.

10) Qachon denormallashtirish

Gold bilan denormalizatsiya qilish mumkin:
  • barqaror «keng» reportajlar (GGR, xavfli vitrinalar);
  • BI-so’rovlar/dashbordlarni tezlashtirish;
  • realtime-vitrin (ClickHouse/Pinot) SLA o’qish ostida.
Qoidalar:
  • Haqiqat manbai - Silver.
  • Denormallashtirilgan maydonlar - Silver dan hisoblanadigan/nusxa olinadigan maydonlar; mantiqni versiyalash.
  • Har qanday denormalizatsiya hujjatlashtiriladi va to’g "riligi tekshiriladi.

11) «yulduz» va «qor» modeli

Yulduz: bitta fakt + tekis o’lchovlar - o’qish osonroq va tezroq, yozish/kelishish qimmatroq.
Qor: o’lchovlar normallashtirilgan (kichik ma’lumotnomalar ulangan) - dublikatlar kamroq, so’rovlar qiyinroq.

Tavsiya: Gold ko’pincha «yulduz», Silver - normallashtirilgan «qor».

12) Sxemalar evolyutsiyasi (safe changes)

Back-compatible: nullable ustunlar qoʻshish; bayroqli yangi ma’lumotnoma qiymatlari.
Breaking: nomini oʻzgartirish/turini oʻzgartirish/semantik siljishlar - faqat ’/v2’orqali va migratsiya davri uchun ikki marta yoziladi.
Kontraktlar: registry, consumer-tests da JSON/Euro sxemalari.

13) normallashtirish uchun DQ-nazoratlari

Minimal toʻplami:
  • Kalitlarning oʻziga xosligi:’transaction _ id’,’bet _ id’.
  • Referens yaxlitligi: FK na’dim.’.
  • Valyutalar:’currency’iz whitelist,’fx _ rate _ used’non NULL,’amount _ base> = 0’.
  • Vaqt: oqilona oynada’event _ time’; «kelajakdagi» voqealar yo’qligi.
  • SCD toʻgʻriligi:’valid _ from/valid _ to’.

14) SQL-modellar namunalari

Stavkalar fakti (3NF):
sql
CREATE TABLE silver. fact_bets (
bet_id STRING PRIMARY KEY,
user_pseudo_id STRING NOT NULL,
game_id STRING NOT NULL,
stake_ccy DECIMAL(18,2) NOT NULL,
currency CHAR(3) NOT NULL,
stake_base DECIMAL(18,2) NOT NULL,
market CHAR(2) NOT NULL,
event_time TIMESTAMP NOT NULL
);
GGR (Gold) uchun yulduz:
sql
CREATE VIEW gold. ggr_daily AS
SELECT
DATE(b. event_time) AS event_date,
m. 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. markets m ON m. code = b. market
JOIN dim. games g  ON g. game_id = b. game_id
GROUP BY 1,2,3;

15) Maxfiylik va komplayens

Foydalanuvchini Silver’da taxalluslashtirish; haqiqiy ID bilan bog’liq bo’lsa - alohida himoyalangan konturda.
RLS/CLS va maydonlarni yashirish (e-mail/PAN analitikada mavjud emas).
Kataloglar/kalitlarni hududlashtirish, sxemalarni kengaytirish uchun DPO nazorati.

16) Kuzatish va lineage

Bronze → Silver → Gold dan Data lineage, transformatsiya va kontraktlar versiyasi.
Metriklar: completeness, validity, FK xatolari, dublikatlar, vaqt bo’yicha «teshiklar», so’rov qiymati.
Ma’lumotnomalar va FX manbalar uzilishidagi alertlar.

17) RACI

R: Data Engineering (Silver/Gold modellari), Data Platform (sxemalar registri, DQ).
A: Head of Data/Architecture.
C: Compliance/DPO (PII/retention), Finance (FX/GGR), Risk (RG/AML).
I: BI/Mahsulot/Marketing/Operatsiyalar.

18) Joriy etishning yo’l xaritasi

MVP (2-4 hafta):

1. Maʼlumotlar roʻyxati (markets, currencies, providers, games).

2. Silver modellari’fact. payments`, `fact. bets’,’dim.’(3NF), SCD II uchun’dim. users`.

3. Valyutalar/taymzonlarni normallashtirish, bazaviy DQ qoidalari (FK/uniqueness/in_set).

4. Birinchi Gold-vitrin (GGR Daily) va taqqoslash testlari.

2-bosqich (4-8 hafta):
  • SCD kengaytirish, o’yin tadbirlarini qamrab olish, provayder konform modellari.
  • Sxemalar mosligi avtotestlari, migratsiya simulyatori, meta maʼlumotlar katalogi.
  • Kalitlar/partiyalarni optimallashtirish, klasterlashtirish/Z-order.
3-faza (8-12 hafta):
  • Gold, SLA/qiymat uchun denormallashtirish siyosati; «yulduz/qor» templeytalari.
  • Hujjatlarning avtogeneratsiyasi, dashbordlardagi lineage grafasi.
  • Mintaqaviy kataloglar va shifrlash kalitlari, DR-mashqlar.

19) Sifat chek-varaqasi

  • Yagona kalitlar va ma’lumotnomalar tasdiqlandi.
  • Silver 3NF, SCD «sekin» o’lchovlarga qo’llaniladi.
  • Valyutalar/taymzonlar normallashtirilgan;’fx _ source’belgilanadi.
  • DQ qoidalari (FK/uniqueness/range/in_set) faol.
  • Denormalizatsiya hujjatlashtirilgan, to’g’rilik testlari o’tkazilgan.
  • Yangi/to’liq chiziqlar va metriklar dashbordlarda ko’rinadi.

20) Tez - tez xatolar va ulardan qanday qochish mumkin

Tahlilda PII aralashmasi: mappinglarni ajrating, CLS/RLSdan foydalaning.
Silver yetarli darajada me’yorlashtirilmadi: 3NF olib keling, aks holda qimmat qo’llab-quvvatlash va solishtirish xatolari.
FX «hisobot fakti bo’yicha»: kurslar «orqaga» emas, balki voqeaga yozib qo’yilishi kerak.
Asosiy o’lchovlar uchun SCD yo’q: RG/KYC/kanallarning tarixi yo’qoladi.
Gold qayta formatlanishi: ortiqcha join’s → boshqariladigan denormalizatsiya.
Sxemalarning shaffof bo’lmagan evolyutsiyasi: registry va consumer-tests.

21) Jami

Normallashtirish - bu Silver darajasidagi fan: faktlar va o’lchovlar uchun 3NF/BCNF yagona kalitlar va ma’lumotnomalar, to’g’ri tarix (SCD) va vaqt/valyutalarni standartlashtirish. Bunday «skelet» bilan Gold-vitrinalar bashorat qilinadigan, hisobotlar taqqoslanadigan va egalik qiymati nazorat qilinadigan bo’ladi.

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.