بناء وتصميم مستودع بيانات ونموذج نجمي (Star Schema) باستخدام Python & SQL Server

تفاصيل العمل

هذا العمل ممتاز جداً وقوي تقنياً يا محمد لأنه يجمع بين **نمذجة البيانات (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) وتسريع وقت الاستعلامات المعقدة.

بطاقة العمل

اسم المستقل
عدد الإعجابات
0
تاريخ الإضافة
تاريخ الإنجاز
المهارات