يطلب أحد أصحاب المصلحة بيانات حول المستخدمين النشطين شهرياً ومعدلات الاحتفاظ بهم (مُصنفة حسب فئة الاشتراك) استناداً إلى ملف بيانات مستخرج من نظام برمجيات كخدمة (SaaS) يغطي الفترة من 1 يناير 2025 إلى 30 يونيو 2025. يحتوي ملف CSV على 120 ألف سجل على مستوى “الحدث”، وتتضمن البيانات تنسيقات مختلطة للطوابع الزمنية، وقِيماً فارغة (null) في حقل معرف المستخدم (user_id)، وأحداثاً مكررة ناتجة عن عمليات إعادة التشغيل (replays). إن عملية التنظيف ليست مجرد مهمة أولية روتينية؛ بل هي مجموعة من القرارات التحليلية التي تحدد ماهية “النشاط”، ومن يُعتبر “مستخدماً”، وما هي السجلات المقبولة.
يجب أن تكون مخرجات عملك جاهزة للتدقيق؛ إذ يتعين عليك امتلاك مجموعة بيانات نظيفة قابلة لإعادة المعالجة، بالإضافة إلى سجل تغييرات يبرر كل عملية تحويل للبيانات. يمكن للذكاء الاصطناعي صياغة الكود البرمجي، وحصر الحالات الاستثنائية (edge cases)، واقتراح فحوصات للتحقق من صحة البيانات. ومع ذلك، تقع على عاتقك مسؤولية اعتماد التعريفات، واختيار الحدود الفاصلة (thresholds)، وتحمل تبعات أي أخطاء لاحقة قد تنشأ إذا أدى قرار اتخذته أثناء التنظيف إلى تشويه أحد المقاييس.
قبل البدء في كتابة الكود، يجب عليك تحديد المقصود بعبارة “نظيفة بما يكفي” (clean enough) فيما يتعلق بهذا السؤال؛ حيث يتحول هذا التعريف إلى معايير اختبار قبول يجب أن تجتازها البيانات النظيفة الناتجة.
يُعد كل قرار يتعلق بتنظيف البيانات بمثابة تدخل إحصائي؛ فهو يغير “عملية توليد البيانات” التي يُفترض أنها أنتجت الجدول، كما يؤثر على التقديرات المستخرجة.
آلية فقدان البيانات (Missingness mechanism): هي السبب وراء غياب القيم. فإذا كانت قيمة plan_tier (فئة الخطة) فارغة (null) بسبب فشل دمج جدول الفواتير لأسبوع معين، فإن تعويضها بالفئة الأكثر شيوعاً سيؤدي إلى تزييف أعداد الشرائح والتحيز في قياس معدل الاحتفاظ (retention) حسب الفئة. لذا، يجب تصنيف القيم المفقودة على أنها “غير مقاسة” أو “غير مسجلة” أو “غير قابلة للتطبيق”، ومن ثم اختيار الإجراء المناسب: الحذف، أو التعويض (imputation)، أو وضعها في فئة منفصلة. يمكن للذكاء الاصطناعي اقتراح خيارات، لكنه لا يستطيع استنتاج الآلية من العمود وحده.
قاعدة إزالة التكرار (Deduplication rule): هي التعريف التجاري (أو الخاص بالأعمال) لما يُعتبر تكراراً. إذا كانت الأحداث المُعاد إرسالها (replayed events) تشترك في نفس المعرفات (user_id, event_name, event_ts) ضمن نطاق زمني قدره 5 ثوانٍ، فإن دمجها قد يكون صحيحاً لحساب معدلات الاستخدام، ولكنه خاطئ عند تحليل زمن الاستجابة (latency). عندما يقوم الذكاء الاصطناعي بإزالة التكرارات باستخدام دالة drop_duplicates()، فإنه يختار المفاتيح ومعايير الأولوية تلقائياً ودون تدخل مباشر؛ لذا يجب عليك تحديد المفاتيح، وقواعد الفصل عند تساوي القيم، وتأثير ذلك على المقياس المستخدم.
تحويل نوع البيانات (Type coercion): يغير هذا الإجراء ترتيب البيانات وتجميعها. فقد يؤدي تحليل حقل الطابع الزمني للحدث (event_ts) بشكل غير صحيح إلى نقل الأحداث بين الأشهر، مما يخلق تغييراً وهمياً في عدد المستخدمين النشطين شهرياً (MAU). لذا، يجب التحقق من معدل نجاح عملية التحليل (parsing) ومن الافتراضات المتعلقة بالمنطقة الزمنية.