GH GambleHub

עבודה עם נתונים היסטוריים

1) מטרה ועקרונות

המטרה: לאחסן ולעבד מדינות בעבר כך שהדיווחים, המודלים והחקירות יהיו מדויקים, מדויקים וצייתנים.

עקרונות:
  • מודלי זמן בעיצוב מפורשים בתכניות ושאילתות.
  • רבייה: אותו דו "ח עבור תאריך D תמיד מייצר את אותה התוצאה.
  • שמיעה: שושלת, שכבות בלתי ניתנות לשינוי, תולעים במקום הצורך.
  • עלות מודעת: שכבות ארכיון, דחיסה, אחסון קר עם SLA מובן.
  • פרטיות לפי עיצוב: ניהול מח "ש לעסקאות רטרוספקטיביות ובקשות משפטיות.

2) מודלים בזמן

זמן האירוע: זמן האירוע בפועל (קצב, הפקדה).
זמן עיבוד כאשר המערכת מעבדת את התקליט (עשוי להיות שונה).
אחסון שני המקרים וזמן עיבוד לעריכה רטרואקטיבית.
מרווחי תוקף: "valid _ from'," valid _ to ", הוא _ הנוכחי.
לפי שאילתות: דגימת מידע ”כפי שהם ידעו בזמן ט”.

תבנית שדה:
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 apend-only) # Silver (נקי/SCD/נורמליזציה) # Gold (תצוגות).
Delta/Iceberg/Hudi (מיזוג/אפסרט, מסע בזמן, תמונות).
אחסון ממוקד: חם/חם/קר + תולעת עבור חפצים רגולטוריים.
מחיצה: ”אירוע _ תאריך”, ”שוק”, ”דייר”; על ידי תחזיות תכופות (משתמש/משחק/ספק).

4) היסטוריית המדידה (SCD)

כתובה לעריכה לא ביקורתית.
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: לתקן אירוע-זמן ועיבוד-זמן להבחין תיקונים מאוחרים מחישובים רטרוספקטיביים.
בדיוק פעם אחת בהיסטוריה: dedup by "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) מילוי גב עיבוד מחדש

מילוי אחורי: ראשית/טעינה מראש טווח היסטורי.
חישוב חוזר: חישוב מחדש לאחר תיקון באגים או שינוי כללים עסקיים.

גארדרילס:
  • אידמפוטנטיות (MERGE/upsert), טווחים, מכסות, יובש-לרוץ עם השוואה מטרית.
  • מסמן את התוצאה: ”recalc _ reason”, ”logic _ version”, ”repossed _ at”.
פנקס הדרכות:

1. הקפאת הזהב הנוכחי; 2) אימות DLQ/DQ; 3) ריצת כסף; 4) השוואה של מדדים; 5) בנייה מחדש של זהב; 6) פרסום וחתימה.

8) פיוס

CHECTSUMS: פיוס של כרכי מכירות/כמויות עם OLTP, PSP/ספקים.
בדיקת לולאה: צינור עצמאי על מדגם (A/B השוואה).
סובלנות כמו חוסר התאמה בין GGR ל-0. שני אחוזים להיום.

דוגמאות 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: פסאודונימיזציה, מיפוי מוגן נפרד.
DSAR/RTBF: תחזיות חישוביות ועריכה סלקטיבית של שכבות היסטוריות; חריגות אחסון חוקיות מתועדות.
Hold חוקי: דגלים ”להקפיא” מחיקות על רכסים/חפצים, תולעת עבור חפצים שניתן לדווח עליהם.
ביקורת: גישה בלתי ניתנת לשינוי ויומני ייצוא.

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) ביצועים ועלות

מחיצה: לפי תאריך/שוק/דייר; קיבוצים אגרסיביים על ידי ”user _ pseudo _ id'/” game _ id', אם אנחנו מסננים לעתים קרובות.
פורמטים: Parquet + סטטיסטיקה/דחיסה; ואקום/אופטימיזציה רגילה.
התממשות: חישוב מראש להצטברות היסטורית ”יקרה”; תמונות לדיווח רבעוני/שנתי.
ארכיון: המרת קבוצות ישנות לאחסון קר (SLAS להחלמה מתועדים).
דגימה: רק למשימות מחקר, לא לרגולציה/מימון.

13) מאפיינים היסטוריים ל ־ ML

תרשים תכונה: לכל תכונה יש נוסחה, בעלים, SLO, 'model _ version'.
עקביות מקוונת/לא מקוונת: קוד שינוי אחד, מבחני חזרה.
סחף אופייני: PSI/KS לפי תקופה, אחסון של הפצות היסטוריות.

14) תבניות שאילתה

כמו של: רבייה של דיווחים.
ניתוח קוהורטה: קוהורטות לרישום/פיקדונות ראשונים, חלונות מתגלגלים.
אט אט משתנות העובדות: countructionallough complete 'viewsCD 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), פלטפורמת נתונים (חומצה/ארכיון), פיננסים/ציות (דרישות פיוס/אחסון).
א '(אחראי): ראש הנתונים/CDO.
C (ייעוץ): Legal/DPO (DSAR/RTBF/Legal Hold), SRE (עלות/SLA), ארכיטקטורה.
אני (מושכל): BI/מוצר/שיווק/מבצעים.

16) מימוש מפת דרכים

MVP (3-5 שבועות):

1. שולחנות חומצה עם מסע בזמן (דלתא/קרחון/האדי) וחלוקה בסיסית.

2. SCD II עבור ממדי מפתח (משתמשים/משחקים/ספקים).

3. תמונות יומיות של צבירה ביקורתית (GGR Daily).

4. DQ-as-code (uniqueness/in_set/temporal) + שושלת-גרף.

שלב 2 (5-10 שבועות):
  • עובדות Bitemporal, כמו תבניות API/SQL, ספרי ריצה לאחור/עיבוד מחדש.
  • FX/לוח שנה/DST-העשרה, OLTP↔DWH/provaydery פיוס.
  • ארכיון אחסון קר, תולעת לדיווח חבילות, אחיזה משפטית.
שלב 3 (שבועות 10-16):
  • אוטומציה מלאה של ”שידור חוזר ומה-אם”, השוואה של מדדים והתראות רגרסיה.
  • מאפיינים היסטוריים ושליטה על אם-אל, גב מטען בעלויות אחסון.
  • תיעוד ”כמו של” מדדים ודוחות רבייה.

17) רשימת בדיקות לפני המכירה

[ שולחנות ] תומכים במסע בזמן; מדיניות ואקום/שימור עקבית.
[ ] SCD II מיושם למדידות קריטיות; המצטרפים נבדקו.
[ ] תמונות של יחידות מפתח על D/M זמינות ונבדקות עם נצנצים.
[ ] כללי DQ פעילים; שושלת מציגה קלט/יציאות וגרסאות היגיון.
[ ] DSAR/RTBF/Legal Hold נבחנה על שכבות היסטוריות.
[ ] הארכיון הקר וההתאוששות מתועדים ומאומתים.
[ עלות ]/GB, נתח קר, התאוששות SLA

18) טעויות תכופות וכיצד להימנע מהן

אין מודל זמן מפורש: הוספת אירוע/עיבוד/תוקף.
FX ”רטרואקטיבית”: תמיד המסלול בזמן האירוע, לאחסן ”fx _ source”.
הצטרפות לא תקפה עם SCD: השתמש במרווח תוקף, לא 'is _ הנוכחי'.
תצוגות זהב מוטציות: יציאות דוחות חייבות להיות ניתנות להנצחה (או מבוססות).
אין שושלות/DQ: אין probability ומחסומים - להיכנס אליהם מהיום הראשון.
עלות בלתי ניתנת לשליטה: לכבות מסיבות חמות, ואקום, להמיר לקור.

19) גלוסרי

כפי-של שאילתא - בקשת נתונים ”כפי שהם הסתכלו על זמנו של ט”

סיבוכיות סימולטנית של זמן אירוע ועיבוד.
Snapshot - תמונה ממומשת של סטטוס/אגרגטים בסוף התקופה.
מסע בזמן - קריאת גרסאות היסטוריות של שולחנות.

תולעת - כתוב פעם אחת לקרוא רבים. ‏

20) השורה התחתונה

עבודה עם נתונים היסטוריים היא לא רק ”אחסון ארוך”, אלא גם משמעת הזמן: אירוע מפורש/עיבוד/bitemporal, מודלים של SCD ו-Snapshots, רפרודוקטיביות של בקשות, פיוס קפדני ובקרה, תצפית וארכיטקטורת אחסון יעילה. אם תעקוב אחר מדריך זה, יהיה לך בסיס היסטורי מוצק לדיווח, אנליטיקה ו-ML

Contact

צרו קשר

פנו אלינו בכל שאלה או צורך בתמיכה.אנחנו תמיד כאן כדי לעזור.

Telegram
@Gamble_GC
התחלת אינטגרציה

Email הוא חובה. Telegram או WhatsApp — אופציונליים.

השם שלכם לא חובה
Email לא חובה
נושא לא חובה
הודעה לא חובה
Telegram לא חובה
@
אם תציינו Telegram — נענה גם שם, בנוסף ל-Email.
WhatsApp לא חובה
פורמט: קידומת מדינה ומספר (לדוגמה, +972XXXXXXXXX).

בלחיצה על הכפתור אתם מסכימים לעיבוד הנתונים שלכם.