منصة ذكاء الأعمال: دروس تعليمية باستخدام خط تجميع MongoDB

نشرت: 2022-03-11

إن استخدام البيانات للإجابة على أسئلة مثيرة للاهتمام هو ما ينشغل به الباحثون في عالم اليوم المدفوع بالبيانات. بالنظر إلى الكميات الهائلة من البيانات ، فإن التحدي المتمثل في معالجتها وتحليلها يعد تحديًا كبيرًا ؛ خاصة بالنسبة للإحصائيين أو محللي البيانات الذين ليس لديهم الوقت للاستثمار في تعلم منصات أو تقنيات ذكاء الأعمال التي توفرها قواعد بيانات Hadoop أو Spark أو NoSQL التي تساعدهم على تحليل تيرابايت من البيانات في دقائق.

القاعدة اليوم هي أن يقوم الباحثون أو الإحصائيون ببناء نماذجهم على مجموعات فرعية من البيانات في حزم التحليلات مثل R أو MATLAB أو Octave ، ثم إعطاء الصيغ وخطوات معالجة البيانات لفرق تكنولوجيا المعلومات التي تقوم بعد ذلك ببناء حلول تحليلات الإنتاج.

تتمثل إحدى مشكلات هذا النهج في أنه إذا أدرك الباحث شيئًا جديدًا بعد تشغيل نموذجه على جميع البيانات في الإنتاج ، فيجب تكرار العملية مرة أخرى.

ماذا لو تمكن الباحث من العمل مع مطور MongoDB وإجراء تحليله على جميع بيانات الإنتاج واستخدامها كمجموعة بيانات استكشافية ، دون الحاجة إلى تعلم أي تقنية جديدة أو لغات برمجة معقدة ، أو حتى لغة SQL؟

mongodb وذكاء الأعمال

إذا استخدمنا خط أنابيب تجميع MongoDB و MEAN بفعالية يمكننا تحقيق ذلك في وقت قصير بشكل معقول. من خلال هذه المقالة والرمز المتاح هنا في مستودع GitHub هذا ، نود أن نوضح مدى سهولة تحقيق ذلك.

توفر معظم أدوات ذكاء الأعمال الموجودة في السوق طرقًا للباحثين لاستيراد مجموعات البيانات من NoSQL وتقنيات البيانات الضخمة الأخرى إلى الأداة ، ثم تتم عمليات التحويل والتحليل داخل الأداة. ولكن في هذا البرنامج التعليمي لذكاء الأعمال ، نستخدم قوة MongoDB Aggregation Pipeline دون سحب البيانات من MongoDB ، ويستخدم الباحث واجهة بسيطة للقيام بجميع أنواع التحويلات على نظام إنتاج البيانات الضخمة.

خط تجميع MongoDB لذكاء الأعمال

ببساطة ، خط أنابيب تجميع MongoDB هو إطار عمل لأداء سلسلة من تحويلات البيانات على مجموعة بيانات. تأخذ المرحلة الأولى المجموعة الكاملة من المستندات كمدخلات ، ومن ثم تأخذ كل مرحلة لاحقة مجموعة نتائج التحويل السابقة كمدخلات وتنتج بعض المخرجات المحولة.

هناك 10 أنواع من التحويلات التي يمكن استخدامها في خط أنابيب التجميع:

  • geoNear $: إخراج المستندات بالترتيب من الأقرب إلى الأبعد من نقطة محددة

  • $ match: يقوم بتصفية سجل الإدخال الذي تم تعيينه بواسطة أي تعبيرات معينة

  • مشروع $: يُنشئ مجموعة نتائج بمجموعة فرعية من حقول الإدخال أو الحقول المحسوبة

  • redact $: يقيد محتويات المستندات بناءً على المعلومات الواردة في المستند

  • الاسترخاء $: يأخذ حقل مصفوفة مع n من العناصر من مستند ويعيد عدد n من المستندات مع إضافة كل عنصر إلى كل مستند كحقل يحل محل تلك المصفوفة

  • مجموعة $: مجموعات حسب عمود واحد أو أكثر وإجراء تجميعات على أعمدة أخرى

  • حد $: يختار المستندات الأولى من مجموعات الإدخال (مفيدة لحسابات النسبة المئوية ، وما إلى ذلك)

  • تخطي $: يتجاهل المستندات n الأولى من مجموعة الإدخال

  • نوع $: يفرز جميع مستندات الإدخال حسب العنصر المحدد

  • $ out: يأخذ جميع المستندات التي تم إرجاعها من المرحلة السابقة ويكتبها في مجموعة

باستثناء الأول والأخير في القائمة أعلاه ، لا توجد قواعد حول الترتيب الذي يمكن تطبيق هذه التحولات به. يجب استخدام $ out مرة واحدة فقط ، وفي النهاية ، إذا أردنا كتابة نتيجة خط التجميع إلى مجموعة جديدة أو موجودة. يمكن استخدام $ geoNear كمرحلة أولى من خط الأنابيب فقط.

من أجل تسهيل فهم الأمور ، دعنا نتصفح مجموعتين من البيانات وسؤالين متعلقين بمجموعات البيانات هذه.

الفرق في الرواتب حسب التسمية

من أجل شرح قوة خط تجميع MongoDB ، قمنا بتنزيل مجموعة بيانات تحتوي على معلومات عن رواتب أعضاء هيئة التدريس بالجامعة في الولايات المتحدة بأكملها. هذه البيانات متاحة في nces.ed.gov. لدينا بيانات من 7598 مؤسسة في المجالات التالية:

 var FacultySchema = mongoose.Schema({ InstitutionName : String, AvgSalaryAll : Number, AVGSalaryProfessors : Number, AVGSalaryAssociateProfessors : Number, AVGSalaryAssistantProfessors : Number, AVGSalaryLecturers : Number, AVGSalaryInstructors : Number, StreetAddress : String, City : String, State : String, ZIPCode : String, MenStaffCount : Number, WomenStaffCount : Number }

مع هذه البيانات نريد أن نعرف (في المتوسط) ما هو الفرق بين رواتب الأساتذة المشاركين والأساتذة حسب الدولة. بعد ذلك ، يمكن للأستاذ المشارك أن يدرك في الحالة التي يكون فيها أقرب إلى الأستاذ من حيث الراتب.

للإجابة على هذا السؤال ، يحتاج الباحث أولاً إلى إزالة البيانات السيئة من المجموعة ، نظرًا لوجود عدد قليل من الصفوف / المستندات في مجموعة البيانات الخاصة بنا حيث يكون متوسط ​​الراتب عبارة عن سلسلة فارغة أو فارغة. لإنجاز هذا التنظيف لمجموعة البيانات ، سنضيف المرحلة التالية:

 {$match: {AVGSalaryProfessors: {$not: {$type: 2}}, AVGSalaryAssociateProfessors: {$not: {$type: 2}}}}

سيؤدي هذا إلى تصفية جميع الكيانات التي لها قيم سلسلة في هذين الحقلين. في MongoDB ، يتم تمثيل كل نوع برقم فريد - بالنسبة للسلاسل ، رقم النوع هو 2.

تعد مجموعة البيانات هذه مثالًا جيدًا لأنه في تحليلات البيانات في العالم الحقيقي ، غالبًا ما يتعين على المهندسين التعامل مع عمليات تنظيف البيانات أيضًا.

الآن بعد أن أصبح لدينا بعض البيانات المستقرة ، يمكننا المتابعة إلى المرحلة التالية حيث سنعمل على متوسط ​​الرواتب حسب الولاية:

 {$group: {_id: "$State", StateAVGSalaryProfessors: {$avg: "$AVGSalaryProfessors"}, StateAVGSalaryAssociateProfessors: {$avg: "$AVGSalaryAssociateProfessors"}}}

نحتاج فقط إلى تشغيل إسقاط لمجموعة النتائج المذكورة أعلاه والحصول على الفرق في متوسط ​​رواتب الدولة ، كما هو موضح أدناه في المرحلة 3 من خط الأنابيب لدينا:

 {$project: {_ID: 1, SalaryDifference: {$subtract: ["$StateAVGSalaryProfessors", "$StateAVGSalaryAssociateProfessors"]}}}

يجب أن يمنحنا هذا متوسط ​​فرق الراتب على مستوى الولاية بين الأساتذة والأساتذة المشاركين من مجموعة بيانات تضم 7519 مؤسسة تعليمية في جميع أنحاء الولايات المتحدة. لجعل تفسير هذه المعلومات أكثر ملاءمة ، دعنا نقوم بفرز بسيط حتى نعرف أي حالة لديها أقل اختلاف عن طريق إضافة مرحلة الفرز $:

 {$sort: { SalaryDifference: 1}}

من مجموعة البيانات هذه ، من الواضح أن أيداهو ، وكانساس ، ووست فرجينيا هي ثلاث ولايات حيث يكون الفرق في رواتب الأساتذة والأساتذة المشاركين هو الأقل مقارنة بجميع الولايات الأخرى.

يتم عرض خط أنابيب التجميع الكامل الذي تم إنشاؤه لهذا أدناه:

 [ {$match: {AVGSalaryProfessors: {$not: {$type: 2}}, AVGSalaryAssociateProfessors: {$not: {$type: 2}}}}, {$group: {_id: "$State", StateAVGSalaryProfessors: {$avg: "$AVGSalaryProfessors"}, StateAVGSalaryAssociateProfessors: {$avg: "$AVGSalaryAssociateProfessors"}}}, {$project: {_ID: 1, SalaryDifference: {$subtract: ["$StateAVGSalaryProfessors", "$StateAVGSalaryAssociateProfessors"]}}}, {$sort: { SalaryDifference: 1}} ]

تبدو مجموعة البيانات الناتجة التي تظهر هكذا. يمكن للباحثين أيضًا تصدير هذه النتائج إلى CSV للإبلاغ عنها باستخدام حزم التصور مثل Tableau ، أو من خلال مخططات Microsoft Excel البسيطة.

مثال على مجموعة بيانات mongodb

متوسط ​​الأجر حسب نوع التوظيف

مثال آخر سنستكشفه في هذه المقالة يتضمن مجموعة بيانات تم الحصول عليها من www.data.gov. بالنظر إلى معلومات كشوف المرتبات لجميع مؤسسات الحكومة الحكومية والمحلية في الولايات المتحدة الأمريكية ، نود معرفة متوسط ​​رواتب موظفي "الإدارة المالية" بدوام كامل وبدوام جزئي في كل ولاية.

تم استيراد مجموعة البيانات ، مما أدى إلى مستندات 1975 حيث يتبع كل مستند هذا المخطط:

 mongoose.Schema({ State : String, GovernmentFunction : String, FullTimeEmployees : Number, VariationPCT : Number, FullTimePay : Number, PartTimeEmployees : Number, PartTimePay : Number, PartTimeHours : Number, FullTimeEquivalentEmployment : Number, TotalEmployees : Number, TotalMarchPay : Number }, {collection: 'payroll'});

قد تساعد الإجابة على هذا السؤال موظف الإدارة المالية في اختيار أفضل حالة ينتقل إليها. من خلال الأداة القائمة على خط أنابيب التجميع MongoDB ، يمكن القيام بذلك بسهولة تامة:

في المرحلة الأولى ، قم بتصفية عمود الوظيفة الحكومية لتجاهل جميع الكيانات غير "الإدارة المالية":

 {$match:{GovernmentFunction:'Financial Administration'}}

في المرحلة التالية من البرنامج التعليمي ، سنجمع الكيانات حسب الولاية ونحسب متوسط ​​رواتب الدوام الكامل وبدوام جزئي في كل ولاية:

 {$group: {_id: '$State', FTP_AVG: {$avg: '$FullTimePay'}, PTM_AVG: {$avg: '$PartTimePay'}}}

أخيرًا ، سنقوم بفرز النتائج من الدول ذات الأجور الأعلى إلى الدول ذات الأجور الأقل:

 {$sort: {FTP_AVG: -1, PTM_AVG: -1}}

يجب أن يسمح هذا للأداة بإنشاء خط أنابيب التجميع التالي:

 [ {$match:{GovernmentFunction:'Financial Administration'}}, {$group: {_id: '$State', FTP_AVG: {$avg: '$FullTimePay'}, PTM_AVG: {$avg: '$PartTimePay'}}}, {$sort: {FTP_AVG: -1, PTM_AVG: -1}} ]

يجب أن ينتج عن تشغيل خط التجميع بعض النتائج مثل هذا:

خط أنابيب تجميع mongodb

اللبنات

لإنشاء تطبيق ذكاء الأعمال هذا ، استخدمنا MEAN ، وهو مزيج من MongoDB و ExpressJS و AngularJS و NodeJS.

يعني ذكاء الأعمال

كما تعلم بالفعل ، فإن MongoDB هي قاعدة بيانات مستندات غير مخطط لها. على الرغم من أن حجم كل مستند يخزنه يقتصر على 16 ميجابايت ، إلا أن مرونته وأدائه جنبًا إلى جنب مع إطار عمل خط أنابيب التجميع الذي يوفره يجعل MongoDB مناسبًا تمامًا لهذه الأداة. إن بدء استخدام MongoDB أمر سهل للغاية ، وذلك بفضل التوثيق الشامل الخاص به.

يوفر Node.js ، وهو مكون آخر لا يتجزأ من MEAN ، بيئة جافا سكريبت من جانب الخادم تعتمد على الأحداث. يقوم Node.js بتشغيل Javascript باستخدام محرك V8 الخاص بـ Google Chrome. إن وعود قابلية التوسع لـ Node.js هي ما يدفع العديد من المؤسسات نحوها.

Express.js هو إطار عمل تطبيقات الويب الأكثر شيوعًا لـ Node.js. يجعل من السهل إنشاء واجهات برمجة التطبيقات أو أي نوع آخر من طبقة الأعمال من جانب الخادم لتطبيقات الويب. إنه سريع جدًا بسبب طبيعته البسيطة ، ولكنه أيضًا مرن جدًا.

AngularJS ، التي أنشأها وصيانتها عدد من مهندسي Google ، أصبحت بسرعة واحدة من أكثر أطر عمل جافا سكريبت الأمامية شيوعًا المتاحة تحت تصرفنا.

هناك سببان وراء شهرة MEAN وخيارنا لتطوير التطبيقات في techXplorers:

  • مجموعة المهارات بسيطة. المهندس الذي يفهم JavaScript جيد أن يتابع جميع الطبقات.

  • يحدث الاتصال بين الواجهة الأمامية للعمل وطبقات قاعدة البيانات من خلال كائنات JSON ، مما يوفر لنا وقتًا كبيرًا في التصميم والتطوير في طبقات مختلفة.

خاتمة

في هذا البرنامج التعليمي لخط أنابيب التجميع MongoDB ، أظهرنا طريقة فعالة من حيث التكلفة لمنح الباحثين أداة حيث يمكنهم استخدام بيانات الإنتاج كمجموعات بيانات استكشافية وتشغيل مجموعات مختلفة من التحويلات لتحليل النماذج وإنشائها منها.

تمكنا من تطوير ونشر هذا التطبيق من البداية إلى النهاية في 3 أيام فقط. تم تطوير هذا التطبيق من قبل فريق من 4 مهندسين ذوي خبرة (2 في الولايات المتحدة و 2 في الهند) ومصمم وخبير UX المستقل يساعدنا في بعض الأفكار حول تصميم الواجهة. في مرحلة ما في المستقبل ، سأخصص بعض الوقت لشرح كيفية عمل هذا المستوى من التعاون لبناء منتجات رائعة في وقت قصير بشكل لا يصدق.

نأمل أن تستفيد من خط أنابيب التجميع الخاص بـ MongoDB ، وأن تضع القوة في أيدي الباحثين الذين يمكنهم تغيير العالم من خلال تحليلهم الذكي ورؤاهم.

هذا التطبيق مباشر ليتم تشغيله هنا.