Συνεργασία με ιστορικά δεδομένα
1) Σκοπός και αρχές
Σκοπός: Αποθήκευση και επεξεργασία προηγούμενων καταστάσεων έτσι ώστε οι εκθέσεις, τα μοντέλα και οι έρευνες να είναι αναπαραγώγιμες, ακριβείς και σύμφωνες.
Αρχές:- Time-aware by design-Explicent time models in schemas and questions. Χρονική επίγνωση από σχεδιαστικά-σαφή
- Αναπαραγωγιμότητα: Η ίδια έκθεση για την ημερομηνία D παράγει πάντα το ίδιο αποτέλεσμα.
- Δυνατότητα ελέγχου: γενεαλογία, αμετάβλητα στρώματα, WORM όπου χρειάζεται.
- Επίγνωση κόστους: επίπεδα αρχείων, συμπίεση, αποθήκευση εν ψυχρώ με κατανοητές SLA.
- Διαχείριση της ιδιωτικής ζωής για αναδρομικές συναλλαγές και νομικά αιτήματα.
2) Χρονικά μοντέλα
Χρόνος εκδήλωσης: χρόνος του πραγματικού γεγονότος (επιτόκιο, κατάθεση).
Χρόνος επεξεργασίας κατά τον οποίο το σύστημα έχει επεξεργαστεί την εγγραφή (μπορεί να διαφέρει).
Bitemporal: αποθήκευση χρόνου παράδοσης και επεξεργασίας για αναδρομική επεξεργασία.
Διαστήματα ισχύος: 'έγκυρο _ από', 'έγκυρο _ έως', 'είναι _ τρέχον'.
Ως προς τα ερωτήματα: δειγματοληψία δεδομένων «όπως γνώριζαν τη στιγμή της 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 (μόνο σε ακατέργαστη μορφή) → Silver (καθαρό/SCD/ομαλοποίηση) → Gold (προβολές).
ACID- форматы: Delta/Iceberg/Hudi (MERGE/Upsert, time-travel, στιγμιότυπα).
Κλιμακωτή αποθήκευση: θερμή/ζεστή/ψυχρή + WORM για ρυθμιστικά τεχνουργήματα.
Κατάτμηση: 'event _ date', 'market', 'renant'. ομαδοποίηση/σειρά Z με συχνά δικαιώματα (χρήστης/παιχνίδι/πάροχος).
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
Στιγμιότυπα: στιγμιότυπο από συγκεντρωτικά μεγέθη τέλους ημέρας/μήνα (όπως ισοζύγιο πορτοφολιού) - επιτάχυνση της αναδημιουργίας ιστορικών εκθέσεων.
Bitemporal γεγονότα: καθορίστε χρόνο γεγονότων και χρόνο επεξεργασίας για να διακρίνετε καθυστερημένες διορθώσεις από αναδρομικούς υπολογισμούς.
Ακριβής ιστορία: dedup by 'event _ id' + idempotent MERGE.
6) Διάρκεια ταξιδιού και αναπαραγωγιμότητα
Time-travel: ανάγνωση πινάκων «κατά τη στιγμή του T» για αποσφαλμάτωση, συμβάντα, συμφιλίωση.
Λογική έκδοση: τεχνουργήματα μετασχηματισμού (εκδόσεις SQL/DBT, δοχεία) και ετικέτες «logic_version» στους πίνακες εξόδου.
Κατεψυγμένες εκροές: Συλλαμβάνονται και δεν ξαναγράφονται αντικείμενα αναφοράς χρυσού, διατίθενται ημερολόγιο καταγραφής εξαγωγής και χασίς.
sql
SELECT
FROM silver. fact_bets VERSION AS OF 1678901234567
WHERE event_date = DATE '2025-10-31';
7) Οπισθοπλήρωση и Επανεπεξεργασία
Backfill: Πρωτογενές/προφορτωμένο ιστορικό εύρος.
Επανεπεξεργασία: επανυπολογισμός μετά τον καθορισμό σφαλμάτων ή την αλλαγή των επιχειρηματικών κανόνων.
- Idempotency (MERGE/upsert), εύρος, ποσοστώσεις, ξηρό με μετρική σύγκριση.
- Σήμανση του αποτελέσματος: 'recalc _ reason', 'logic _ version', 'recessed _ at'.
1. Παγωμένο ρεύμα χρυσού. 2) επαλήθευση DLQ/DQ· 3) Ασημένιο τρέξιμο, 4) σύγκριση των μετρήσεων· 5) Ανακατασκευή χρυσού. 6) δημοσίευση και υπογραφή.
8) Συμφιλίωση
Checksums: συμφωνία των όγκων πωλήσεων/ποσοτήτων με OLTP, PSP/παρόχους.
Έλεγχος βρόχου: ανεξάρτητος αγωγός επί του δείγματος (σύγκριση 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/Timezones μέσω καταλόγου ημερολογίου.
Διακοπές/εποχικότητα: ξεχωριστός ημερολογιακός πίνακας, που χρησιμοποιείται σε μοντέλα και εκθέσεις.
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()"
γενεαλογία: καθορισμός εκδόσεων εισροών/μετασχηματισμών/εκροών· απαιτείται γράφημα εξάρτησης για μετασκευές.
12) Επιδόσεις και κόστος
Κατάτμηση: ανά ημερομηνία/αγορά/ενοικιαστή· επιθετική ομαδοποίηση από τον 'χρήστη _ pseudo _ i /' game _ id', εάν φιλτράρουμε συχνά.
Μορφότυποι: Parquet + στατιστικές/συμπίεση. ΚΑΝΟΝΙΚΟ ΚΕΝΟ/ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ.
Υλοποίηση: προεπιλογή για «ακριβές» ιστορικές συγκεντρώσεις. στιγμιότυπα για τριμηνιαίες/ετήσιες εκθέσεις.
Αρχειοθέτηση: η μετατροπή παλαιών παρτίδων σε αποθήκευση σε ψύξη (οι SLA για ανάκτηση είναι τεκμηριωμένες).
Δειγματοληψία: μόνο για ερευνητικά καθήκοντα, όχι για κανονιστική/χρηματοδοτική ρύθμιση.
13) Ιστορικά χαρακτηριστικά της ML
Μητρώο χαρακτηριστικών: κάθε χαρακτηριστικό διαθέτει τύπο, ιδιοκτήτη, SLO, 'model _ version'.
Επιγραμμική/offline συνέπεια: μία βάση κωδικών μετασχηματισμού, δοκιμές επαναληψιμότητας.
Χαρακτηριστική μετατόπιση: PSI/KS ανά περίοδο, αποθήκευση ιστορικών κατανομών.
14) Πρότυπα ερωτημάτων
Αναπαραγωγιμότητα των εκθέσεων
Ανάλυση κοόρτης: ομάδες καταχωρίσεων/πρώτες καταθέσεις, κυλιόμενα παράθυρα.
Σιγά-σιγά μεταβάλλονται τα γεγονότα: SCD II ('event _ time Between AND COALESCE ( ,' 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) Διαδικασίες και ΠΓΣ
R (Υπεύθυνη): Μηχανική δεδομένων (μοντέλα/SCD/backfill), πλατφόρμα δεδομένων (ACID/αρχείο), χρηματοδότηση/συμμόρφωση (απαιτήσεις συμφωνίας/αποθήκευσης).
A (υπόλογος): Προϊστάμενος δεδομένων/CDO.
C (Ζητήθηκε η γνώμη): Legal/DPO (DSAR/RTBF/Legal Hold), SRE (cost/SLA), Architecture.
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) + γράφημα γενεαλογίας.
Φάση 2 (5- 10 εβδομάδες):- Bitemporal γεγονότα, όπως API/SQL πρότυπα, runbooks backfill/επανεπεξεργασία.
- FX/ημερολογιακό πρόγραμμα/εμπλουτισμός θερινής ώρας, συμφωνίες OLTP↔DWH/provaydery.
- Αρχειοθέτηση αποθήκευσης εν ψυχρώ, WORM για τα πακέτα αναφοράς, Legal Hold.
- Πλήρης αυτοματοποίηση του «replay & what-if», σύγκριση των μετρήσεων και των προειδοποιήσεων παλινδρόμησης.
- Ιστορικά χαρακτηριστικά και παρασυρόμενος έλεγχος ML, χρέωση του κόστους αποθήκευσης.
- Τεκμηρίωση μετρήσεων και αναπαραγώγιμων εκθέσεων.
17) Κατάλογος επιλογών πριν από την πώληση
- Οι πίνακες υποστηρίζουν το ταξίδι στο χρόνο. ΟΙ ΠΟΛΙΤΙΚΕΣ ΚΕΝΟΥ/ΔΙΑΤΗΡΗΣΗΣ είναι συνεπείς.
- Η SCD II εφαρμόζεται για κρίσιμες μετρήσεις. Δοκιμή συνδέσμου.
- Φωτογραφίες βασικών μονάδων σε D/M διατίθενται και ελέγχονται με λάμψεις.
- Οι κανόνες DQ είναι ενεργοί. απεικονίζει εισόδους/εξόδους και λογικές εκδόσεις.
- DSAR/RTBF/Legal Hold δοκιμάστηκαν σε ιστορικά στρώματα.
- Τεκμηριωμένη και επαληθευμένη αρχειοθέτηση και ανάκτηση αποθήκευσης εν ψυχρώ.
- Κόστος/GB, μερίδιο ψύξης, SLA ανάκτησης
18) Συχνά λάθη και τρόπος αποφυγής τους
Χωρίς ρητό χρονοδιάγραμμα: προσθήκη γεγονότος/επεξεργασίας/ισχύος.
FX «αναδρομική»: πάντα η πορεία κατά τη στιγμή της εκδήλωσης, αποθηκεύστε 'fx _ source'.
Μη έγκυρη σύνδεση με SCD: χρήση διαστήματος ισχύος, όχι 'είναι _ τρέχον'.
Metating Gold showcases: οι δηλώσιμες εξόδους πρέπει να είναι αμετάβλητες (ή μεταφρασμένες).
Καμία γενεαλογία/DQ: καμία αποδειξιμότητα και σημεία ελέγχου - εισάγετε τα από την πρώτη ημέρα.
Μη διαχειρίσιμο κόστος: απενεργοποίηση θερμών κομμάτων, κενό, μετατροπή σε κρύο.
19) Γλωσσάριο
As-of Query - data request «as them at the time of T».
Bitemporal - ταυτόχρονη στερέωση του γεγονότος και του χρόνου επεξεργασίας.
Στιγμιότυπο - υλοποιημένο στιγμιότυπο κατάστασης/συγκεντρωτικών μεγεθών στο τέλος της περιόδου.
Time-travel - ανάγνωση ιστορικών εκδόσεων πινάκων.
WORM - Γράψτε μόλις διαβάσετε πολλά.
20) Η τελική γραμμή
Η εργασία με ιστορικά δεδομένα δεν είναι απλώς «μακρά αποθήκευση», αλλά η πειθαρχία του χρόνου: σαφή μοντέλα γεγονότων/επεξεργασίας/bitemporal, SCD και στιγμιότυπα, αναπαραγώγιμα ως προς τα αιτήματα, αυστηροί συνδυασμοί και έλεγχοι συμμόρφωσης, παρατηρησιμότητα και οικονομικά αποδοτική αρχιτεκτονική αποθήκευσης. Ακολουθώντας αυτόν τον οδηγό, θα έχετε ένα στέρεο ιστορικό θεμέλιο για την υποβολή εκθέσεων, την ανάλυση και την ML, το οποίο θα είναι ανθεκτικό στον έλεγχο και τις αλλαγές στην επιχειρηματική λογική.