هذا العمل ممتاز جداً وقوي تقنياً يا محمد لأنه يجمع بين **نمذجة البيانات (Data Modeling / Star Schema)** وهندسة قواعد البيانات والربط
في هذا المشروع قمت بتحويل وتنظيم بيانات المبيعات المسطحة (Flat Data) إلى نموذج بيانات بعدي متكامل مبني على معمارية **المخطط النجمي (Star Schema)**، وتجهيزه وتصديره مباشرة إلى قاعدة بيانات **Microsoft SQL Server** باستخدام كود بايثون مؤتمت بالكامل عبر مكتبة **SQLAlchemy**. يهدف هذا النموذج إلى رفع كفاءة الاستعلامات التحليلية وتجهيز البيانات لمنظومات ذكاء الأعمال (BI Systems) وإعداد التقارير.
---
### **مراحل وخطوات تنفيذ المشروع:**
#### **1. النمذجة البعدية وإنشاء جداول الأبعاد (Dimensional Modeling - Dimension Tables):**
* **جدول التاريخ البعدي (`dim_date`):** استخراج وتوليد بُعد تاريخ تحليلي شامل يضم (اليوم، الشهر، الربع السنوي، السنة، اسم اليوم، رقم الأسبوع في السنة، وتمييز عطلات نهاية الأسبوع `is_weekend`).
* **جداول الأبعاد الوصفية:**
* `dim_product`: بيانات المنتجات، الفئات (`Category`) والفئات الفرعية (`Sub-Category`).
* `dim_customer`: بيانات العملاء وشرائحهم (`Segment`).
* `dim_location`: النطاق الجغرافي (الدولة، المدينة، الولاية، الرمز البريدي، والمنطقة).
* `dim_ship_mode`: طرق الشحن والتوصيل.
* إزالة التكرارات بالكامل وتوليد مفاتيح بديلة مميزة (`Surrogate Keys` مثل: `product_key`, `customer_key`, `location_key`) لكل بُعد لضمان كفاءة الربط.
#### **2. بناء جدول الحقائق (Fact Table Construction):**
* دمج جداول الأبعاد مع البيانات التشغيلية باستخدام عمليات الربط (`merge`) في بايثون لربط كل عملية بيع بالمفاتيح البديلة الصحيحة.
* ربط تواريخ الطلب والشحن بالبُعد الزمني (`dim_date`) عبر المفاتيح الرقمية (`order_date_key`, `ship_date_key`).
* الاحتفاظ بالمقاييس الرقمية الأساسية للأعمال: المبيعات (`Sales`)، الكميات (`Quantity`)، نسب الخصم (`Discount`)، وصافي الأرباح (`Profit`).
#### **3. هندسة قواعد البيانات وإنشاء المخطط (Schema & DDL Scripting):**
* كتابة أوامر تعريف البيانات (`DDL Statements`) بلغة T-SQL لإنشاء جداول الأبعاد والحقائق داخل SQL Server.
* تحديد أنواع البيانات المناسبة لكل حقل واشتراطات عدم قبول القيم الفارغة (`NOT NULL`).
* تطبيق سلامة المرجعيات والعلاقات البنيوية عبر فرض المفاتيح الأساسية (`PRIMARY KEY`) والمفاتيح الأجنبية (`FOREIGN KEY`) لربط جدول الحقائق بجميع جداول الأبعاد بدقة تامة.
#### **4. الربط والتنفيذ التلقائي (Database Automation with SQLAlchemy):**
* إنشاء اتصال آمن وسريع بقاعدة بيانات SQL Server عبر `SQLAlchemy` و `pyodbc` مع تفعيل خاصية `fast_executemany` لتسريع عمليات الكتابة.
* أتمتة تشغيل أوامر DDL وإنشاء كافة الجداول والعلاقات برمجياً دفعة واحدة من داخل بيئة بايثون.
---
### **الأدوات والتقنيات المستخدمة:**
* **Python**: محرك معالجة البيانات وبناء خط العمل (Pipeline).
* **Pandas**: استخلاص وتجهيز جداول الأبعاد والحقائق وتوليد المفاتيح البديلة (`Surrogate Keys`).
* **SQL Server (T-SQL)**: استضافة مستودع البيانات وتنفيذ أوامر الـ DDL وتأمين العلاقات المرجعية (`Foreign Keys`).
* **SQLAlchemy & pyodbc**: إدارة الاتصال بقاعدة البيانات وأتمتة التنفيذ.
* **Data Modeling Concepts**: Star Schema, Fact & Dimension Tables, Surrogate Keys.
---
المخرجات والقيمة المضافة
* نموذج بيانات تحليلي معياري ونظيف (Star Schema) يسهل ربطه مباشرة بأدوات مثل Power BI و Tableau.
* تقليل تكرار البيانات (Data Redundancy) وتسريع وقت الاستعلامات المعقدة.