Platform Intelijen Bisnis: Tutorial Menggunakan Pipa Agregasi MongoDB
Diterbitkan: 2022-03-11Menggunakan data untuk menjawab pertanyaan menarik adalah apa yang sedang dilakukan para peneliti di dunia yang didorong oleh data saat ini. Mengingat volume data yang sangat besar, tantangan untuk memproses dan menganalisisnya sangat besar; khususnya untuk ahli statistik atau analis data yang tidak memiliki waktu untuk berinvestasi dalam mempelajari platform atau teknologi intelijen bisnis yang disediakan oleh ekosistem Hadoop, Spark, atau database NoSQL yang akan membantu mereka menganalisis terabyte data dalam hitungan menit.
Norma saat ini adalah bagi peneliti atau ahli statistik untuk membangun model mereka pada subset data dalam paket analitik seperti R, MATLAB, atau Oktaf, dan kemudian memberikan formula dan langkah pemrosesan data kepada tim TI yang kemudian membangun solusi analitik produksi.
Satu masalah dengan pendekatan ini adalah jika peneliti menyadari sesuatu yang baru setelah menjalankan modelnya pada semua data dalam produksi, prosesnya harus diulangi lagi.
Bagaimana jika peneliti dapat bekerja dengan pengembang MongoDB dan menjalankan analisisnya pada semua data produksi dan menggunakannya sebagai kumpulan data eksplorasinya, tanpa harus mempelajari teknologi baru atau bahasa pemrograman yang rumit, atau bahkan SQL?
Jika kita menggunakan Aggregation Pipeline dan MEAN MongoDB secara efektif, kita dapat mencapainya dalam waktu yang cukup singkat. Melalui artikel ini dan kode yang tersedia di sini di repositori GitHub ini, kami ingin menunjukkan betapa mudahnya untuk mencapai hal ini.
Sebagian besar alat Business Intelligence yang ada di pasar menyediakan cara bagi peneliti untuk mengimpor kumpulan data dari NoSQL dan teknologi Big Data lainnya ke dalam alat, kemudian transformasi dan analisis dilakukan di dalam alat. Namun dalam tutorial intelijen bisnis ini kami menggunakan kekuatan Pipa Agregasi MongoDB tanpa menarik data dari MongoDB, dan peneliti menggunakan antarmuka sederhana untuk melakukan semua jenis transformasi pada sistem produksi data besar.
Pipa Agregasi MongoDB untuk Intelijen Bisnis
Sederhananya, pipa agregasi MongoDB adalah kerangka kerja untuk melakukan serangkaian transformasi data pada kumpulan data. Tahap pertama mengambil seluruh kumpulan dokumen sebagai input, dan sejak saat itu pada setiap tahap berikutnya mengambil set hasil transformasi sebelumnya sebagai input dan menghasilkan beberapa output yang diubah.
Ada 10 jenis transformasi yang dapat digunakan dalam pipa agregasi:
$geoNear: mengeluarkan dokumen dalam urutan terdekat hingga terjauh dari titik tertentu
$match: memfilter catatan input yang ditetapkan oleh ekspresi apa pun
$project: membuat kumpulan hasil dengan subset bidang input atau bidang yang dihitung
$redact: membatasi isi dokumen berdasarkan informasi dari dokumen
$unwind: mengambil bidang array dengan n elemen dari dokumen dan mengembalikan n dokumen dengan setiap elemen ditambahkan ke setiap dokumen sebagai bidang yang menggantikan array itu
$group: mengelompokkan menurut satu atau lebih kolom dan melakukan agregasi pada kolom lain
$limit: mengambil n dokumen pertama dari set input (berguna untuk perhitungan persentil, dll.)
$skip: mengabaikan n dokumen pertama dari set input
$sort: mengurutkan semua dokumen input sesuai objek yang diberikan
$out: mengambil semua dokumen yang dikembalikan dari tahap sebelumnya dan menulisnya ke koleksi
Kecuali untuk yang pertama dan terakhir dalam daftar di atas, tidak ada aturan tentang urutan penerapan transformasi ini. $out harus digunakan hanya sekali, dan pada akhirnya, jika kita ingin menulis hasil dari pipa agregasi ke koleksi baru atau yang sudah ada. $geoNear hanya dapat digunakan sebagai tahap pertama dari pipeline.
Untuk mempermudah pemahaman, mari kita telusuri dua kumpulan data dan dua pertanyaan yang relevan dengan kumpulan data ini.
Perbedaan Gaji Berdasarkan Penunjukan
Untuk menjelaskan kekuatan jalur agregasi MongoDB, kami telah mengunduh kumpulan data yang memiliki informasi gaji staf pengajar universitas untuk seluruh AS. Data ini tersedia di nces.ed.gov. Kami memiliki data dari 7598 institusi dengan bidang sebagai berikut:
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 }
Dengan data ini kami ingin mengetahui (rata-rata) apa perbedaan antara gaji profesor dan profesor menurut negara bagian. Kemudian, seorang profesor dapat menyadari di negara bagian mana dia dihargai lebih dekat dengan seorang profesor dalam hal gaji.
Untuk menjawab pertanyaan ini, seorang peneliti pertama-tama perlu menyingkirkan data buruk dari koleksi, karena ada beberapa baris/dokumen dalam dataset kami di mana gaji rata-rata adalah string kosong atau nol. Untuk menyelesaikan pembersihan dataset ini, kami akan menambahkan tahap berikut:
{$match: {AVGSalaryProfessors: {$not: {$type: 2}}, AVGSalaryAssociateProfessors: {$not: {$type: 2}}}}
Ini akan menyaring semua entitas yang memiliki nilai string di kedua bidang tersebut. Di MongoDB, setiap jenis diwakili dengan nomor unik - untuk string, nomor jenisnya adalah 2.
Kumpulan data ini adalah contoh yang baik karena dalam analitik data dunia nyata, para insinyur sering kali harus berurusan dengan pembersihan data juga.
Sekarang setelah kami memiliki beberapa data yang stabil, kami dapat melanjutkan ke tahap berikutnya di mana kami akan menghitung rata-rata gaji berdasarkan negara bagian:
{$group: {_id: "$State", StateAVGSalaryProfessors: {$avg: "$AVGSalaryProfessors"}, StateAVGSalaryAssociateProfessors: {$avg: "$AVGSalaryAssociateProfessors"}}}
Kami hanya perlu menjalankan proyeksi dari kumpulan hasil di atas dan mendapatkan perbedaan gaji rata-rata negara bagian, seperti yang ditunjukkan di bawah ini pada Tahap 3 dari saluran kami:
{$project: {_ID: 1, SalaryDifference: {$subtract: ["$StateAVGSalaryProfessors", "$StateAVGSalaryAssociateProfessors"]}}}
Ini akan memberi kita perbedaan gaji rata-rata tingkat negara bagian antara profesor dan profesor asosiasi dari kumpulan data 7519 institusi pendidikan di seluruh AS. Untuk membuatnya lebih nyaman untuk menginterpretasikan informasi ini, mari kita lakukan pengurutan sederhana sehingga kita tahu negara bagian mana yang memiliki perbedaan paling kecil dengan menambahkan tahap $sort:

{$sort: { SalaryDifference: 1}}
Dari dataset ini, terlihat bahwa Idaho, Kansas, dan West Virginia adalah tiga negara bagian di mana perbedaan gaji associate professor dan professor paling kecil dibandingkan dengan semua negara bagian lainnya.
Pipa agregasi penuh yang dihasilkan untuk ini ditunjukkan di bawah ini:
[ {$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}} ]
Dataset yang dihasilkan yang muncul terlihat seperti ini. Peneliti juga dapat mengekspor hasil ini ke CSV untuk melaporkannya menggunakan paket visualisasi seperti Tableau, atau melalui grafik Microsoft Excel sederhana.
Gaji Rata-Rata Berdasarkan Jenis Pekerjaan
Contoh lain yang akan kita jelajahi dalam artikel ini melibatkan kumpulan data yang diperoleh dari www.data.gov. Mengingat informasi penggajian dari semua organisasi pemerintah negara bagian dan lokal di Amerika Serikat, kami ingin mengetahui gaji rata-rata karyawan "Administrasi Keuangan" penuh waktu dan paruh waktu di setiap negara bagian.
Kumpulan data telah diimpor, menghasilkan dokumen tahun 1975 di mana setiap dokumen mengikuti skema ini:
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'});
Jawaban atas pertanyaan ini dapat membantu seorang pegawai Administrasi Keuangan untuk memilih negara bagian terbaik untuk pindah. Dengan alat berbasis pipa agregator MongoDB kami, ini dapat dilakukan dengan cukup mudah:
Pada tahap pertama, filter pada kolom GovernmentFunction untuk membuang semua entitas non-”Administrasi Keuangan”:
{$match:{GovernmentFunction:'Financial Administration'}}
Pada tahap tutorial selanjutnya, kita akan mengelompokkan entitas berdasarkan negara bagian dan menghitung rata-rata gaji penuh waktu dan paruh waktu di setiap negara bagian:
{$group: {_id: '$State', FTP_AVG: {$avg: '$FullTimePay'}, PTM_AVG: {$avg: '$PartTimePay'}}}
Terakhir, kami akan mengurutkan hasil dari negara bagian yang membayar lebih tinggi ke negara bagian yang membayar lebih rendah:
{$sort: {FTP_AVG: -1, PTM_AVG: -1}}
Ini akan memungkinkan alat untuk menghasilkan pipa agregasi berikut:
[ {$match:{GovernmentFunction:'Financial Administration'}}, {$group: {_id: '$State', FTP_AVG: {$avg: '$FullTimePay'}, PTM_AVG: {$avg: '$PartTimePay'}}}, {$sort: {FTP_AVG: -1, PTM_AVG: -1}} ]
Menjalankan pipa agregasi akan menghasilkan beberapa hasil seperti ini:
Blok bangunan
Untuk membangun aplikasi business intelligence ini kami menggunakan MEAN yang merupakan gabungan dari MongoDB, ExpressJS, AngularJS, dan NodeJS.
Seperti yang mungkin sudah Anda ketahui, MongoDB adalah database dokumen tanpa skema. Meskipun setiap dokumen yang disimpan terbatas pada ukuran 16MB, fleksibilitas dan kinerjanya bersama dengan kerangka kerja pipa agregasi yang disediakannya membuat MongoDB sangat cocok untuk alat ini. Memulai dengan MongoDB sangat mudah, berkat dokumentasinya yang komprehensif.
Node.js, komponen integral lain dari MEAN, menyediakan lingkungan Javascript sisi server yang digerakkan oleh peristiwa. Node.js menjalankan Javascript menggunakan mesin V8 Google Chrome. Janji skalabilitas Node.js adalah yang mendorong banyak organisasi ke arah itu.
Express.js adalah kerangka aplikasi web paling populer untuk Node.js. Itu memudahkan untuk membangun API atau jenis lain dari lapisan bisnis sisi server untuk aplikasi web. Ini sangat cepat karena sifatnya yang minimalis, tetapi juga cukup fleksibel.
AngularJS, dibuat dan dikelola oleh sejumlah insinyur Google, dengan cepat menjadi salah satu kerangka kerja Javascript front-end paling populer yang tersedia untuk kami.
Ada dua alasan mengapa MEAN begitu populer dan pilihan kami untuk pengembangan aplikasi di techXplorers:
Skillsetnya sederhana. Seorang insinyur yang memahami JavaScript baik untuk bekerja di semua lapisan.
Komunikasi antara front-end ke bisnis ke lapisan basis data semuanya terjadi melalui objek JSON, yang menghemat waktu kita secara signifikan dalam desain dan pengembangan pada lapisan yang berbeda.
Kesimpulan
Dalam tutorial saluran agregasi MongoDB ini, kami telah menunjukkan cara yang hemat biaya untuk memberi peneliti alat di mana mereka dapat menggunakan data produksi sebagai kumpulan data eksplorasi dan menjalankan berbagai rangkaian transformasi untuk menganalisis dan membangun model.
Kami dapat mengembangkan dan menerapkan aplikasi ini secara menyeluruh hanya dalam 3 hari. Aplikasi ini dikembangkan oleh tim yang terdiri dari 4 insinyur berpengalaman (2 di AS dan 2 di India) dan seorang desainer dan pakar UX lepas yang membantu kami dengan beberapa pemikiran tentang desain antarmuka. Di beberapa titik di masa depan, saya akan meluangkan waktu untuk menjelaskan bagaimana tingkat kolaborasi ini bekerja untuk membangun produk yang luar biasa dalam waktu yang sangat singkat.
Kami harap Anda memanfaatkan Agregasi Pipeline MongoDB, dan memberikan kekuatan di tangan peneliti Anda yang dapat mengubah dunia dengan analisis dan wawasan cerdas mereka.
Aplikasi ini hidup untuk dimainkan di sini.