portaldacalheta.pt
  • หลัก
  • กระบวนการและเครื่องมือ
  • การวางแผนและการพยากรณ์
  • การออกแบบ Ui
  • การจัดการโครงการ
วิทยาศาสตร์ข้อมูลและฐานข้อมูล

แพลตฟอร์ม Business Intelligence: บทช่วยสอนการใช้ MongoDB Aggregation Pipeline



การใช้ ข้อมูลเพื่อตอบคำถามที่น่าสนใจ คือสิ่งที่นักวิจัยกำลังทำอยู่ในโลกที่ขับเคลื่อนด้วยข้อมูลในปัจจุบัน ด้วยข้อมูลจำนวนมากความท้าทายในการประมวลผลและวิเคราะห์จึงเป็นเรื่องใหญ่ โดยเฉพาะอย่างยิ่งสำหรับนักสถิติหรือนักวิเคราะห์ข้อมูลที่ไม่มีเวลาลงทุนในการเรียนรู้แพลตฟอร์มข่าวกรองธุรกิจหรือเทคโนโลยีที่จัดทำโดยฐานข้อมูล Hadoop eco-system, Spark หรือ NoSQL ซึ่งจะช่วยให้วิเคราะห์ข้อมูลจำนวนเทราไบต์ได้ภายในไม่กี่นาที

บรรทัดฐานในปัจจุบันคือสำหรับนักวิจัยหรือนักสถิติในการสร้างแบบจำลองของพวกเขาบนชุดข้อมูลย่อยในแพ็คเกจการวิเคราะห์เช่น ร , MATLAB , หรือ อ็อกเทฟ จากนั้นให้สูตรและขั้นตอนการประมวลผลข้อมูลแก่ทีมไอทีที่สร้างโซลูชันการวิเคราะห์การผลิต



ปัญหาอย่างหนึ่งของแนวทางนี้คือหากนักวิจัยตระหนักถึงสิ่งใหม่ ๆ หลังจากใช้แบบจำลองของเขากับข้อมูลทั้งหมดในการผลิตกระบวนการนี้จะต้องทำซ้ำอีกครั้ง



จะเป็นอย่างไรหากนักวิจัยสามารถทำงานกับไฟล์ นักพัฒนา MongoDB และเรียกใช้การวิเคราะห์ของเขากับข้อมูลการผลิตทั้งหมดและใช้เป็นชุดข้อมูลเชิงสำรวจโดยไม่ต้องเรียนรู้เทคโนโลยีใหม่หรือภาษาโปรแกรมที่ซับซ้อนหรือแม้แต่ SQL?



mongodb และระบบธุรกิจอัจฉริยะ

ถ้าเราใช้ MongoDB’s Aggregation Pipeline และ หมายถึง อย่างมีประสิทธิภาพเราสามารถบรรลุเป้าหมายนี้ได้ในเวลาอันสั้น ผ่านบทความนี้และรหัสที่มีอยู่ ที่นี่ในที่เก็บ GitHub นี้ เราอยากจะแสดงให้เห็นว่ามันง่ายแค่ไหนในการบรรลุเป้าหมายนี้



เครื่องมือ Business Intelligence ส่วนใหญ่ที่มีอยู่ในตลาดกำลังให้วิธีสำหรับนักวิจัยในการนำเข้าชุดข้อมูลจาก NoSQL และเทคโนโลยี Big Data อื่น ๆ ไปยังเครื่องมือจากนั้นการแปลงและการวิเคราะห์จะดำเนินการภายในเครื่องมือ แต่ในบทช่วยสอนระบบธุรกิจอัจฉริยะนี้เรากำลังใช้พลังของ MongoDB Aggregation Pipeline โดยไม่ดึงข้อมูลออกจาก MongoDB และผู้วิจัยกำลังใช้อินเทอร์เฟซที่เรียบง่ายเพื่อทำการเปลี่ยนแปลงทุกรูปแบบในระบบข้อมูลขนาดใหญ่สำหรับการผลิต

MongoDB Aggregation Pipeline สำหรับ Business Intelligence

พูดง่ายๆก็คือไปป์ไลน์การรวมของ MongoDB เป็นกรอบในการดำเนินการแปลงข้อมูลชุดหนึ่งบนชุดข้อมูล ขั้นตอนแรกจะใช้คอลเล็กชันเอกสารทั้งหมดเป็นอินพุตและจากนั้นในแต่ละขั้นตอนต่อมาจะใช้ชุดผลลัพธ์ของการแปลงก่อนหน้านี้เป็นอินพุตและสร้างเอาต์พุตที่แปลงแล้ว



การแปลงมี 10 ประเภทที่สามารถใช้ในท่อรวม:

  • $ geoNear: แสดงเอกสารตามลำดับที่ใกล้ที่สุดถึงไกลที่สุดจากจุดที่ระบุ



  • $ match: กรองบันทึกการป้อนข้อมูลที่กำหนดโดยนิพจน์ที่กำหนด

  • $ project: สร้างชุดผลลัพธ์ที่มีฟิลด์อินพุตย่อยหรือฟิลด์ที่คำนวณ



  • $ redact: จำกัด เนื้อหาของเอกสารตามข้อมูลจากเอกสาร

  • $ คลี่คลาย: ใช้ฟิลด์อาร์เรย์ที่มีองค์ประกอบ n จากเอกสารและส่งคืนเอกสาร n พร้อมกับแต่ละองค์ประกอบที่เพิ่มลงในเอกสารแต่ละฉบับเป็นฟิลด์แทนที่อาร์เรย์นั้น



  • $ group: จัดกลุ่มตามคอลัมน์อย่างน้อยหนึ่งคอลัมน์และทำการรวมในคอลัมน์อื่น ๆ

  • $ limit: เลือก n เอกสารแรกจากชุดอินพุต (มีประโยชน์สำหรับการคำนวณเปอร์เซ็นไทล์ ฯลฯ )

    วอร์เรน บัฟเฟตต์ลงทุนอย่างไร
  • $ skip: ละเว้น n เอกสารแรกจากชุดอินพุต

  • $ sort: จัดเรียงเอกสารอินพุตทั้งหมดตามวัตถุที่กำหนด

  • $ out: นำเอกสารทั้งหมดที่ส่งคืนจากขั้นตอนก่อนหน้าและเขียนลงในคอลเลกชัน

ยกเว้นรายการแรกและรายการสุดท้ายในรายการด้านบนไม่มีกฎเกี่ยวกับลำดับที่อาจนำการเปลี่ยนแปลงเหล่านี้ไปใช้ ควรใช้ $ out เพียงครั้งเดียวและในตอนท้ายหากเราต้องการเขียนผลลัพธ์ของไปป์ไลน์การรวมไปยังคอลเล็กชันใหม่หรือที่มีอยู่ $ geoNear สามารถใช้เป็นขั้นตอนแรกของไปป์ไลน์เท่านั้น

เพื่อให้เข้าใจง่ายขึ้นให้เราพิจารณาชุดข้อมูลสองชุดและคำถาม 2 ข้อที่เกี่ยวข้องกับชุดข้อมูลเหล่านี้

ความแตกต่างในเงินเดือนตามการกำหนด

เพื่ออธิบายถึงพลังของกระบวนการรวมของ 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 stage:

{$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 dataset ตัวอย่าง

ค่าจ้างเฉลี่ยตามประเภทการจ้างงาน

อีกตัวอย่างหนึ่งที่เราจะสำรวจในบทความนี้เกี่ยวข้องกับชุดข้อมูลที่ได้รับจาก 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 ของเราสิ่งนี้สามารถทำได้ค่อนข้างง่าย:

ในขั้นแรกกรองคอลัมน์ GovernmentFunction เพื่อละทิ้งเอนทิตีที่ไม่ใช่ 'การบริหารการเงิน' ทั้งหมด:

{$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

การก่อสร้างตึก

ในการสร้างแอปพลิเคชันระบบธุรกิจอัจฉริยะนี้เราใช้ หมายถึง ซึ่งเป็นการรวมกันของ MongoDB , ExpressJS , AngularJS และ NodeJS .

หมายถึงระบบธุรกิจอัจฉริยะ

ดังที่คุณทราบอยู่แล้ว MongoDB เป็นฐานข้อมูลเอกสารที่ไม่มีสคีมา แม้ว่าเอกสารแต่ละฉบับที่จัดเก็บจะมีขนาด จำกัด ที่ 16MB แต่ความยืดหยุ่นและประสิทธิภาพพร้อมกับเฟรมเวิร์กไปป์ไลน์การรวมที่มีให้ทำให้ MongoDB เหมาะอย่างยิ่งสำหรับเครื่องมือนี้ การเริ่มต้นกับ MongoDB นั้นง่ายมากต้องขอบคุณ เอกสารที่ครอบคลุม .

Node.js ซึ่งเป็นส่วนประกอบสำคัญอีกอย่างหนึ่งของ MEAN จัดเตรียมสภาพแวดล้อม Javascript ฝั่งเซิร์ฟเวอร์ที่ขับเคลื่อนด้วยเหตุการณ์ Node.js เรียกใช้ Javascript โดยใช้เครื่องยนต์ V8 ของ Google Chrome ความสามารถในการปรับขยายสัญญาของ Node.js คือสิ่งที่ขับเคลื่อน หลายองค์กร ต่อมัน

Express.js เป็นเฟรมเวิร์กเว็บแอปพลิเคชันยอดนิยมสำหรับ Node.js ทำให้ง่ายต่อการสร้าง API หรือชั้นธุรกิจฝั่งเซิร์ฟเวอร์อื่น ๆ สำหรับเว็บแอปพลิเคชัน มันเร็วมากเนื่องจากมีลักษณะเรียบง่าย แต่ก็ค่อนข้างยืดหยุ่น

AngularJS ซึ่งสร้างและดูแลโดยวิศวกรของ Google จำนวนมากกำลังกลายเป็นหนึ่งในเฟรมเวิร์ก Javascript ที่ได้รับความนิยมมากที่สุดในการจำหน่ายของเรา

มีสองเหตุผลที่ MEAN เป็นที่นิยมและทางเลือกของเราในการพัฒนาแอปพลิเคชันที่ techXplorers:

  • ชุดทักษะเป็นเรื่องง่าย วิศวกรที่เข้าใจ JavaScript เป็นสิ่งที่ดีที่จะทำงานในทุกเลเยอร์

  • การสื่อสารระหว่างฟรอนต์เอนด์กับธุรกิจกับเลเยอร์ฐานข้อมูลล้วนเกิดขึ้นผ่านอ็อบเจ็กต์ JSON ซึ่งช่วยให้เราประหยัดเวลาอย่างมากในการออกแบบและพัฒนาในเลเยอร์ต่างๆ

สรุป

ในบทช่วยสอนไปป์ไลน์การรวม MongoDB นี้เราได้แสดงให้เห็นถึงวิธีที่คุ้มค่าในการให้เครื่องมือแก่นักวิจัยที่พวกเขาสามารถใช้ข้อมูลการผลิตเป็น ชุดข้อมูลการสำรวจ และเรียกใช้การแปลงชุดต่างๆเพื่อวิเคราะห์และสร้างแบบจำลอง

เราสามารถพัฒนาและปรับใช้แอปพลิเคชันนี้แบบ end-to-end ได้ในเวลาเพียง 3 วัน แอปพลิเคชันนี้ได้รับการพัฒนาโดยทีมวิศวกรที่มีประสบการณ์ 4 คน (2 คนในสหรัฐอเมริกาและ 2 คนในอินเดีย) และก นักออกแบบและผู้เชี่ยวชาญด้าน UX อิสระ ช่วยเราคิดเกี่ยวกับการออกแบบอินเทอร์เฟซ ในอนาคตฉันจะใช้เวลาอธิบายวิธีการทำงานร่วมกันในระดับนี้เพื่อสร้างผลิตภัณฑ์ที่ยอดเยี่ยมในเวลาอันสั้นอย่างไม่น่าเชื่อ

เราหวังว่าคุณจะใช้ประโยชน์จาก Aggregation Pipeline ของ MongoDB และมอบอำนาจให้กับนักวิจัยของคุณที่สามารถเปลี่ยนแปลงโลกได้ด้วยการวิเคราะห์และข้อมูลเชิงลึกที่ชาญฉลาด

แอปพลิเคชั่นนี้พร้อมให้เล่นด้วย ที่นี่ .

วิธีออกแบบประสบการณ์ที่ยอดเยี่ยมสำหรับอินเทอร์เน็ตในทุกสิ่ง

การออกแบบ Ux

วิธีออกแบบประสบการณ์ที่ยอดเยี่ยมสำหรับอินเทอร์เน็ตในทุกสิ่ง
ศิลปะแห่งการระดมทุน Pitch Deck

ศิลปะแห่งการระดมทุน Pitch Deck

นักลงทุนและเงินทุน

โพสต์ยอดนิยม
Buggy CakePHP Code: 6 ข้อผิดพลาดที่พบบ่อยที่สุดนักพัฒนา CakePHP ทำ
Buggy CakePHP Code: 6 ข้อผิดพลาดที่พบบ่อยที่สุดนักพัฒนา CakePHP ทำ
รีวิว CakePHP 3 ของฉัน - ยังสดยังร้อน
รีวิว CakePHP 3 ของฉัน - ยังสดยังร้อน
ภาพรวมของตัวสร้างไซต์คงที่ยอดนิยม
ภาพรวมของตัวสร้างไซต์คงที่ยอดนิยม
นักพัฒนาชาวโบลิเวีย Yasett Acurana ได้รับทุนการศึกษา ApeeScape ครั้งที่หก
นักพัฒนาชาวโบลิเวีย Yasett Acurana ได้รับทุนการศึกษา ApeeScape ครั้งที่หก
การเขียนโปรแกรมจำนวนเต็มผสม: คู่มือสำหรับการตัดสินใจเชิงคำนวณ
การเขียนโปรแกรมจำนวนเต็มผสม: คู่มือสำหรับการตัดสินใจเชิงคำนวณ
 
แนวโน้มอีคอมเมิร์ซที่โดดเด่นและอิทธิพลต่อการออกแบบ (พร้อมอินโฟกราฟิก)
แนวโน้มอีคอมเมิร์ซที่โดดเด่นและอิทธิพลต่อการออกแบบ (พร้อมอินโฟกราฟิก)
การสำรวจเครื่องมือการทำแผนที่ออนไลน์ที่ดีที่สุดสำหรับนักพัฒนาเว็บ: Roadmap to Roadmaps
การสำรวจเครื่องมือการทำแผนที่ออนไลน์ที่ดีที่สุดสำหรับนักพัฒนาเว็บ: Roadmap to Roadmaps
GraphQL กับ REST - บทช่วยสอน GraphQL
GraphQL กับ REST - บทช่วยสอน GraphQL
ปรับปรุงการแปลงค่าเฉลี่ยเชิงปริมาณเฉลี่ยต่อเนื่อง
ปรับปรุงการแปลงค่าเฉลี่ยเชิงปริมาณเฉลี่ยต่อเนื่อง
ข้อมูลขนาดใหญ่: ใบสั่งยาสำหรับสภาพการวิจัยและพัฒนาเภสัชกรรม
ข้อมูลขนาดใหญ่: ใบสั่งยาสำหรับสภาพการวิจัยและพัฒนาเภสัชกรรม
โพสต์ยอดนิยม
  • สถาปนิกโซลูชันที่ผ่านการรับรองจาก aws - การสอบรอง
  • asp net web api กวดวิชา
  • s corp vs c corp สำหรับธุรกิจขนาดเล็ก
  • วิธีการกำหนดราคาตัวเลือก
  • โมเดลธุรกิจลิฟต์ vs อูเบอร์
หมวดหมู่
  • กระบวนการและเครื่องมือ
  • การวางแผนและการพยากรณ์
  • การออกแบบ Ui
  • การจัดการโครงการ
  • © 2022 | สงวนลิขสิทธิ์

    portaldacalheta.pt