Logo GH

נורמליזציה של נתונים

1) מטרה

נורמליזציה מבטלת שכפולים וחריגות של עדכונים, קובעת ספריות ומפתחות אחידים, הופכת את הנתונים לעקביים וזולים לתחזוקה. ב-iGaming, זה קריטי עבור GGR/NGR, ניתוח AML/RG, דיווח רגולטורי, אנטי-פראוד, ו-ML.

2) איפה אנחנו לנרמל

ברונזה (גולמי): לא מנורמל - אחסון כפי שהוא (אפנד בלבד) לזיהוי פלילי.
כסף (נקי/קונפורם): נורמליזציה בסיסית (3NF/BCNF, ספריות, מפתחות, SCD).
גולד (Serve): מחסני מטרה - דחייה מבוקרת לקריאה/BI אפשרית.

3) עקרונות בסיסיים

1. לסכימה לכל השולחנות יש תרשימים ומפתחות מפורשים.
2. זיהוי יחיד: "user _ pseudo _ id'," session _ id', "game _ id'," spective _ id', "transaction _ id'.
3. ספריות נפוצות: מטבעות, שווקים/תחומי שיפוט, סטטוסים של KYC/RG, ספקי משחקים, ערוצי תנועה.
4. זמן ומטבע: לאחסן ”event _ time” (UTC) ולנרמל ”כמות _ base” + ”fx _ source”.
5. אבולוציה: גרסאות סמנטיות, רק שינויים תואמים ללא הפסקות ”שקט”.
6. מזעור PII: משתמש - באמצעות פסאודו-זיהוי; מיפוי מאוחסן בנפרד, הגישה מוגבלת.

4) צורות רגילות במהירות

1NF: ערכים אטומיים, אין מערכים בטורים (מערכים = שולחנות ילדים).
2NF-Attributes תלוי במפתח המתחם כולו.
3NF: אין תלות טרנזיטיבית (תכונה תלויה רק במפתח).
BCNF: כל דטרמיננטה היא מפתח. השתמש ב ”גרעין” (תשלומים/משחק).

תרגול: מודלים כסופים של תשלומים ופעילות משחקים שומרים על 3NF לפחות; יותר מחוספס של BCNF לספרי עיון ולוחות עיון.

5) מודל תחום התייחסות (כסף)

5. 1 ספרי עיון

'Dim'. משתמשים (פסאודו-זיהוי, מדינה, טווח גילאים, סטטוסים אר-ג 'י).
'Dim'. משחקים (game_id, provider_id, ז 'אנר, RTP, תנודתיות).
'Dim'. ספקים "(provider_id, סוג, רישיון).
'Dim'. שווקים "(קוד שיפוט, רגולטור).

'Dim'. (תאריך, , , שיעור,

5. 2 עובדות (טבלאות אירוע/עסקה צרות)

act '. תשלומים ( , , , מטבע, , שוק,

act '. הימורים ( , , , , תוצאה, .
act '. ( , , , .

קישורים: עובדות ↔ מדריכים על מפתחות יציבים. אנו משכפלים את כל הסכומים ב ”מטבע המקור” וב ”בסיס” (amount_base), תיקון ”fx _ source”.

6) לאט לאט משתנה מדידות (SCD)

סוג I (שכתוב יתר): איות/תיקונים לא קריטיים.
Type II (היסטוריה): ”תקפה _ מ/תקפה _ to/is _ עכשווית”, הביקורת משתנה (לדוגמה, סטטוס RG משתנה).
סוג III (טור אלטרנטיבי): ”לפני/אחרי” להשוואות קצרות.

המלצה: עבור ערוץ השיווק RG/KYC - SCD II; לספרי עיון למשחק (RTP) - SCD II עם אימות השפעה.

דוגמה של SCD II (מפושט):
sql
CREATE TABLE dim. users_scd (
user_pseudo_id STRING,
country STRING,
rg_status STRING,
valid_from TIMESTAMP,
valid_to  TIMESTAMP,
is_current BOOLEAN
);

7) שכפול ומפתחות

מפתחות פונדקאית (BIGINT/UUID) לקישורים פנימיים.
מפתחות טבעיים (לדוגמה, "transaction _ id' מ-PSP) - להיות מאוימים ומאוחסנים בנפרד.
Dedup by '(event_id, מקור) "לבלוע + על ידי מפתחות עסקים בסילבר.

ניכוי תשלומים (דוגמה):
sql
CREATE TABLE silver. payments AS
SELECT EXCEPT(rn) FROM (
SELECT p., ROW_NUMBER() OVER (PARTITION BY transaction_id ORDER BY event_time) rn
FROM bronze. payment_events p
)
WHERE rn = 1;

8) תקן מטבע ואזורי זמן

event _ time '- תמיד UTC; עבור חלונות ראווה, הוסף את אזור המיקום/זמן של השוק.
זרמים: ”כמות _ orig” ו- ”כמות _ בסיס” (לדוגמה, EUR) + ”fx _ source”, ”fx _ rate _ used”.
תיקון יומי של קורסים, עמום, fx_rates' עם מקור וחתימת חשיש.

נורמליזציה של כמויות (דוגמה):
sql
SELECT t. transaction_id,
t. amount_orig,
t. currency,
r. rate AS fx_rate_used,
t. amount_orig r. rate AS amount_base
FROM bronze. payment_events t
JOIN dim. fx_rates r
ON r. date = DATE(t. event_time) AND r. ccy_from = t. currency AND r. ccy_to = 'EUR';

9) עקביות של ספרי עיון

רשימות ספריות מאוחדות (משחקים, ספקים, שווקים, מטבעות).
מאשרים DQ: 'in _ set', אזכורי FK, ייחודיות, עקביות של SCD.
דימנסיה ”דקה” ממקורות חיצוניים (ספקי משחקים, מדינות, PSP).

10) מתי להכחיש

הדנורמליזציה מותרת בגולד עבור:
  • דיווחים יציבים ”רחבים” (GGR, תצוגות סיכון);
  • האצה של שאילתות BI/לוחות מחוונים
  • חנויות ריאליטי (ClickHouse/Pinot) תחת קריאות SLA.
כללים:
  • כסף נשאר מקור האמת.
  • שדות מוכחשים - מחושבים/מועתקים מכסף; לוגיקה מדומה.
  • כל הדנורמליזציה מתועדת ונבדק לתקן.

11) כוכב ודגם פתית שלג

כוכב: עובדה אחת + מדידות שטוחות - קריאה קלה ומהירה יותר, כתיבה/התאמה יקרה יותר.
פתית שלג: המדידות מנורמלות (תת-כיוונים מחוברים) - פחות כפילויות, שאילתות מורכבות יותר.

המלצה: בגולד לעתים קרובות יותר ”כוכב” ב ”פתיתי שלג” מנורמלים בכסף.

12) התפתחות מזימות (שינויים בטוחים)

התאמה אחורית: הוספת טורים סתמיים; ערכי התייחסות חדשים עם דגלים.
שבירה: שינוי שם/הקלדה/משמרות סמנטיות - רק דרך '/v2 'וכניסה כפולה לתקופת הנדידה.
חוזים: תוכניות JSON/Avro ברישום, בדיקות צרכנים לתאימות.

13) בקרת DQ לנורמליזציה

סט מינימלי:
  • מפתחות ייחודיים: ”transfaction _ id',” bet _ id'.
  • יושר התייחסות: FK על 'dim'.
  • מטבעות: ”מטבע” מלוויטליסט, ”fx _ rate _ used” not NULL, ”sume _ base> = 0”.
  • זמן: ”אירוע _ זמן” בחלון סביר; בלי אירועים ”עתידיים”.
  • SCD-נכון: רכסים שאינם חופפים ”תקפים _ מ/תקפים _ to”.

14) דוגמאות למודלים של SQL

קצב בפועל (3NF):
sql
CREATE TABLE silver. fact_bets (
bet_id STRING PRIMARY KEY,
user_pseudo_id STRING NOT NULL,
game_id STRING NOT NULL,
stake_ccy DECIMAL(18,2) NOT NULL,
currency CHAR(3) NOT NULL,
stake_base DECIMAL(18,2) NOT NULL,
market CHAR(2) NOT NULL,
event_time TIMESTAMP NOT NULL
);
כוכב עבור GGR (זהב):
sql
CREATE VIEW gold. ggr_daily AS
SELECT
DATE(b. event_time) AS event_date,
m. 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. markets m ON m. code = b. market
JOIN dim. games g  ON g. game_id = b. game_id
GROUP BY 1,2,3;

15) פרטיות וציות

חייג משתמש בכסף; קשר עם זיהוי אמיתי במעגל מוגן נפרד.
RLS/CLS ומיסוך שדה (דואר אלקטרוני/PAN לא זמין באנליטיקה).
Regionalization של ספריות/מפתחות, DPO control עבור סכימה הרחבה.

16) יכולת תצפית ושושלת

Data lineage מברונזה # Silver # Gold, גרסה של טרנספורמציות וחוזים.
מדדים: שלמות, תוקף, שגיאות FK, שכפולים, ”חורים” בזמן, עלות בקשה.
התראות בהפסקות בספריות ומקורות FX.

17) ראסי

R: Data Engineering (מודלים של כסף/זהב), Data Platform (רשימות מעגלים, DQ).
א ': ראש מחלקת נתונים/ארכיטקטורה.
C: Complication/DPO (PII/Reservation), Finance (FX/GGR), Risk (RG/AML).
אני: BI/מוצר/שיווק/מבצעים.

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

MVP (2-4 שבועות):

1. רשימות ספריות (שווקים, מטבעות, ספקים, משחקים).

2. עובדה של דוגמניות כסף. תשלומים ", עובדה. הימורים ',' Dim' (3HF), SCD II עבור 'Dim. משתמשים ".

3. נורמליזציה/אזור זמן, כללי DQ בסיסיים (FK/uniqueness/in_set).

4. תצוגת זהב ראשונה (GGR Daily) ומבחני פיוס.

שלב 2 (שבועות 4-8):
  • הרחבת SCD, כיסוי אירועי משחק, מודלים קונפורמליים מספקים.
  • סכימה תאימות אוטומטית, סימולטור נדידה, קטלוג metadata.
  • אופטימיזציית מפתח/צד, התקבצות/הזמנת Z.
שלב 3 (8-12 שבועות):
  • מדיניות הדנורמליזציה של זהב, SLA/value; תבנית כוכב/פתיתי שלג.
  • דור אוטומטי של תיעוד, גרף שושלת בלוחות מחוונים.
  • ספריות אזוריות ומפתחות הצפנה, תרגילי ד "ר.

19) רשימת בדיקות איכות

[ ] מפתחות רווקים וספריות מאושרים.
[ ] סילבר בשנת 3NF, SCD פנה למדידות ”איטיות”.
[ מטבעות ]/אזורי זמן מנורמלים; 'fx _ מקור' הוא קבוע.
[ ] חוקי DQ (FK/uniqueness/range/in_set) פעילים.
[ ] דנורמליזציות מתועדות, בדיקות תקינות עברו.
[ ] שושלת ורעננות/מדדים מלאים גלויים על לוחות מחוונים.

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

PII משתלב באנליטיקה: מפיות נפרדות, להשתמש CLS/RLS.
לא מספיק נורמליזציה של כסף: להוביל 3NF, תמיכה יקרה אחרת ושגיאות פיוס.
FX ”לכל דיווח”: קצב צריך להילכד באירוע, לא ”תארוך לאחור”.
אין SCD עבור ממדי מפתח: אבד RG/KYC/channel history.
renormalization זהב: מיותר מצטרף = = denormalization מנוהל.
אבולוציה אטומה של מזימות: שימוש במרשם ובבדיקות צרכניות.

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

נורמליזציה היא משמעת ברמת כסף: מפתחות אחידים וספרי עיון, 3NF/BCNF לעובדות ומדידות, היסטוריה נכונה (SCD) וסטנדרטיזציה של זמן/מטבעות. עם ”שלד” כזה, תיקים מזהב נעשים צפויים, דיווחים דומים, ועלות הבעלות מבוקרת.

Contact

צרו קשר

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

התחלת אינטגרציה

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

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

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