GH GambleHub

العمل مع البيانات التاريخية

1) الغرض والمبادئ

الغرض: تخزين ومعالجة الحالات السابقة بحيث تكون التقارير والنماذج والتحقيقات قابلة للتكرار ودقيقة ومتوافقة.

المبادئ:
  • إدراك الوقت من خلال نماذج التصميم الزمنية الصريحة في المخططات والاستفسارات.
  • قابلية التكاثر: ينتج عن نفس التقرير عن التاريخ D دائمًا نفس النتيجة.
  • قابلية المراجعة: النسب، الطبقات الثابتة، WORMs عند الحاجة.
  • إدراك التكلفة: طبقات الأرشيف، والضغط، والتخزين البارد مع اتفاقيات SLAs مفهومة.
  • الخصوصية حسب التصميم: إدارة PII للمعاملات والطلبات القانونية بأثر رجعي.

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) طبقات التخزين والأشكال

البحيرة: برونزية (ملحقة خام فقط) → فضية (نظيفة/SCD/طبيعية) → ذهبية (معارض).
ACID- форматы: Delta/Iceberg/Hudi (MERGE/Upsert، السفر عبر الزمن، اللقطات).
التخزين المتدرج: ساخن/دافئ/بارد + WORM للتحف التنظيمية.
التقسيم: 'حدث _ تاريخ'، 'سوق'، 'مستأجر' ؛ التجميع/الترتيب Z حسب التوقعات المتكررة (المستخدم/اللعبة/المزود).

4) تاريخ القياس (SCD)

SCD I: الكتابة الفوقية - للتعديلات غير النقدية.
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) قصة حقيقة: لقطات ومرة زمنية

اللقطات: لقطة من مجاميع نهاية اليوم/الشهر (مثل رصيد المحفظة) - تسريع إعادة إنشاء التقارير التاريخية.
الحقائق الزمنية: تحديد وقت الحدث ووقت المعالجة لتمييز الإصلاحات المتأخرة عن الحسابات بأثر رجعي.
تاريخ مرة واحدة بالضبط: dedup بواسطة «event _ id» + idempotent MERGE.

6) السفر عبر الزمن وقابلية التكاثر

السفر عبر الزمن: جداول قراءة «في وقت T» للتصحيح والحوادث والتسويات.
إصدار المنطق: تحف التحويل (إصدارات 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", "reprocessed _ at'.
كتاب التشغيل:

1. تجميد الذهب الحالي ؛ 2) التحقق من DLQ/DQ ؛ 3) الجري الفضي ؛ 4) مقارنة المقاييس ؛ 5) إعادة بناء الذهب ؛ 6) النشر والتوقيع.

8) المصالحة

الشيكات: تسوية أحجام/كميات المبيعات مع OLTP و PSP/مقدمي الخدمات.
فحص الحلقة: خط أنابيب مستقل على العينة (مقارنة A/B).
التسامح مثل GGR ≤ 0 التناقض. 2٪ لليوم.

عينات 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، الامتثال والتعليق القانوني

تقليل 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) الأداء والتكلفة

التقسيم: حسب التاريخ/السوق/المستأجر ؛ التجميع العدواني بواسطة «user _ pseudo _ id »/« game _ id»، إذا قمنا بالتصفية كثيرًا.
الأشكال: Parquet + الإحصاء/الضغط ؛ الفراغ العادي/التحسين الأمثل.
التجسيد: التحميل المسبق للتجميعات التاريخية «المكلفة» ؛ للتقارير الفصلية/السنوية.
الأرشفة: تحويل الدفعات القديمة إلى تخزين بارد (تم توثيق اتفاقيات SLA للاسترداد).
أخذ العينات: لمهام البحث فقط، وليس للتنظيم/التمويل.

13) السمات التاريخية لـ ML

سجل الميزات: تحتوي كل ميزة على صيغة، مالك، SLO، «طراز _ إصدار».
اتساق الإنترنت/غير متصل: قاعدة شفرات تحويل واحدة، اختبارات تكرار.
الانجراف المميز: PSI/KS حسب الفترة، تخزين التوزيعات التاريخية.

14) أنماط الاستعلام

من: قابلية تكرار التقارير.
تحليل المجموعات: مجموعات من التسجيلات/الرواسب الأولى، النوافذ المتدحرجة.
الحقائق المتغيرة ببطء: корректные join'ы с SCD II ('event _ time BETWEEN valid_from AND CONALESCE (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)، منصة البيانات (ACID/archive)، المالية/الامتثال (مطابقات/متطلبات التخزين).
ألف (مسؤول): رئيس قسم البيانات/المدير التنفيذي.
جيم (استشاري): Legal/DPO (DSAR/RTBF/Legal Hold)، SRE (التكلفة/SLA)، الهندسة المعمارية.
I (مطلع): BI/Product/Marketing/Operations.

16) خارطة طريق التنفيذ

أفضل لاعب (3-5 أسابيع):

1. جداول ACID مع السفر عبر الزمن (دلتا/Iceberg/Hudi) والتقسيم الأساسي.

2. SCD II للأبعاد الرئيسية (المستخدمون/الألعاب/مقدمو الخدمات).

3. لقطات يومية للمجموعات الحرجة (GGR Daily).

4. DQ-as-code (uniqueness/in_set/temporal) + Lineage-graph.

المرحلة 2 (5-10 أسابيع):
  • حقائق زمنية، اعتبارًا من نماذج API/SQL، دفاتر إعادة التعبئة/إعادة المعالجة.
  • FX/التقويم/إثراء DST، التسويات OLTP↔DWH/provaydery.
  • أرشيف التخزين البارد، WORM لحزم الإبلاغ، Legal Hold.
المرحلة 3 (10-16 أسبوعاً):
  • أتمتة كاملة لمقارنة «إعادة التشغيل وماذا لو» للمقاييس وتنبيهات الانحدار.
  • الميزات التاريخية والتحكم في الانجراف ML، تحميل تكلفة التخزين.
  • توثيق المقاييس والتقارير القابلة للاستنساخ.

17) قائمة مرجعية قبل البيع

  • الجداول تدعم السفر عبر الزمن ؛ سياسات الفراغ/الاستبقاء متسقة.
  • يتم تنفيذ SCD II للقياسات الحرجة ؛ اختبار الانضمام.
  • تتوفر صور الوحدات الرئيسية على D/M ويتم فحصها باللمعان.
  • قواعد DQ نشطة ؛ النسب يعرض المدخلات/النواتج والنسخ المنطقية.
  • اختبرت DSAR/RTBF/Legal Hold على طبقات تاريخية.
  • تم توثيق أرشفة التخزين البارد واستعادته والتحقق منه.
  • التكلفة/جيجابايت، الحصة الباردة، الاسترداد

18) الأخطاء المتكررة وكيفية تجنبها

لا يوجد نموذج زمني صريح: أضف الحدث/المعالجة/الصلاحية.
FX «بأثر رجعي»: دائمًا الدورة التدريبية وقت الحدث، تخزين 'fx _ source'.
انضمام غير صالح مع SCD: فاصل صلاحية الاستخدام، وليس «هو _ الحالي».
عروض Mutating Gold: يجب أن تكون المخرجات التي يمكن الإبلاغ عنها ثابتة (أو متحررة).
لا سلالة/DQ: لا يمكن إثباتها ونقاط التفتيش - ادخلها من اليوم الأول.
تكلفة لا يمكن التحكم فيها: إيقاف الحفلات الساخنة، والمكنسة الكهربائية، وتحويلها إلى باردة.

19) مسرد

As-of Query - طلب بيانات «كما نظروا في وقت T.»

Bitemporal - التثبيت المتزامن للحدث ووقت المعالجة.
لقطة - لقطة مجسدة للحالة/المجاميع في نهاية الفترة.
السفر عبر الزمن - قراءة النسخ التاريخية من الجداول.
WORM - اكتب مرة واحدة اقرأ كثيرًا.

20) خلاصة القول

إن العمل مع البيانات التاريخية ليس مجرد «تخزين طويل»، ولكن الانضباط الزمني: حدث/معالجة/نماذج زمنية صريحة، و SCD ولقطات، وطلبات قابلة للتكرار، وتسويات صارمة وضوابط الامتثال، وقابلية الملاحظة، وهندسة تخزين فعالة من حيث التكلفة. باتباع هذا الدليل، سيكون لديك أساس تاريخي متين للإبلاغ والتحليلات و ML يكون مرنًا للتدقيق والتغييرات في منطق العمل.

Contact

اتصل بنا

تواصل معنا لأي أسئلة أو دعم.نحن دائمًا جاهزون لمساعدتكم!

Telegram
@Gamble_GC
بدء التكامل

البريد الإلكتروني — إلزامي. تيليغرام أو واتساب — اختياري.

اسمك اختياري
البريد الإلكتروني اختياري
الموضوع اختياري
الرسالة اختياري
Telegram اختياري
@
إذا ذكرت تيليغرام — سنرد عليك هناك أيضًا بالإضافة إلى البريد الإلكتروني.
WhatsApp اختياري
الصيغة: رمز الدولة + الرقم (مثال: +971XXXXXXXXX).

بالنقر على الزر، فإنك توافق على معالجة بياناتك.