GH GambleHub

Кор бо маълумоти таърихӣ

1) Мақсад ва принсипҳо

Мақсад: Ҳолати гузаштаро нигоҳ доред ва коркард кунед, то гузоришҳо, моделҳо ва таҳқиқот такроршаванда, дақиқ ва мувофиқ бошанд.

Принсипҳо:
  • Вақт аз рӯи моделҳои тарроҳӣ-Вақти возеҳ дар схемаҳо ва дархостҳо.
  • Репродуктивӣ: Ҳисоботи якхела барои санаи D ҳамеша натиҷаи якхела медиҳад.
  • Аудитория: насл, қабатҳои тағйирнопазир, WORM дар ҷойҳои зарурӣ.
  • Хароҷот: қабатҳои бойгонӣ, фишурдасозӣ, нигоҳдории хунук бо SLA-ҳои фаҳмо.
  • Тарроҳии махфият: Идоракунии PII барои муомилоти ретроспективӣ ва дархостҳои ҳуқуқӣ.

2) Моделҳои вақт

Вақти ҳодиса: вақти воқеаи воқеӣ (меъёр, амонат).
Вақти коркард, вақте ки система сабтро коркард кардааст (метавонад фарқ кунад).
Bitemporal: нигоҳ доштани ҳам рӯйдодҳо ва ҳам вақти коркард барои таҳрирҳои ретроактивӣ.
Фосилаҳои эътибор: 'дуруст _ аз', 'дуруст _ ба', 'is _ current'.
Саволҳо: интихоби маълумот "тавре ки онҳо дар вақти Т. медонистанд".

Қолиби саҳроӣ:
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: биринҷӣ (танҳо ашёи хом) → нуқра (тоза/SCD/нормализатсия) → Тилло (намоишҳо).
ACID-форматы: Delta/Iceberg/Hudi (MERGE/Upsert, time-travel, snapshots).
Нигоҳдории сатҳӣ: гарм/гарм/хунук + WORM барои артефактҳои танзимкунанда.
Тақсимот: 'event _ date', 'бозор', 'иҷорагир'; кластерӣ/Z-фармоиш аз ҷониби предикатҳои зуд-зуд (корбар/бозӣ/провайдер).

4) Таърихи андозагирӣ (SCD)

SCD I: навиштан - барои таҳрирҳои интиқодӣ.
SCD II: ҳикояи пурра; барои RG/KYC/каналҳои трафик/хусусиятҳои бозӣ тавсия дода мешавад.
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) Ҳикояи факт: лаҳзаҳо ва битемпоралӣ

Суратҳо: як лаҳзаи ҷамъбасти охири рӯз/моҳ (ба монанди тавозуни ҳамён) - эҷоди гузоришҳои таърихиро суръат мебахшад.
Далелҳои Bitemporal: вақти воқеа ва вақти коркардро барои фарқ кардани ислоҳи дер аз ҳисобҳои ретроспективӣ ислоҳ кунед.
Таърихи як маротиба: тарҳ аз ҷониби 'event _ id' + idempotent MERGE.

6) Вақти сафар ва такрористеҳсолкунӣ

Вақти сафар: ҷадвалҳои хониш "дар вақти Т" барои ислоҳи хатогиҳо, ҳодисаҳо, мусолиҳа.
Версияи мантиқӣ: артефактҳои табдилдиҳӣ (версияҳои SQL/DBT, контейнерҳо) ва тамғакоғазҳои "logic_version" дар ҷадвалҳои баромад.
Натиҷаҳои яхкардашуда: Артефактҳои гузоришдиҳии тиллоӣ сабт карда мешаванд ва аз нав навишта намешаванд, ҳаш ва сабти содирот дастрасанд.

Намунаи дархост:
sql
SELECT
FROM silver. fact_bets VERSION AS OF 1678901234567
WHERE event_date = DATE '2025-10-31';

7) Backfill i Коркард

Backfill: Диапазони таърихӣ/пешакӣ.
Коркард: ҳисобкунӣ пас аз ислоҳи хатогиҳо ё тағир додани қоидаҳои тиҷорат.

Гардереилҳо:
  • Idempotency (MERGE/upsert), диапазонҳо, квотаҳо, хушккунӣ бо муқоисаи метрӣ.
  • Ишора намудани натиҷа: 'recalc _ reasion', 'mogic _ version', 'recocessed _ at'.
Китоби корӣ:

1. Тиллои кунуниро ях кунед; 2) Санҷиши DLQ/DQ; 3) давиши нуқра; 4) муқоисаи ченакҳо; 5) Азнавсозии тилло; 6) нашр ва имзо.

8) Оштӣ

Санҷишҳо: муқоисаи ҳаҷми фурӯш/миқдор бо OLTP, PSP/провайдерҳо.
Тафтиши давр: лӯлаи мустақил аз рӯи намуна (муқоисаи A/B).
Таҳаммулпазирӣ ба монанди GGR ≤ 0 номувофиқатӣ. 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/Timezones тавассути директорияи тақвимӣ.
Идҳо/мавсимӣ: ҷадвали алоҳидаи тақвимӣ, ки дар моделҳо ва ҳисоботҳо истифода мешаванд.

Намунаи нормализатсияи 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, мувофиқат ва нигоҳдории ҳуқуқӣ

Кам кардани PII: псевдонимизатсия, харитасозии алоҳидаи ҳифзшаванда.
DSAR/RTBF: пешгӯиҳои ҳисобшаванда ва таҳрирҳои интихобии қабатҳои таърихӣ; истисноҳои нигаҳдории ҳуқуқӣ ҳуҷҷатгузорӣ карда мешаванд.
Нигоҳдории ҳуқуқӣ: парчамҳо несткуниро дар диапазонҳо/объектҳо, WORM барои артефактҳои гузоришшаванда "ях мекунанд".
Аудит: гузоришҳои дастрасии тағйирнопазир ва содирот.

11) DQ ва насл барои таърих

DQ-as-code (мисол):
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 '/' game _ id', агар мо зуд-зуд филтр кунем.
Форматҳо: Parquet + омор/фишурдасозӣ; ВАКУУМ/ОПТИМИЗАТСИЯ мунтазам.
Материализатсия: пешакӣ барои маҷмӯаҳои таърихии "гарон"; лаҳзаҳо барои ҳисоботи семоҳа/солона.
Бойгонӣ: табдил додани партияҳои кӯҳна ба анбори хунук (SLA барои барқарорсозӣ ҳуҷҷатгузорӣ шудааст).
Интихоб: танҳо барои вазифаҳои тадқиқотӣ, на барои танзим/молия.

13) Хусусиятҳои таърихӣ барои ML

Феҳристи хусусиятҳо: ҳар як хусусият дорои формула, соҳиб, SLO, 'model _ version' мебошад.
Мутобиқати онлайн/офлайнӣ: як пойгоҳи рамзгузорӣ, санҷишҳои такрорӣ.
Интиқоли характеристикӣ: PSI/KS аз рӯи давра, нигоҳдории тақсимоти таърихӣ.

14) Намунаҳои дархост

Ас-аз: таҷдиди гузоришҳо.
Таҳлили Cohort: гурӯҳҳои бақайдгирӣ/пасандозҳои аввал, тирезаҳои ғелонда.
Далелҳои оҳиста тағирёбанда: коректные ҳамроҳшавӣ 'ы с SCD II (' ҳодиса _ вақти БАЙНИ valid_from ВА КОАЛЕСЕ (valid_to, '9999-12-31') ').

Намунаи ҳамроҳшавӣ бо 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 (Масъул): Муҳандисии маълумот (моделҳо/SCD/backfill), Платформаи маълумот (ACID/бойгонӣ), Молия/Мувофиқат (мувофиқат/талаботҳои нигоҳдорӣ).
A (Ҳисоботдиҳанда): Роҳбари маълумот/CDO.
C (Машварат): Ҳуқуқӣ/DPO (DSAR/RTBF/Hold Legal), SRE (арзиш/SLA), меъморӣ.
I (Маълумот): BI/Маҳсулот/Маркетинг/Амалиёт.

16) Харитаи роҳсозӣ

MVP (3-5 ҳафта):

1. Ҷадвалҳои ACID бо вақти сафар (Delta/Iceberg/Hudi) ва тақсимоти асосӣ.

2. SCD II барои андозаҳои калидӣ (корбарон/бозиҳо/провайдерҳо).

3. Суратҳои ҳаррӯзаи агрегатҳои интиқодӣ (GGR Daily).

4. DQ-as-code (uniqueness/in_set/temporal) + lineage-graph.

Марҳилаи 2 (5-10 ҳафта):
  • Далелҳои Bitemporal, ба монанди қолабҳои API/SQL, runbooks backfill/коркард.
  • FX/тақвим/DST-ғанисозӣ, OLTP↔DWH/provaydery оштӣ.
  • Бойгонии нигоҳдории хунук, WORM барои бастаҳои гузоришдиҳӣ, Hold Legal.
Марҳилаи 3 (10-16 ҳафта):
  • Автоматикунонии пурраи "такрорӣ ва чӣ-агар", муқоисаи ченакҳо ва огоҳиҳои регрессия.
  • Хусусиятҳои таърихӣ ва назорати drift ML, баргардонидани арзиши нигаҳдорӣ.
  • Ҳуҷҷатгузории "ҳамчун" ченакҳо ва гузоришҳои такрорӣ.

17) Рӯйхати санҷиши пеш аз фурӯш

  • Ҷадвалҳо вақти сафарро дастгирӣ мекунанд; Сиёсати ВАКУУМ/НИГОҲ.
  • SCD II барои андозагирии интиқодӣ татбиқ карда мешавад; ҳамроҳ санҷида шуд.
  • Тасвирҳои воҳидҳои калидӣ дар D/M дастрасанд ва бо дурахшон тафтиш карда мешаванд.
  • Қоидаҳои DQ фаъоланд; насл вуруд/баромад ва версияҳои мантиқиро нишон медиҳад.
  • DSAR/RTBF/Hold Legal дар қабатҳои таърихӣ озмоиш карда шуд.
  • Бойгонӣ ва барқароркунии анбори хунук ҳуҷҷатгузорӣ ва тасдиқ карда шуд.
  • Арзиш/ГБ, ҳиссаи хунук, барқароркунии SLA

18) Хатогиҳои зуд-зуд ва чӣ гуна аз онҳо канорагирӣ кардан

Ягон модели вақти аниқ: илова кардани ҳодиса/коркард/эътибор.
FX "ретроактивӣ": ҳамеша курс дар вақти ҳодиса, 'fx _ source' -ро нигоҳ доред.
Ҳамроҳшавии нодуруст бо SCD: фосилаи дурустиро истифода баред, на 'is _ current'.
Намоишҳои тиллоии мутатсия: Натиҷаҳои гузоришшаванда бояд тағирнопазир бошанд (ё таҳриршуда).
Не насл/DQ: исбот ва нуқтаҳои назоратӣ - аз рӯзи аввал ба онҳо ворид шавед.
Арзиши идоранашаванда: хомӯш кардани ҳизбҳои гарм, вакуум, табдил ба хунук.

19) Луғат

As-of Query - дархости маълумот "вақте ки онҳо ба вақти Т. нигаристанд".
Битемпорал - ҳамзамон муайян кардани ҳодиса ва вақти коркард.
Сурат - тасвири мухтасари ҳолат/агрегатҳо дар охири давра.
Вақти сафар - хондани версияҳои таърихии ҷадвалҳо.
WORM - Як бор бисёр хонед.

20) Сатри поён

Кор бо маълумоти таърихӣ на танҳо "нигаҳдории дароз", балки интизоми вақт аст: моделҳои возеҳи ҳодиса/коркард/битемпоралӣ, SCD ва лаҳзаҳо, ки ҳамчун дархостҳо такроршаванда, мусолиҳаи дақиқ ва назорати мувофиқат, мушоҳида ва сарфакорона мебошанд меъмории нигаҳдорӣ. Бо риояи ин дастур, шумо заминаи мустаҳками таърихӣ барои гузоришдиҳӣ, таҳлил ва ML хоҳед дошт, ки ба аудит ва тағирот дар мантиқи тиҷорат тобовар аст.

Contact

Тамос гиред

Барои саволҳо е дастгирӣ ба мо муроҷиат кунед.Мо ҳамеша омодаем!

Telegram
@Gamble_GC
Оғози интегратсия

Email — муҳим аст. Telegram е WhatsApp — ихтиерӣ.

Номи шумо ихтиерӣ
Email ихтиерӣ
Мавзӯъ ихтиерӣ
Паем ихтиерӣ
Telegram ихтиерӣ
@
Агар Telegram нависед — ҷавобро ҳамон ҷо низ мегиред.
WhatsApp ихтиерӣ
Формат: рамзи кишвар + рақам (масалан, +992XXXXXXXXX).

Бо фиристодани форма шумо ба коркарди маълумот розӣ ҳастед.