Тарыхый маалыматтар менен иштөө
1) Максаты жана принциптери
Максаты: отчетторду, моделдерди жана иликтөөлөрдү кайталануучу, так жана компленттүү кылуу үчүн мурунку шарттарды сактоо жана иштетүү.
Принциптери:- Time-aware by design: схемалар жана суроо-айкын убакыт моделдери.
- Reproducibility: D датасы үчүн бир эле отчет ар дайым бир натыйжаны берет.
- Auditability: далилденген келип чыгышы (lineage), өзгөрүлбөс катмарлар, WORM зарыл болгон жерде.
- Cost-aware: архивдик катмарлар, компрессия, түшүнүктүү SLA менен cold storage.
- Privacy-by-design: retrospektiv иш жана укуктук суроо-талап боюнча PII башкаруу.
2) убакыт моделдери
Event-time: иш жүзүндө окуя убакыт (коюм, депозит).
Processing-time: система жазууну иштеткенде (ар кандай болушу мүмкүн).
Bitemporal: сактоо жана 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: Bronze (raw append-only) → Silver (таза/SCD/нормалдаштыруу) → Gold (айнек).
ACID-форматы: Delta/Iceberg/Hudi (MERGE/Upsert, time-travel, snapshots).
Tiered storage: hot/warm/cold + WORM ченемдик экспонаттар үчүн.
Партиялаштыруу: 'event _ date', 'market', 'tenant'; clusterization/Z-order тез-тез предикаттар (user/game/provider).
4) Тарыхый өлчөө (SCD)
SCD I: кайра жазуу - критикалык эмес өзгөрүүлөр үчүн.
SCD II: толук тарыхы; RG/KYC/трафик каналдары/оюндардын атрибуттары үчүн сунушталат.
SCD III: "чейин/кийин" - сейрек кездешүүчү салыштыруу учурлар.
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
Сүрөттөр (snapshots): күндүн/айдын акырына карата агрегаттардын сүрөттөрү (мисалы, капчыктын балансы) - тарыхый отчетторду кайра түзүүнү тездетет.
Bitemporal фактылар: кеч оңдоолорду ретроспективдүү эсептөөлөрдөн айырмалоо үчүн event-time жана processing-time жаздыруу.
Exactly-once тарыхы: Dedup 'event _ id' + emempotent MERGE.
6) Убакыт-саякат жана кайталоо
Time-travel: жадыбалдарды окуу "T учурда" туура, окуялар, салыштыруу үчүн.
Логиканын версиясы: трансформациянын артефакттары (SQL/DBT версиялары, контейнерлер) жана чыгаруу таблицаларындагы "logic_version" белгилери.
Frozen outputs: Gold-artefacts отчеттуулук жазылган жана кайра жазылган эмес, жеткиликтүү hash жана экспорт журналы.
sql
SELECT
FROM silver. fact_bets VERSION AS OF 1678901234567
WHERE event_date = DATE '2025-10-31';
7) Backfill и Reprocessing
Backfill: баштапкы/тарыхый диапазону жүктөө.
Reprocessing: мүчүлүштүктөрдү оңдоо же бизнес эрежелерин өзгөртүү кийин кайра эсептөө.
- Идемпотенттүүлүк (MERGE/upsert), диапазондор, квоталар, метрикаларды салыштыруу менен "караңгы чуркоо" (dry-run).
- Натыйжаны белгилөө: 'recalc _ reason', 'logic _ version', 'reprocessed _ at'.
1. Freeze Учурдагы Алтын; 2) DLQ/DQ текшерүү; 3) Silver багыт; 4) метрика салыштыруу; 5) Gold кайра чогултуу; 6) жарыялоо жана кол коюу.
8) тактык текшерүү (reconciliation)
Контролдук суммалар: OLTP, PSP/провайдерлер менен жүгүртүүлөрдү/сандарды салыштыруу.
Double Circuit текшерүү: тандоодо көз карандысыз түтүк (A/B салыштыруу).
Чектер: мисалы, GGR ≤ 0 айырмачылыктары. күнүнө 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) Валюталары, убактысы, календары: тарыхый тууралыгы
FX күнү: 'fx _ rate _ used' жана 'fx _ source'.
Жергиликтүү базар убактысы: DST/календардык колдонмо аркылуу убакыт.
Майрамдар/сезондук: календардын өзүнчө таблицасы, моделдерде жана отчеттордо колдонулат.
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, комплаенс жана мыйзамдуу Hold
PII-минималдаштыруу: псевдонимдештирүү, өзүнчө корголгон mapping.
DSAR/RTBF: эсептөө проекциялары жана тарыхый катмарларды тандоо редакторлору; сактоонун мыйзамдуу милдети боюнча өзгөчөлүктөр документтештирилет.
Legal Hold: желектер "тоңдуруп" диапазондору/объекттерине алып салуу, WORM отчеттук экспонаттар үчүн.
Аудит: кирүү жана экспорттун өзгөрүлбөс логдору.
11) DQ жана тарых үчүн сызык
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 '/' game _ id', эгерде биз көп чыпкалап.
Форматтар: Parquet + статистика/компрессия; үзгүлтүксүз VACUUM/OPTIMIZE.
Материалдаштыруу: precompute үчүн "кымбат" тарыхый агрегациялар; чейректик/жылдык отчеттуулук үчүн снапшоттор.
Архивдөө: эски партияларды cold storage которуу (калыбына келтирүү үчүн SLA документтештирилет).
Sample: гана изилдөө милдеттери үчүн, жөнгө салуучу/каржы үчүн эмес.
13) ML үчүн тарыхый чүчүкулак
Feature registry: ар бир fiction formula, owner, SLO, 'model _ version' бар.
Online/offline ырааттуулугу: бир коддук трансформация базасы, өтүү тесттери.
Drift белгилери: PSI/KS мезгил-мезгили менен, тарыхый бөлүштүрүү сактоо.
14) суроолор үлгүлөрү
As-of (датага): отчеттордун кайталанышы.
Cohort-талдоо: Coogorts каттоо/биринчи депозиттер, rolling терезелер.
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) Процесстер жана RACI
R (жооп): Data Engineering (моделдер/SCD/backfill), Data Platform (ACID/архив), Finance/Compliance (салыштыруу/сактоо талаптары).
A (Accountable): Head of Data/CDO.
C (Consulted): Legal/DPO (DSAR/RTBF/Legal Hold), SRE (наркы/SLA), Архитектура.
I (Informed): BI/Продукт/Маркетинг/Операциялар.
16) Ишке ашыруунун жол картасы
MVP (3-5 жума):1. убакыт-саякат менен ACID таблицалар (Delta/Iceberg/Hudi) жана негизги партиялаштыруу.
2. негизги өлчөө үчүн SCD II (users/games/providers).
3. Күнүмдүк snapshots сынчыл агрегаттар (GGR Daily).
4. DQ-code (uniqueness/in_set/temporal) + lineage-code.
2-этап (5-10 жума):- Bitemporal фактылар, as-of API/SQL-шаблондор, runbooks backfill/reprocessing.
- FX/календардык/DST-байытуу, OLTP DWH/провайдерлер.
- cold storage Archives, WORM отчеттук топтомдор үчүн, Legal Hold.
- Толук автоматташтыруу "replay & what-if", өлчөмдөрдү жана регрессия коркунучун салыштыруу.
- ML тарыхый чыпкалар жана дрейф контролдоо, сактоо наркы боюнча chargeback.
- Документация "as-of" метрика жана воспроизводимые отчеты.
17) Азык-түлүктүн алдындагы чек-тизме
- Таблицалар убакыт саякатын колдойт; 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'.
SCD менен туура эмес join's: 'is _ current' эмес, ырааттуулук аралыгын колдонуңуз.
Мутацияланган Gold-витриналар: отчеттук чыгуулар өзгөрүлбөс болушу керек (же версиялоо менен).
lineage/DQ жок: эч кандай далилдүүлүк жана контролдук пункттары - биринчи күндөн тартып аларды киргизүү.
Башкарылбаган наркы: ысык партияларды өчүрүү, боштук, cold которуу.
19) Глоссарий
As-of Query - маалыматтарды суроо ", алар T учурда карап".
Bitemporal - бир эле учурда event жана processing убакыт бекитүү.
Snapshot - мезгилдин акырына карата абал/агрегаттардын материалдык сүрөт.
Time-travel - таблицалардын тарыхый версияларын окуу.
WORM - туруктуу сактоо (Write Once Read Many).
20) Жыйынтык
Тарыхый маалыматтар менен иштөө жөн гана "узун сактоо" эмес, убакыттын тартиби: ачык-айкын моделдер event/processing/bitemporal, SCD жана snapshots, reproducible as-of суроолор, катуу салыштыруу жана комплаенс-контролдоо, байкоо жана үнөмдүү сактоо архитектурасы. Бул көрсөтмөнү ээрчип, сиз аудитордук жана бизнес-логиканын өзгөрүшүнө туруктуу отчеттуулук, аналитика жана ML үчүн ишенимдүү тарыхый пайдубалга ээ болосуз.