أي تقرير بتشوفه في أي شركة، فيه حد بنى الطريق اللي البيانات مشيت فيه لحد ما وصلت. وده الـ Data Engineer.
يعني هو اللي بيعمل المواسير اللي البيانات بتجري فيها: بيسحبها من أماكن كتير، وينضفها، ويحطها في مكان واحد، علشان المحلل يفتحها يلاقيها جاهزة. والترتيب: SQL ومعاها Python، وبعدهم Data Modeling، وبعدين ETL، وبعدها الـ Data Warehouse، وبعدها Airflow، وفي الآخر Spark.
علّم على كل حاجة تخلصها وانت ماشي، علشان تعرف انت فين، وترجع تكمّل من نفس المكان.
قبل ما تبدأ
- ذاكر كل يوم، حتى لو شوية. المدد هنا محسوبة على ساعتين في اليوم. لو وقتك أقل هتاخد وقت أطول، وده عادي.
- المدد تقريبية. في ناس هتخلص أسرع وناس أبطأ. عدّي المرحلة لما تبقى جاهز فعلًا، مش لما الوقت يخلص.
- كل مرحلة فيها مشروع. متعديش للمرحلة اللي بعدها قبل ما تعمله بإيدك. والمشاريع هنا بتكمّل بعض، فاحتفظ بكل واحد على GitHub.
المرحلة 1 من 7
SQLلغة الكلام مع قواعد البيانات
المدة: 4 لـ 6 أسابيع
SQL لغة الكلام مع قواعد البيانات. وهي أول حاجة لأن كل خطوة في الشغلانة دي، من أول ما البيانات تتسحب لحد ما توصل للتقرير، فيها SQL في حتة.
ومعاها لغة Python. حطيتها المرحلة اللي بعدها علشان تركز في واحدة، بس لو حابب تمشّيهم مع بعض، تمام.
هتتعلم إيه
0 من 10اعمل بإيدك
Database لمكتبة. صمّم جداول لمكتبة: كتب، وأعضاء، واستعارات. واملاها بيانات تجريبية، واكتب 15 query: أكتر الكتب استعارة، والأعضاء المتأخرين في الرجوع، وعدد الاستعارات كل شهر، وأكتر عضو استعار في كل شهر بـ Window Function.
تعدّي للمرحلة اللي بعدها لما
- بتكتب
JOINوGROUP BYوالـ CTEs من غير ما تبص على شرح - تقدر تعمل database صغيرة من الصفر: جداول، وعلاقات، وبيانات
- لما query تبقى بطيئة، بتعرف تبدأ تدوّر فين
المرحلة 2 من 7
Pythonاللي بيربط كل حاجة ببعض
المدة: 6 لـ 8 أسابيع
Python هي اللي هتربط بيها كل حاجة: تسحب البيانات من API، وتقرا ملفات، وتنضف، وتكتب في الـ database. وأدوات زي Airflow و Spark اللي جايين في الخطة، هتكتبلهم بـ Python برضه.
مش محتاج هنا تبقى مبرمج تطبيقات. محتاج تكتب scripts نضيفة، تشتغل كل مرة بنفس الشكل، ولو حاجة فشلت تقولك فين.
هتتعلم إيه
0 من 10اعمل بإيدك
Script بيجمع بيانات من API. اختار API مجاني، زي Open-Meteo للطقس، واكتب script بيجيب بيانات آخر 30 يوم، وينضفها، ويحطها في جدول في PostgreSQL. ولو اتشغل مرتين، البيانات متتكررش.
تعدّي للمرحلة اللي بعدها لما
- بتكتب script بيقرا من مكان ويكتب في مكان تاني من غير ما تنسخ من حد
- الـ script بتاعك لو اتشغل مرتين، النتيجة هي هي
- كودك على GitHub، وفيه README بيقول يتشغل إزاي
المرحلة 3 من 7
Data Modelingترتيب الجداول
المدة: 3 لـ 4 أسابيع
Data Modeling يعني ترتّب الجداول إزاي، علشان البيانات متتلخبطش، والسؤال عليها يبقى سريع.
لو الجداول متصممة غلط، كل حاجة بعد كده هتبقى أصعب: الـ queries تطول، والأرقام تتكرر، وكل تقرير يطلّع رقم شكل. فالمرحلة دي مش طويلة، بس أثرها في كل اللي جاي.
هتتعلم إيه
0 من 10اعمل بإيدك
Star schema لمتجر. خد database متجر جاهزة، زي Chinook، وصمّم منها star schema للتحليل: fact table للمبيعات، و dimensions للعميل والمنتج والتاريخ. ارسم الـ ERD، واكتب الـ SQL اللي بيعمل الجداول الجديدة.
تعدّي للمرحلة اللي بعدها لما
- تقدر ترسم ERD لأي سيستم بسيط من وصفه
- بتحدد الـ grain بتاع أي fact table قبل ما تبنيه
- بتعرف تشرح إمتى تعمل normalization وإمتى لأ
المرحلة 4 من 7
ETLتسحب وتنضف وتحط في مكان واحد
المدة: 4 لـ 6 أسابيع
ETL يعني إنك تسحب البيانات من أماكن كتير، وتنضفها، وتحطها في مكان واحد: Extract و Transform و Load.
وده قلب الشغلانة. البيانات نادرًا ما بتيجي نضيفة: تواريخ بأشكال مختلفة، وأسماء مكتوبة غلط، وصفوف متكررة. وشغلك إن ده كله يتظبط قبل ما يوصل لحد.
هتتعلم إيه
0 من 10اعمل بإيدك
Pipeline من 3 مصادر. اسحب بيانات من API، ومن ملف CSV، ومن database، ونضفها، واكتبها في جداول الـ star schema اللي صممتها. كل ده بـ Python و SQL، ويتشغل بأمر واحد، ولو اتشغل مرتين النتيجة متتغيرش.
تعدّي للمرحلة اللي بعدها لما
- الـ pipeline بتاعك بيتشغل من الأول للآخر بأمر واحد
- لو مصدر وقع، بتعرف ده من الـ logs، مش لما حد يشتكي
- عندك checks بتمسك البيانات الغلط قبل ما توصل للجداول
المرحلة 5 من 7
Data Warehouseالمخزن الكبير
المدة: 3 لـ 4 أسابيع
الـ Data Warehouse هو المخزن الكبير اللي التحليل كله بيتعمل منه. كل البيانات اللي سحبتها ونضفتها بتوصل هنا، مترتبة بالشكل اللي صممته في الـ Data Modeling.
وده المكان اللي المحلل والـ dashboards بيقروا منه. يعني لو الشغل هنا مظبوط، كل اللي بعده هيبقى مظبوط.
هتتعلم إيه
0 من 10اعمل بإيدك
Warehouse لبيانات المتجر. حمّل اللي الـ pipeline بتاعك بيطلّعه في DuckDB أو BigQuery، واعمل بـ dbt طبقة staging وطبقة marts، وحط tests على الأعمدة المهمة: مفيش NULL، ومفيش تكرار. وفي الآخر اكتب 5 queries يحتاجها محلل، واتأكد إنها سهلة وسريعة.
تعدّي للمرحلة اللي بعدها لما
- بتعرف تشرح الفرق بين الـ database والـ warehouse والـ data lake
- الـ transformations بتاعتك models ليها tests، مش queries متفرقة
- محلل يقدر يفتح الـ marts بتاعتك ويفهمها من غير ما يسألك
المرحلة 6 من 7
Airflowالخطوات تتشغل لوحدها
المدة: 3 لـ 4 أسابيع
Airflow أداة بتشغّل الخطوات دي لوحدها كل يوم في ميعادها: تسحب، وبعدين تنضف، وبعدين تحمّل، بالترتيب. ولو خطوة فشلت، تعيدها أو تبلّغك.
من غيرها، انت اللي هتصحى كل يوم تشغّل الـ scripts بإيدك. ومعاها، الـ pipeline بقى سيستم شغال لوحده.
هتتعلم إيه
0 من 10اعمل بإيدك
الـ pipeline يتشغل لوحده كل يوم. حوّل الـ pipeline بتاعك لـ DAG في Airflow: يسحب، وبعدين ينضف ويحمّل، وبعدين يشغّل dbt والـ tests، كل يوم في ميعاد ثابت. وبوّظ مصدر بإيدك، واتأكد إن الـ task بتفشل وتعيد المحاولة وتبلّغك.
تعدّي للمرحلة اللي بعدها لما
- الـ pipeline بتاعك بيتشغل كل يوم من غير ما تلمسه
- لما task تفشل، بتعرف السبب من الـ logs في دقايق
- تقدر تعيد تشغيل يوم فات من غير ما البيانات تتكرر
المرحلة 7 من 7
Sparkلما جهاز واحد ميشيلش
المدة: 4 لـ 6 أسابيع
وفي الآخر Spark، لما البيانات تكبر لدرجة إن جهاز واحد ميشيلهاش. Spark بيقسم الشغل على أكتر من جهاز، وكل جهاز يشتغل على حتة.
وعلشان كده هي آخر مرحلة: بيانات كتير مش محتاجاها، و SQL في الـ warehouse بيكفيها. بس لما تحتاجها، هتفهمها بسرعة، لأنها DataFrames و SQL، وانت عارفهم.
هتتعلم إيه
0 من 10اعمل بإيدك
نفس الشغل على بيانات كبيرة. خد dataset كبيرة، زي بيانات رحلات تاكسي نيويورك المنشورة للعامة، واعمل عليها بـ PySpark تنضيف وتجميع زي اللي عملته قبل كده، واكتب النتيجة Parquet متقسمة بالشهر. وجرّب نفس الشغل بـ pandas على جزء منها، وقارن.
تعدّي للمرحلة اللي بعدها لما
- بتعرف تقرر إمتى Spark يستاهل وإمتى لأ
- بتكتب PySpark job بتقرا وتحوّل وتكتب Parquet
- بتفتح الـ Spark UI وتلاقي الخطوة البطيئة
سلم المشاريع
المشاريع هي اللي بتعلمك بجد، وهي اللي هتوريها لأي حد عايز يشغّلك. دول 5 مشاريع، كل واحد أصعب شوية من اللي قبله، وكلهم من المراحل فوق، والخامس هو اللي بيقفل الخطة.
Database لمكتبة
SQL و PostgreSQL
جداول وعلاقات و 15 query بتجاوب على أسئلة حقيقية. أول مرة تكلم database بجد.
Script بيجمع بيانات من API
Python و PostgreSQL
بيانات بتيجي من برة وتتحط في جدول، ولو اتشغل مرتين ميكررش حاجة.
Pipeline من 3 مصادر
Python و SQL و star schema
أول pipeline حقيقي: مصادر مختلفة، وتنضيف، وجداول متصممة للتحليل.
Pipeline بيشتغل لوحده
Airflow و dbt و DuckDB أو BigQuery
نفس الـ pipeline، بس بقى بيتشغل كل يوم، وعليه tests، وبيبلّغك لو حاجة وقعت.
مشروع الـ portfolio: من المصدر للـ dashboard
Python و Airflow و dbt و Spark
اختار مصدر بيانات حقيقي بيتحدث كل يوم، وابني الطريق كله: سحب بـ Python، و warehouse، و dbt، و Airflow بيشغّله كل يوم، و Spark لو البيانات كبيرة، وفي الآخر dashboard بسيط بيقرا من الـ marts. ارسم الـ architecture في الـ README. خد فيه من 3 لـ 5 أسابيع، وحط لينكه في الـ CV بتاعك.
مصادر مجانية
كل دول مجانيين أو فيهم جزء مجاني كبير. متجمعش مصادر كتير: اختار مصدر أساسي واحد لكل مرحلة وكمّل بيه، والباقي ارجعله لما تقف في حتة.
كورس من الأول للآخر
- Data Engineering Zoomcamp (بيفتح في تاب جديدة)كورس Data Engineering مجاني من DataTalksClub، فيه Docker و warehouse و dbt و Spark ومشروع في الآخر. ينفع يكون مرجعك من المرحلة الرابعة.
SQL
- SQLBolt (بيفتح في تاب جديدة)دروس قصيرة وتمرين بعد كل درس جوه المتصفح.
- PostgreSQL Tutorial (بيفتح في تاب جديدة)الشرح الرسمي لـ PostgreSQL، من أول ما تعمل database لحد الـ transactions.
- موسوعة حسوب: SQL (بيفتح في تاب جديدة)مرجع SQL بالعربي.
Python
- CS50's Introduction to Programming with Python (بيفتح في تاب جديدة)كورس Python مجاني من Harvard، بمحاضرات وتمارين من الصفر.
- The Python Tutorial (بيفتح في تاب جديدة)الشرح الرسمي للغة، ارجعله كل ما تقف في حاجة.
- Elzero Web School (بيفتح في تاب جديدة)قناة يوتيوب بالعربي، وفيها كورس Python من الصفر.
Data Modeling و Warehouse
- Kimball: Dimensional Modeling Techniques (بيفتح في تاب جديدة)شرح أفكار الـ fact والـ dimension والـ star schema من Kimball Group، أصحاب الطريقة نفسها.
- DuckDB (بيفتح في تاب جديدة)warehouse صغير بيشتغل على جهازك من غير سيرفر. أسهل مكان تتمرن فيه.
- BigQuery sandbox (بيفتح في تاب جديدة)تجرّب BigQuery ببلاش ومن غير كارت، بحدود استخدام.
- dbt Learn (بيفتح في تاب جديدة)كورسات dbt الرسمية، ابدأ بكورس الأساسيات.
Airflow
- Airflow Tutorials (بيفتح في تاب جديدة)الشرح الرسمي: أول DAG، والـ TaskFlow API، و pipeline كامل.
- Astronomer Academy (بيفتح في تاب جديدة)كورسات Airflow قصيرة من Astronomer، ابدأ بمسار Airflow 101.
Spark
- PySpark: Getting Started (بيفتح في تاب جديدة)الشرح الرسمي لـ PySpark: التسطيب، والـ DataFrames، و Spark SQL.
- Spark Quick Start (بيفتح في تاب جديدة)أول تجربة لـ Spark على جهازك في دقايق.
أكتر الأخطاء اللي بشوفها
- إنك تبدأ بـ Spark والأدوات الكبيرة قبل SQL. Spark آخر حاجة في الخطة مش صدفة: هي بتحل مشكلة بيانات كبيرة انت لسه مقابلتهاش. ومن غير SQL قوية و Python، هتشغّل الأداة من غير ما تفهم هي بتعمل إيه.
- إنك تجمع أدوات بدل ما تفهم الأفكار. كل شوية فيه أداة جديدة، لكن الأفكار ثابتة: ETL، و modeling، و idempotency، و orchestration. اتعلم الفكرة بأداة واحدة، وأي أداة تانية هتاخدها في أيام.
- إنك تبني pipeline من غير checks ولا logs. الـ pipeline اللي بيفشل وهو ساكت أخطر من اللي بيقع: الأرقام الغلط بتوصل للتقرير، وحد بياخد قرار بيها. حط checks على البيانات، وخلّي أي فشل يبان.
- إنك تحط كل حاجة في جدول واحد كبير. ده بيبان أسهل في الأول، وبعد شهرين كل query بقت معقدة وكل رقم مشكوك فيه. ارجع لمرحلة الـ Data Modeling.
- إنك متسيبش مشروع شغال كل يوم. الـ script اللي بتشغله مرة على جهازك مش هيعلمك اللي بيحصل لما pipeline يشتغل شهر: مصادر بتقع، وبيانات بيتغير شكلها. سيب مشروعك شغال، واتعلم من اللي بيحصله.
بعد كده
لما تخلص الخطة دي وتعمل مشروع الـ portfolio، دي الخطوات اللي بعدها:
- الـ Streaming: بيانات بتتعالج أول ما تحصل، مش مرة كل يوم، بأدوات زي Kafka. ابدأها لما يبقى الـ batch عندك مفهوم كويس.
- الـ Cloud: تشغّل كل ده على AWS أو Google Cloud أو Azure، وتتعلم الـ services بتاعتهم للبيانات. ولو عايز أساس Docker والـ Cloud و Terraform، بص على خطة DevOps.
- الـ Lakehouse: صيغ جداول زي Apache Iceberg و Delta Lake، بتخلي الـ data lake يتعامل كأنه warehouse.
ورأيي إن الشغلانة دي أقرب لبناء السيستمز منها لتحليل الأرقام. فلو انت بتحب تبني، ممكن يكون ده مكانك.
احفظ الصفحة دي، وارجعلها كل ما تخلص حاجة وعلّم عليها. ولو وقفت في مرحلة ومش فاهم، ارجع للي قبلها، غالبًا المشكلة هناك.