المشاريعرئيسي
NYC Taxi dbt Analytics
نمذجة بُعدية بـ dbt وDuckDB: 109,047,518 رحلة صفراء في المصدر، و8,298,395 حقيقة عيّنة، و34 اختبارًا في CI.
نظرة عامة
مستودع analytics engineering للتاكسي الأصفر والأخضر. ingest_data.py يُنزل الملفات الشهرية إلى Parquet في DuckDB (مخطط prod). ثم يبني dbt طبقات staging وintermediate وmarts. عمل من Zoomcamp الوحدة 04، محليًا بدل BigQuery.
الواجهة



المشكلة
تنشر TLC عشرات الملايين من الصفوف بأسماء أعمدة مختلفة بين الأصفر والأخضر. يحتاج المحلل نماذج مكتوبة وموثّقة قابلة للربط.
الحل التقني
تحميل Parquet إلى DuckDB ثم بناء staging → intermediate → marts عبر dbt. تُنشئ الطبقة الوسيطة trip_id من حبيبات الرحلة المستقرة كاملة؛ فقد كانت مفتاح مختصر سابق يسقط 202,906 رحلة صحيحة. يحتفظ النموذج المصحح بكل 8,298,395 صفًا لشهر يناير، وتمنع fixture في CI تكرار الخطأ.
ما يوجد في المستودع
- ingest_data.py: CSV.gz → Parquet → مخطط DuckDB prod
- Staging للأصفر والأخضر بتسمية موحّدة
- مخطط نجمي: dim_zones وdim_vendors وfct_trips تزايدي وfct_monthly_zone_revenue
- بذور المناطق وأنواع الدفع؛ دوال ماكرو
- حزم dbt_utils وcodegen؛ وثائق dbt محلية