עיבוד אצווה
1) מטרה וערך
מסעי אצווה יוצרים תיקי תצוגה יומיים/שעות עבור:- דיווח רגולטורי ופיננסי (GGR/NGR, מסים, רישומי RG/AML).
- BI ואנליטיקת מוצר (קוהורטות, LTV, משפכי המרה).
- אימות דיוק (OLTP↔DWH, ספקים/PSP), היסטוריזציה (SCD).
- הכנת תכונות ומערך אימונים עבור אם-אל.
מאפייני מפתח: חיזוי, שלמות, רבייה, עלות נמוכה ליחידת נתונים.
2) ארכיטקטורה (התייחסות)
1. Innught (לכידה גולמית): HTTP/gRPC, CDC מ-OLTP, הספק מעלה את ”ברונזה”.
2. Lakehouse: Bronze (raw, apend-only) # Silver (נקי/conform) # Gold (הגשה).
3. תזמור: Flow/Dagster/Prefect (DAG, תלות, מגשים מחדש, SLA).
4. עיבוד: Spark/Trino/DBT/SQL; חלוקה ופורמטים של חומצה (דלתא/קרחון/האדי).
5. DQ וחוזים: Schema Registry, DQ rules (YAML/SQL), בדיקות צרכנים.
6. הגשה: שכבה BI/סמנטית, יצוא דוח (CSV/PDF/JSON + hash), API/GraphQL.
7. תצפיות: מדדי צינור, שושלות, יומנים, עלות (עלות/GB, עלות/שאילתה).
3) תדרים ו ־ SLAs
יומי (D + 1 עד 06:00 לנעול.) : דו "חות GGR, העלאות רגולטוריות, פיוס.
שעה/שעה: לוחות תפעוליים עבור Ops/Finance.
שבועי/חודשי: איתור סופי, מודלים וטרופרודוקציה.
- תצוגות זהב יומיות מוכנות עד השעה 06:00 לפי שעון מקומי.
- רעננות Silver p95/15 min עבור מיקרו עטלפים/לום 2 h לשעות היום.
- שלמות ב-99. 5%, תוקף (מזימה) ו-99. 9%.
4) הורדות מצטברות ומרכז לבקרת מחלות
גישות:- CDC (Change Data Capture): Dabezium/log recoveration # Bronze # grounds in Silver.
- סימן מים בזמן: 'עדכן _ at> max_loaded_ts'.
- השוואה: md5 (שורה) לגילוי שינוי.
- Upsert/Merge: עדכוני כסף/זהב אידמפוטנטים.
sql
MERGE INTO silver. payments AS s
USING staging. payments_delta AS d
ON s. transaction_id = d. transaction_id
WHEN MATCHED THEN UPDATE SET
WHEN NOT MATCHED THEN INSERT;
5) SCD (היסטוריזציה מדידה)
SCD I: כתיבה-יתר (כתיב, תיקונים קטנים).
SCD II: היסטוריה מלאה ('valid _ from/valid _ to/is _ current').
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. country <> u. country OR t. rg_status <> u. rg_status)
THEN UPDATE SET t. is_current = FALSE, t. 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);
6) מילוי גב עיבוד מחדש
הילוך אחורי: מילוי ראשוני/הילוך אחורי היסטורי.
עיבוד מחדש: חישוב מחדש של חלונות לאחר עריכת מידע לוגי/תיקון.
- אידמפוטנטיות (MERGE/upsert), אידמפוטנטיות בברונזה.
- מסע בזמן לריצות חוזרות של תמונות מטא-נתונים.
- רכסי הגבלה, מכסות ועבודות תחרותיות.
- תיעוד: פנקס עם שלבים וקריטריונים להשלמה.
7) דוגמנות שכבה
ברונזה:- Append-only, ”event _ date”, ”שיפוט”, מחיצות ”דייר”.
- אנחנו מאחסנים את המטען המקורי (עבור זיהוי פלילי), לתקן ”בליעה _ at”.
- נורמליזציה וסטנדרטיזציה: FK/ספריות, dedup, FX/timezones.
- טבלאות עובדתיות/ממדיות (3NF/BCNF), SCD עבור ממדי מפתח.
- חנויות דחויות עבור BI/רגולציה/מימון, מוכנות SLA.
- התממשות של אגרגטים; חפצי יצוא בלתי ניתנים לייצוא (חשיש + תולעת).
8) איכות נתונים (DQ-as-code)
דוגמה לחוקי YAML עבור סילבר:yaml table: silver. payments slo:
freshness_minutes: 15 completeness_percent: 99. 5 rules:
- name: amount_positive type: range column: amount_base min: 0. 01 severity: critical
- name: currency_whitelist type: in_set column: currency set: [EUR,USD,GBP,TRY,BRL]
severity: major
- name: unique_tx type: unique columns: [transaction_id]
severity: critical
- name: fk_user type: foreign_key column: user_pseudo_id ref_table: dim. users_scd severity: critical
מדיניות תגובה: critical laught job + DLQ; מייג 'ור/מינור תג + דיווח.
9) שכבה סמנטית ודיווח
הגדרות מאוחדות של מטריות (GGR/NGR, ARPU, Retition) במאגר סמנטי-שכבתי/מטרי.
מדדי ורסיונינג; אינטגרציה עם חבילות BI/ייצוא
דיווחים: CSV/JSON/PDF + Sha256, הורד את הלוג והחזק משפטי במידת הצורך.
10) פרטיות, תושבות, אבטחה
מזעור PII: פסאודונימיזציה של משתמשים; מיפוי בלולאה מוגנת נפרדת.
תושבות נתונים: ספריות/מפתחות נפרדים עבור EEA/UK/BR; איסור על הצטרפות אזורית ללא עילה חוקית.
הצפנה: TLS במעבר; KMS/CMK at-rest; בקרת ייצוא.
DSAR/RTBF: תחזיות חישוביות, עריכה סלקטיבית; ביקורת גישה.
ארכיון תולעת לחפצים רגולטוריים.
11) ביצועים ועלות
מחיצה לפי תאריך/שוק/דייר; הזמנה/אשכול לפי תחזיות תכופות.
פורמטים: טבלאות פרקט + חומצה; כיווץ/סטטיסטיקה, אופטימיזציה/ואקום.
התממשות: צבירה יציבה בזהב; להימנע מעבודות ”מונוליטיות”.
מכסות/תקציבים: chargbacking by team; גבולות אחוריים/בקשות כבדות.
לוח זמנים: חלונות עמוסים נמוכים (לילה/סוף שבוע), סדר עדיפויות.
12) יכולת תצפית וניהול
מדדי צינור: משך, אחוזי הצלחה, רטריאות, שורות מעובדות, עלות/שאילתה.
מטרי DQ: שלמות, תוקף, ייחודיות, שגיאות FK, סחף.
מפת חום טרייה: על ידי תחום ושוק; לוחות מחוונים של SLA.
שושלת היוחסין: מקורות הברונזה לדיווחים; ניתוח השפעה לפני שינויים.
תקציבי SLO, השפלת DQ, עיכובים, צמיחה בעלויות.
13) דוגמאות SQL/מודל
נורמליזציה של המטבע (כסף):sql
CREATE OR REPLACE TABLE silver. payments AS
SELECT p. transaction_id,
p. user_pseudo_id,
p. currency,
p. amount_orig,
r. rate AS fx_rate_used,
p. amount_orig r. rate AS amount_base,
p. market,
CAST(p. event_time AS TIMESTAMP) AS event_time
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';
תצוגה יומית של GGR (זהב):
sql
CREATE OR REPLACE VIEW gold. ggr_daily AS
SELECT
DATE(b. event_time) AS event_date,
b. market,
g. provider_id,
SUM(b. stake_base) AS stakes_eur,
SUM(p. amount_base) AS payouts_eur,
SUM(b. stake_base) - SUM(p. amount_base) AS ggr_eur
FROM silver. fact_bets b
LEFT JOIN silver. fact_payouts p
ON p. user_pseudo_id = b. user_pseudo_id
AND p. game_id = b. game_id
AND DATE(p. event_time) = DATE(b. event_time)
JOIN dim. games g ON g. game_id = b. game_id
GROUP BY 1,2,3;
בקרת השלמות (DQ SQL):
sql
SELECT market, event_date, COUNT() AS n
FROM silver. fact_bets
GROUP BY market, DATE(event_time) AS event_date
HAVING n = 0;
14) תהליכים ו ־ RACI
R (אחראי): Data Engineering (DAG ', Silver/Gold models), Data Platform (infra, circuit register, DQ).
ראש מחלקת נתונים/מידע ראשי.
C (ייעוץ): ציות/Legal/DPO (PII/Reservation), פיננסים (FX/GGR), סיכון (RG/AML), SRE (SLO/GGR).
אני (מושכל): BI/מוצר/שיווק/מבצעים.
15) מימוש מפת דרכים
MVP (4-6 שבועות):1. Bronze/Silver (תבנית חומצה), CDC/gurments עבור 2-3 תחומים.
2. DQ-like-קוד: 10-15 כללים לתשלומים/משחק + אימות CI.
3. תצוגת הזהב הראשונה (GGR Daily) עם SLA עד 06:00; דיווח על ייצוא + חשיש.
4. רעננות/שלמות/לוחות מחוונים, התראות בסיסיות.
שלב 2 (שבועות 6-12):- SCD II (ראשי תיבות של SCD II); הרחבת תחום.
- שכבה סמנטית של מדדים; בדיקות עם OLTP/ספקים (דיוק).
- נוהלי חזרה/עיבוד מחדש, ניתוח שושלות והשפעה, Regionalization (EEA/UK).
- סימולציה אוטומטית של שינויים (run-run), תקציבים/מכסות, chargback.
- תיעוד אוטומטי (דפי מוצר נתונים), תרגילי DR וחזרה בזמן.
- אופטימיזציה עלויות (התקבצות, התממשות, TTL, ואקום).
16) רשימת בדיקות לפני המכירה
[ חוזים ותוכניות ] ברישום, מבחני תאימות הם ירוקים.
[ ] הורדות אינקרמנטליות/CDC עובד, MERGE הוא אידמפוטנטי.
[ ] כללי DQ פעילים; □ כשל קריטי + DLQ; לדווח על הפרות.
[ ] SLA/רעננות/לוחות מחוונים מלאים; התראות מוכנות.
[ ] PII/DSAR/RTBF/Legal Hold אושר על ידי Ligal/DPO.
[ ] Runbook "ו-backfill/עיבוד מחדש/DR נבדק.
[ ] עלות תחת שליטה (עלות/שאילתה, עלות/GB, מכסות).
17) אנטי דפוסים ואיך להימנע
דקירות לילה מונוליטיות: להתפצל לצעדים עצמאיים, מקבילים על ידי מפלגות.
טעינה מלאה ללא צורך: השתמש במרווחים/CDC/מיזוג.
PII משתלב באנליטיקה: לשמור על מפות נפרדות, ליישם CLS/RLS.
אין DQ/שושלת: הזן DQ-as-code ומקור עקבות.
מילוי ידני: אוטומט ותיעוד, הגבלת טווח.
עלות בלתי ניתנת לשליטה: התקבצות, התממשות, מדיניות שימור.
18) גלוסרי (קצר)
CDC - שינויים לכידה מ OLTP.
SCD - לאט לאט משתנה מדידות (I/II/III).
אגם לייקהאוס - אגם נתונים + טבלאות חומצה.
מיזוג/אפסרט - פעולות עדכון אידמפוטנטיות.
מסע בזמן - קריאת גרסאות היסטוריות של שולחנות.
תולעת - אחסון בלתי משתנה של חפצים.
19) השורה התחתונה
עיבוד אצווה הוא משמעת של צפייה, רבייה, וצינורות חינם. על ידי ציות לעקרונות של סכימה-ראשונה, שינויים/CDC, היסטוריזציה של SCD, DQ-as-code, תצפית וכלכלה מודעת, תקבלו תצוגות ודוחות יציבים של זהב, המאומתים על ידי נצנצים ומוכנים לביקורת בכל עת.