Taryhy maglumatlar bilen işlemek
1) Bellenilmegi we ýörelgeleri
Maksat: öňki ýagdaýlary hasabatlaryň, modelleriň we derňewleriň gaýtalanyp bilinjek, takyk we barlaň ýaly derejede saklamak we gaýtadan işlemek.
Ýörelgeler:- Time-aware by design: shemalarda we soraglarda wagtyň aýdyň modelleri.
- Reproducibility: D senesi üçin şol bir hasabat hemişe şol netijäni berýär.
- Auditability: subut edilip bilinjek gelip çykyşy (lineage), üýtgemeýän gatlaklar, WORM zerur ýerlerde.
- Cost-aware: arhiw gatlaklary, gysyş, düşnükli SLA bilen cold storage.
- Privacy-by-design: retrospektiv amallarda we hukuk soraglarynda PII dolandyryşy.
2) Wagt modelleri
Waka-wagt: hakyky wakanyň wagty (stawka, goýum).
Processing-time: ulgam ýazgyny gaýtadan işläninde (dürli bolup biler).
Bitemporal: düzedişler üçin saklamak hem event-, hem processing-time.
Validity aralyklary: 'valid _ from', 'valid _ to', 'is _ current'.
As-of queries: "T pursatynda bilşiňiz ýaly" maglumatlary saýlamak.
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) Saklamak gatlaklary we formatlary
Lakehouse: Bronze (raw append-only) → Silver (clean/SCD/normalizasiýa) → Gold (vitrinler).
ACID-форматы: Delta/Iceberg/Hudi (MERGE/Upsert, time-travel, snapshots).
Düzgünleşdiriji artefaktlar üçin Tiered storage: hot/warm/cold + WORM.
Partiýa ýerleşişi: 'event _ date', 'market', 'tenant'; klaster/Z-order ýygy-ýygydan predikatlar boýunça (user/game/provider).
4) Ölçegleriň taryhy (SCD)
SCD I: täzeden ýazmak - kritiki däl düzedişler üçin.
SCD II: doly taryhy; RG/KYC/trafik kanallary/oýun atributlary üçin maslahat berilýär.
SCD III: "öň/soň" - seýrek deňeşdirme ýagdaýlary.
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) Faktlaryň taryhy: suratlar we bitemporal
Suratlar (snapshots): günüň/aýyň ahyrynda agregatlaryň suraty (mysal üçin, gapjygyň balansy) - taryhy hasabatlaryň täzeden döredilmegini çaltlaşdyrýar.
Bitemporal faktlar: giç düzedişleri retrospektiv hasaplamalardan tapawutlandyrmak üçin waka-wagty we prosessing-wagty ýazýarys.
Exactly-once taryhy: 'event _ id' dedupy + MERGE.
6) Time-travel we köpeltmek
Time-travel: düzedişler, hadysalar, deňeşdirmeler üçin "T pursatynda" tablisalary okamak.
Logikanyň wersiýasy: transformasiýa artefaktlary (SQL/DBT, konteýnerleriň wersiýalary) we çykyş tablisalarynda "logic_version" bellikleri.
Frozen outputs: Gold-artefaktlar hasaba alynýar we gaýtadan ýazylmaýar, hash we eksport žurnaly elýeterlidir.
sql
SELECT
FROM silver. fact_bets VERSION AS OF 1678901234567
WHERE event_date = DATE '2025-10-31';
7) Backfill и Reprocessing
Backfill: taryhy aralygy ilkinji/goşmaça ýüklemek.
Reprocessing: kemçilikler düzedilenden ýa-da işewürlik düzgünleri üýtgedilenden soň gaýtadan hasaplamak.
- Görkezijilik (MERGE/upsert), diapazonlar, kwotalar, metrikleri deňeşdirmek bilen "garaňky aralyk" (dry-run).
- Netijäni belleýäris: 'recalc _ reason', 'logic _ version', 'reprocessed _ at'.
1. Freeze häzirki Gold; 2) DLQ/DQ barlagy; 3) Silver; 4) metrikleri deňeşdirmek; 5) Gold gaýtadan ýygnamak; 6) neşir etmek we gol çekmek.
8) Takyklygy barlamak (reconciliation)
Gözegçilik pullary: dolanyşyklary/sanlary OLTP, PSP/üpjün edijiler bilen deňeşdirmek.
Iki aýlawly barlag: nusgada garaşsyz pipeline (A/B deňeşdirme).
Çäklendirmeler: mysal üçin, GGR ≤ 0 tapawudy. Günde 2%.
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) Walýutalar, wagt, senenama: taryhy takyklyk
FX: 'fx _ rate _ used' we 'fx _ source' belleýäris.
Bazaryň ýerli wagty: Senenamalaryň gollanmasy arkaly DST/wagt zolaklary.
Baýramçylyklar/möwsümlilik: senenamanyň aýratyn tablisasy, modellerde we hasabatlarda ulanýarys.
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, Complayens we Legal Hold
PII-minimallaşdyrmak: lakamlaşdyrmak, aýratyn goralýan mapping.
DSAR/RTBF: hasaplanyp bilinýän proýeksiýalar we taryhy gatlaklaryň saýlama redaktirlemeleri; saklamagyň kanuny borjy boýunça kadadan çykmalar dokumentleşdirilýär.
Legal Hold: diapazonlara/obýektlere, hasabat artefaktlary üçin WORM "doňdurma" baýdaklary.
Audit: elýeterliligiň we eksportyň üýtgemeýän ýazgylary.
11) Taryh üçin DQ we lineage
DQ-kod (mysal):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: giriş/transformasiýa/çykyş wersiýalaryny ýazga alýarys; garaşlylyk grafasy retro üýtgemeler üçin hökmanydyr.
12) Öndürijiligi we bahasy
Partiýa ýerleşdirilmegi: senesi/bazary/tenanty boýunça; 'user _ pseudo _ id '/' game _ id' boýunça agressiw klaster, eger köplenç süzülýän bolsak.
Formatlar: Parquet + statistika/gysyş; yzygiderli VACUUM/OPTIMIZE.
Materializasiýa: "gymmat" taryhy agregasiýalar üçin deslapky; çärýekleýin/ýyllyk hasabat üçin snapshotlar.
Arhiwlemek: köne partiýalary cold storage-a geçirmek (dikeldiş üçin SLA resminamalaşdyrylýar).
Sampler: diňe gözleg meseleleri üçin, düzgünleşdiriji/maliýe üçin däl.
13) ML üçin taryhy çyzgylar
Feature registry: Her hatarda formula, owner, SLO, 'model _ version' bar.
Utgaşdyrmak online/offline: bir kod transformasiýa bazasy, geçiş synaglary.
Alamatlaryň süýşmegi: PSI/KS döwürler boýunça, taryhy paýlamalary saklamak.
14) Haýyşnamalaryň nusgalary
As-of (senede): hasabatlaryň gaýtalanmagy.
Cohort-analiz: hasaba alyş/ilkinji goýumlaryň kogortlary, rolling penjireler.
Slowly changing facts: корректные join’ы с SCD II (`event_time BETWEEN valid_from AND COALESCE(valid_to, '9999-12-31')`).
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) Amallar we RACI
R (Responsible): Data Engineering (modeller/SCD/backfill), Data Platform (ACID/arhiw), Finance/Compliance (deňeşdirmeler/saklamak talaplary).
A (Accountable): Head of Data/CDO.
C (Consulted): Legal/DPO (DSAR/RTBF/Legal Hold), SRE (bahasy/SLA), Arhitektura.
I (Informed): BI/Önüm/Marketing/Amallar.
16) Durmuşa geçirmegiň ýol kartasy
MVP (3-5 hepde):1. Time-travel (Delta/Iceberg/Hudi) we esasy partizanlaşma bilen ACID tablisalary.
2. Esasy ölçegler üçin SCD II (users/games/providers).
3. Möhüm agregatlaryň gündelik snapshots (GGR Daily).
4. DQ-kod (uniqueness/in_set/temporal) + lineage-graf.
2-nji faza (5-10 hepde):- Bitemporal faktlar, as-of API/SQL-şablonlary, runbooks backfill/reprocessing.
- FX/senenama/DST-baýlaşdyrmak, OLTP DWH barlagy/üpjün edijiler.
- Hasabat bukjalary üçin arhiw cold storage, WORM, Legal Hold.
- Doly awtomatlaşdyryş "replay & what-if", metrikleri we regressiýa töwekgelçiligini deňeşdirmek.
- Taryhy çyzgylar we ML drift-gözegçilik, saklamak bahasy boýunça chargeback.
- Metrikleriň we gaýtalanýan hasabatlaryň "as-of" dokumentasiýasy.
17) Azyk önüminden öň çek-sanawy
- Tablisalar wagt-syýahatyny goldaýar; VACUUM/RETENTION syýasaty ylalaşyldy.
- SCD II kritiki ölçegler üçin durmuşa geçirildi; join 'lar synagdan geçirildi.
- D/M-de esasy agregatlaryň suratlary bar we yşyklar bilen barlanýar.
- DQ düzgünleri işjeň; lineage logikanyň girelgelerini/çykyşlaryny we wersiýalaryny görkezýär.
- DSAR/RTBF/Legal Hold taryhy gatlaklarda synagdan geçirildi.
- Arhiwlemek we cold storage -dan dikeltmek resminamalaşdyryldy we barlandy.
- Gözegçilik astynda saklamak bahasy (cost/GB, cold paýy, SLA dikeldiş).
18) Ýygy-ýygydan ýalňyşlyklar we olardan nädip gaça durmaly
Wagt modeliniň ýoklugy: event/processing/validity goşuň.
FX "tersine": elmydama wakanyň ugruny, 'fx _ source' -ni saklaň.
SCD bilen nädogry join's: 'is _ current' däl-de, dogry aralygy ulanyň.
Üýtgeýän Gold-vitrinler: hasabat çykyşlary üýtgewsiz (ýa-da wersiýa bilen) bolmaly.
lineage/DQ bolmasa: subut etmek we gözegçilik nokatlary ýok - olary ilkinji günden giriziň.
Dolandyrylmadyk çykdajy: gyzgyn bölekleri öçüriň, boşadyň, cold-a geçiriň.
19) Sözlük
As-of Query - "T pursatynda nähili görünýärdi".
Bitemporal - bir wagtyň özünde wakany we wagt prosessingini düzetmek.
Snapshot - döwrüň ahyrynda ýagdaýyň/agregatlaryň materiallaşdyrylan suraty.
Time-travel - tablisalaryň taryhy wersiýalaryny okamak.
WORM - üýtgewsiz saklamak (Write Once Read Many).
20) Jemleýji
Taryhy maglumatlar bilen işlemek diňe bir "uzyn saklamak" däl, eýsem wagtyň tertibi bolup durýar: açyk modeller event/processing/bitemporal, SCD we snapshots, reproducible as-of soraglar, berk deňeşdirmeler we gabat gelmek-gözegçilikler, gözegçilik etmek we tygşytly saklamak arhitekturasy. Bu gollanmany ýerine ýetirmek bilen, auditiň we işewürlik logikasynyň üýtgemegine çydamly hasabat, seljeriş we ML üçin ygtybarly taryhy binýady alarsyňyz.