הגדרת הפרויקט

זהו הפרויקט המסכם של יחידת Python ו-Pandas כולה: צנרת ETL אמיתית שצריכה לשאוב נתונים משני מקורות שונים לגמרי — Postgres (SQL, מיחידת EF Core) ו-MongoDB (Document DB, מיחידת NoSQL) — לאחד ולעבד אותם עם Pandas, לכתוב דוח יומי ל-CSV, ולזהות אנומליות (חריגות סטטיסטיות) שדורשות תשומת לב מיידית. אין כאן כלי טכני חדש — כל שכבה (Extract/Transform/Load, ניקוי, קיבוץ, logging) כבר נלמדה בנפרד ביחידה; המשימה כאן היא חיבור מלא לצנרת אחת עובדת, על נתונים משני עולמות שונים (SQL מובנה + NoSQL גמיש) שמתאחדים דרך Pandas כמכנה משותף.

מה צריך להיות מוכן בסוף

דרישות:

  1. Extract מ-Postgres (הזמנות) ומ-MongoDB (אירועי משתמש), עם logging על כמות הרשומות שנשלפו מכל מקור
  2. Transform: ניקוי נתונים חסרים, קיבוץ לפי מוצר, וזיהוי אנומליה — ערך שחורג מ-2 סטיות תקן מהממוצע מסומן לבדיקה, לא “מתוקן” אוטומטית
  3. Load: דוח CSV יומי (שם הקובץ כולל תאריך) + רישום warning בלוג על כל אנומליה שזוהתה
  4. עטיפת כל התהליך ב-try/except עם logging.error על כל כישלון, כך שריצה עתידית (מתוזמנת) לא נחסמת

קריטריוני הצלחה:

• הרצת ה-Pipeline המלא מייצרת קובץ CSV עם סיכום נכון של הנתונים משני המקורות

• הזרקת נתון קיצוני מכוונת גורמת לו להיות מסומן כאנומליה, עם warning מתאים בלוג

• כישלון מכוון באחד המקורות (למשל Mongo לא זמין) נתפס ומתועד כ-error, בלי לקרוס את כל התוכנית

• הרצה חוזרת באותו יום כותבת לאותו קובץ דוח (לפי תאריך), ולא יוצרת קבצים כפולים

דוקומנטציה רשמית מותרת

Pandas — Documentation

SQLAlchemy — Documentation

PyMongo — Documentation