GH GambleHub

Աշխատել պատմական տվյալների հետ

1) Նշանակումներ և սկզբունքներ

Նպատակը 'պահպանել և մշակել անցյալի վիճակը այնպես, որ հաշվետվությունները, մոդելները և հետազոտությունները լինեն վերարտադրելի, ճշգրիտ և հաճոյախոսական։

Սկզբունքները

Time-aultby design: Ժամանակի ակնհայտ մոդելները սխեմաներում և պահանջներում։

Reproducibility: նույն զեկույցը D-ի ամսաթվի համար միշտ տալիս է նույն արդյունքը։

Auditability: ապացուցված ծագումը (lineage), անփոփոխ շերտերը, WORM-ը այնտեղ, որտեղ անհրաժեշտ է։

Cost-a.ru: Արխիվային շերտեր, դելեգիա, cold storage, հասկանալի SLA։

Privacy-by-design: PII-ի կառավարումը հետադարձ վիրահատությունների և իրավական պահանջների ժամանակ։

2) Ժամանակի մոդելներ

Event-time: Իրական իրադարձության ժամանակը (տոկոսադրույքը, դեպոզիտը)։

Processing-Time: Երբ համակարգը մշակեց ձայնագրությունը (կարող է տարբերվել)։

Bitemental-ը 'պահպանումը և event- ը, և processing-ժամանակը հետևյալն է։

Validity ընդմիջումները ՝ «valid _ from», «valid _ to», «is _ current»։

As-of queries: տվյալների նմուշը «ինչպես գիտեին T-ի պահին»։

Դաշտերի ձևանմուշները

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) Պահեստային շերտեր և շարժիչներ

Lakehouse: Bultze (rance append-only) no Silver (clean/SCD/նորմալացում) www.Gold (վիտրիններ)։

ACID-форматы: Delta/Iceberg/Hudi (MERGE/Upsert, time-travel, snapshots).

Tiered storage: hot/warm/cold + WORM-ը կարգավորող արտեֆակտների համար։

Կուսակցությունը '«event _ date», «market», «tenae»; կլաստերիզացիա/Z-order հաճախակի նախադրյալներով (user/game/provider)։

4) Մրցույթի պատմականությունը (SCD)

SCD I 'վերագործարկումը ոչ ռիթմիկ ուղղությունների համար է։

SCD II 'ամբողջական պատմություն; խորհուրդ է տրվում RG/KYC/www.ru/խաղերի ատրիբուտների համար։

SCD III '«մինչև/հետո» - համեմատության հազվագյուտ դեպքեր։

SCD II-ի օրինակ

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) Փաստերի պատմությունը 'նկարները և բիթեմենտալը

Նկարները (wwww.apshots) 'ագրեգատների նկարը օրվա վերջում/ամիս (օրինակ, դրամապանակի հավասարակշռությունը) արագացնում են պատմական տարածքների վերականգնումը։

Bitemental-ի փաստերը 'մենք արձանագրում ենք event-time և processing-time-ը, որպեսզի տարբերենք հետագա ուղղումները հետադարձ ուղղումներից։

Exactly-once պատմությունը 'dedup' event _ id '+ idempotent MERGE։

6) Time-travel և վերարտադրողականությունը

Time-travel-ը '«T-ի պահին» աղյուսակների կարդալը' կարգաբերելու, կայունացնելու, սուլելու համար։

Տրամաբանության տարբերակումը 'փոխակերպման արտեֆակտներ (SQL/DBT, բեռնարկղեր) և հանգստյան օրերին «logic _ version» տարբերակը։

Frozen puts: Gold-արտեֆակտները գրանցվում են և չեն վերաշարադրում, հասանելի է hash և էքսպորտի ամսագիրը։

As-of հարցման օրինակ

sql
SELECT
FROM silver. fact_bets VERSION AS OF 1678901234567
WHERE event_date = DATE '2025-10-31';

7) Backfill и Reprocessing

Backfill: Պատմական տիրույթի առաջնային/բեռնումը։

Reprocessing: Վերահաշվարկ ուղիների ուղղումից կամ բիզնեսի կանոնների փոփոխությունից հետո։

Գարդերեյլի

Idempotenty (MERGE/ups.ru), միջակայքը, քվոտաները, «մութ պրոգոնը» (www.y-run) համեմատությամբ։

Մենք նշում ենք արդյունքը '«recalc _ reason», «logic _ version», «reprocessed _ at»։

Runbook (սխեմա)

1. Freeze no Gold; 2) DLQ/DQ ստուգումը; 3) progon Silver; 4) մետրի համեմատությունը։ 5) Գոլդի փոխպատվաստումը; 6) հրատարակությունը և ստորագրությունը։

8) Ճշգրտության մակարդակները (reconciliation)

Վերահսկիչ գումարներ 'OLTP, PSA/պրովայդերների հետ հեղափոխությունների/քանակությունների ավելացում։

Երկկողմանի ստուգում 'անկախ pipeline նմուշում (A/B համեմատություն)։

Թույլ տվեք, օրինակ, GGR 380 տարբերությունը։ 2 տոկոսը օրվա ընթացքում։

SQL նմուշներ

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) Արժույթի, ժամանակի, օրացույցի 'պատմական ճիշտ

FX-ը իրադարձության ամսաթվի վրա 'մենք արձանագրում ենք «fx _ rate _ used» և «fx _ source»։

Շուկայի տեղական ժամանակը 'DST/timzons օրացույցի գրացուցակի միջոցով։

Արձակուրդները/սեզոնայնությունը 'օրացույցի առանձին ստանդարտ, մենք օգտագործում ենք մոդելներում և զեկույցներում։

FX-ի նորմալացման օրինակ

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, և Legal Hold

PII-նվազեցումը 'կեղծանունացում, առանձին պաշտպանված մապինգ։

DSAR/RTBF 'հաշվարկային պրոյեկտներ և պատմական շերտերի ընտրովի խմբագրություններ։ բացառությունները օրինական պահպանման պարտավորությամբ փաստարկվում են։

Legal Hold: Դրոշները «սառեցումներ» հեռավորությունների վրա/օբյեկտների, WORM-ի համար հաշվետվական արտեֆակտների համար։

Աուդիտ 'անփոփոխ թիթեղներ և օրինագծեր։

11) DQ և lineage պատմության համար

DQ-ի կոդը (օրինակ)

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: Մենք արձանագրում ենք մուտքերի/տրանսֆորմացիաների/ելքերի տարբերակները։ կախվածության հաշվարկը պարտադիր է վերարտադրության համար։

12) Արտադրողականությունը և արժեքը

Կուսակցությունը 'ամսաթվով/շուկա/տենանտա; ագրեսիվ կլաստերիզացիա 'user _ pseudo _ id _ id/' game _ id ", եթե մենք հաճախ ֆիլտրում ենք։

Մոսկվա: Parquet + վիճակագրություն/ագրեսիա; ստացիոնար VACUUM/OPTIMIZE։

Նյութականացում 'precomp.ru «թանկ» պատմական ագրեգատների համար։ կեղտաջրեր պոկարտալ/տարեկան հաշվետվության համար։

Արխիվացում 'հին կուսակցությունների թարգմանությունը cold storage-ում (SLA-ն փաստաթղթերի վերականգնման համար)։

Սեմպլացիա 'միայն հետազոտական խնդիրների համար, ոչ կարգավորող/ֆինանսական համար։

13) Պատմական ֆիչները ML-ի համար

Feature registry: Յուրաքանչյուր ֆիչ ունի բանաձև, owner, SLO, «model _ version»։

Online/www.e.ru-ի համաձայն 'փոխակերպման մեկ կոդային հիմքը, հոսանքի թեստերը։

Նշանների դրեյֆը 'PSI/KS ժամանակահատվածներով, պատմական բաշխումների պահպանմամբ։

14) Հարցումների պատրանքները

As-of (ամսաթվով) 'մրցույթի վերարտադրումը։

Cohert-վերլուծություն 'գրանցման/առաջին ավանդների կոորդինատներ, rolling պատուհաններ։

Slowly changing facts: корректные join’ы с SCD II (`event_time BETWEEN valid_from AND COALESCE(valid_to, '9999-12-31')`).

Join 'a-ի օրինակը SCD II-ի հետ

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) Գործընթացներ և RACI

R (Responsible): Windows Engineering (մոդելներ/SCD/backfill), Direct Platform (ACID/արխիվ), Finance/Compliance (պահեստային)։

A (Accountable): Head of Data/CDO.

C (Consulted): Legal/DPO (DSAR/RTBF/Legal Hold), DRE (արժեքը/SLA), Ճարտարապետություն։

I (Informed): BI/ապրանք/Մարքեթինգ/Վիրահատություն։

16) Իրականացման ճանապարհային քարտեզը

MVP (3-5 շաբաթ)

1. ACID աղյուսակները Time-travel (Delta/Iceberg/Hudi) և հիմնական կուսակցությունը։

2. SCD II հիմնական կոմպոզիցիաների համար (users/games/providers)։

3. Ամեն օր apshots-ը կրիտիկական միավորներ է (GGR Daily)։

4. DQ-ի կոդը (uniqueness/in _ 07/temensal) + lineage գրաֆիկ։

Aleksanda 2 (5-10 շաբաթ)

Bitemental փաստերը, as-of API/SQL ձևաչափերը, runbooks backfill/reprocessing։

FX/օրացույցը/DST-հարստացումը, OLTP-ի շրջանակը MSH/պրովայդերներ։

Cold storage, WORM-ի արխիվացումը զեկույցների համար, Legal Hold-ը։

Բրազիլիա 3 (10-16 շաբաթ)

Ամբողջական ավտոմատիզացիան «replay & what-if», համեմատությունը և ռեգրեսիայի ալտերը։

Պատմական ֆիչիները և ML-ի վերահսկողությունը, chargeback պահեստավորման արժեքը։

«as-of» կոմպոզիան և վերարտադրված կոմպոզիցիաները։

17) Չեկ թուղթ մինչև վաճառելը

  • Աղյուսակները աջակցում են Time-travel; VACUUM/RETENTION քաղաքականությունը համաձայնեցված է։
  • SCD II-ը իրականացվել է քննադատական գործողությունների համար; join's փորձարկվել է։
  • D/M հիմնական ագրեգատների նկարները հասանելի և ստուգված են։
  • DQ կանոնները ակտիվ են; lineage-ը ցույց է տալիս մուտքեր/ելքեր և տրամաբանության տարբերակներ։
  • DSAR/RTBF/Legal Hold-ը փորձարկվել է պատմական շերտերում։
  • Արխիվացումը և վերականգնումը cold storage փաստաթղթավորված և ստուգված է։
  • Պահպանման արժեքը վերահսկման տակ (cost/GB, cold, SLA վերականգնումը)։

18) Հաճախակի սխալներ և ինչպես խուսափել դրանցից

Ժամանակի ակնհայտ մոդելի բացակայությունը 'ավելացրեք event/processing/validity։

FX «հետևի թիվը» 'միշտ դասընթացը իրադարձության պահին, պահել «fx _ source»։

Սխալ Join's SCD-ից 'օգտագործեք valiventy, ոչ թե' is _ current "։

Gold-Witrins-ը 'հաշվետվական ելքերը պետք է անփոփոխ լինեն (կամ տարբերակով)։

Առանց lineage/DQ: Ոչ մի ապացույց և կետեր չկան, առաջին իսկ օրվանից ներկայացրեք դրանք։

Չկառավարվող արժեք 'անջատեք տաք խմբաքանակները, վակուեք, տեղափոխեք կոլդ։

19) Գլոսարիա

As-of Query-ը տվյալների հարցումն է «ինչպես են նրանք նայում T-ի պահին»։

Bitemental-ը event-ի և processing ժամանակի միաժամանակ ամրագրումն է։

Diapshot-ը ժամանակի վերջում պետության/ագրեգատների նյութականացված պատկեր է։

Time-travel-ը աղյուսակների պատմական տարբերակների ընթերցումն է։

WORM-ը անփոփոխ պահեստավորում է (Write Once Read Many)։

20) Արդյունքը

Պատմական տվյալների հետ աշխատելը ոչ միայն «երկար պահպանումն» է, այլ ժամանակի կարգապահությունը 'ակնհայտ մոդելներ event/processing/bitemensal, SCD և wwww.apshots, reproducible as-of հարցումները, խիստ ծալքերը և կոմպլենսը վերահսկվում են, դիտարկումը և տնտեսական պահպանման ճարտարապետությունը։ Հետևելով այս առաջնորդությանը, դուք կստանաք հուսալի պատմական հիմք հաշվետվությունների, վերլուծաբանների և ML-ի համար, որոնք դիմացկուն են բիզնեսի տրամաբանության օրինագծին և փոփոխություններին։

Contact

Կապ հաստատեք մեզ հետ

Կապ հաստատեք մեզ հետ ցանկացած հարցի կամ աջակցության համար։Մենք միշտ պատրաստ ենք օգնել։

Telegram
@Gamble_GC
Սկսել ինտեգրացիան

Email-ը՝ պարտադիր է։ Telegram կամ WhatsApp — ըստ ցանկության։

Ձեր անունը ըստ ցանկության
Email ըստ ցանկության
Թեմա ըստ ցանկության
Նամակի բովանդակություն ըստ ցանկության
Telegram ըստ ցանկության
@
Եթե նշեք Telegram — մենք կպատասխանենք նաև այնտեղ՝ Email-ի дополнение-ով։
WhatsApp ըստ ցանկության
Ձևաչափ՝ երկրի կոդ և համար (օրինակ՝ +374XXXXXXXXX)։

Սեղմելով կոճակը՝ դուք համաձայնում եք տվյալների մշակման հետ։