Kasutamine andmed huvitavatele küsimustele vastamiseks teadlased on hõivatud tänapäevases andmepõhises maailmas. Arvestades tohutut andmemahtu, on nende töötlemise ja analüüsimise väljakutse suur; eriti statistikute või andmeanalüütikute jaoks, kellel pole aega investeerida äriteabe platvormide õppimisse või Hadoopi ökosüsteemi, Sparki või NoSQL-i andmebaaside pakutavatesse tehnoloogiatesse, mis aitaksid neil terabaiti andmeid minutite jooksul analüüsida.
Tänapäeval on normiks, et teadlased või statistikud ehitavad oma mudelid selliste analüüsipakettide andmete alamhulkadele R , MATLAB või Oktaav ja seejärel andke valemid ja andmetöötlusetapid IT-meeskondadele, kes seejärel toodangu analüüsi lahendusi loovad.
Selle lähenemisviisi üks probleem on see, et kui teadlane mõistab midagi uut pärast oma mudeli käitamist kõigi tootmises olevate andmete suhtes, tuleb seda protsessi uuesti korrata.
Mis oleks, kui teadlane saaks töötada a MongoDB arendaja analüüsida kõiki tootmisandmeid ja kasutada seda oma uurimusliku andmekogumina, ilma et peaks õppima mingit uut tehnoloogiat või keerukaid programmeerimiskeeli või isegi SQL-i?
Kui me kasutame MongoDB's Aggregation Pipeline ja TÄHENDA tõhusalt suudame selle saavutada üsna lühikese aja jooksul. Selle artikli ja saadaoleva koodi kaudu siin selles GitHubi hoidlas , tahaksime näidata, kui lihtne on seda saavutada.
Enamik turul olevaid äriteabe tööriistu pakub teadlastele võimalusi importida tööriista NoSQL-i ja teiste Big Data tehnoloogiate andmekogumeid, seejärel tehakse teisendused ja analüüs tööriista sees. Kuid selles äriteabe õpetuses kasutame MongoDB liitmise torujuhtme jõudu, ilma et andmeid MongoDB-st välja tõmmataks, ja teadlane kasutab tootmise suurandmete süsteemis igasuguste teisenduste tegemiseks lihtsat liidest.
Lihtsamalt öeldes on MongoDB agregatsioonitorustik raamistik andmekogumi andmete teisenduste rea teostamiseks. Esimene etapp võtab sisendina kogu dokumentide kogu ja sealt edasi võtab iga järgmine etapp sisendina eelmise teisenduse tulemuste komplekti ja toodab mõne teisendatud väljundi.
Liitmistorustikus saab kasutada 10 tüüpi teisendusi:
$ geoNear: väljastab dokumendid määratud punktist kõige lähemal olevas järjekorras
$ match: filtreerib mis tahes antud avaldiste määratud sisendkirje
mida apache säde teeb
$ projekt: loob sisendväljade või arvutatud väljade alamhulgaga tulemuse
$ redact: piirab dokumentide sisu dokumendi teabe põhjal
$ lahti: võtab dokumendist massiivi välja, millel on n elementi, ja tagastab massiivi asendava väljana dokumendi, mille iga element on lisatud igale dokumendile
$ group: rühmitatakse ühe või mitme veeru järgi ja teostatakse teiste veergude liitmine
kes lõi c programmeerimiskeele
$ limiit: valib sisendikomplektidest esimesed n dokumenti (kasulik protsentiili arvutamiseks jne)
$ skip: eirab sisendkomplekti esimest n dokumenti
$ sort: sorteerib kõik sisestatud dokumendid vastavalt antud objektile
$ välja: võtab kõik eelmisest etapist tagastatud dokumendid ja kirjutab need kollektsiooni
Välja arvatud ülaltoodud loendis esimene ja viimane, ei ole reegleid nende teisenduste rakendamise järjekorra kohta. $ out-i tuleks kasutada ainult üks kord ja lõpuks, kui soovime liitmistehingu tulemuse kirjutada uude või olemasolevasse kollektsiooni. $ geoNear saab kasutada ainult torujuhtme esimese etapina.
Asjade hõlpsama mõistmise hõlbustamiseks läbige kaks andmekogumit ja kaks nende andmekogumite jaoks asjakohast küsimust.
MongoDB agregatsioonijuhtme võimsuse selgitamiseks laadisime alla andmekogumi, mis sisaldab kogu USA ülikoolide õpetajate palgateavet. Need andmed on saadaval aadressil nces.ed.gov . Meil on andmeid 7598 asutusest järgmiste väljadega:
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 }
Nende andmetega tahame välja selgitada (keskmiselt), mis vahe on dotsentide ja professorite palgal riigiti. Siis saab dotsent aru, millises seisus teda palga osas professorile lähemal hinnatakse.
Sellele küsimusele vastamiseks peab teadlane kõigepealt kogumist halvad andmed välja rookima, sest meie andmestikus on paar rida / dokumenti, kus keskmine palk on null või tühi string. Andmekogumi selle puhastamise lisamiseks lisame järgmise etapi:
{$match: {AVGSalaryProfessors: {$not: {$type: 2}}, AVGSalaryAssociateProfessors: {$not: {$type: 2}}}}
See filtreerib välja kõik üksused, millel on neis kahes väljas stringi väärtused. MongoDB-s on iga tüüp esindatud kordumatu numbriga - stringide puhul on tüübinumber 2.
See andmekogum on hea näide, sest pärismaailma andmeanalüütikas peavad insenerid sageli tegelema ka andmete puhastamisega.
Nüüd, kui meil on mõned stabiilsed andmed, võime jätkata järgmisse etappi, kus keskmistame palgad riikide kaupa:
javascripti kuupäev millisekundites
{$group: {_id: '$State', StateAVGSalaryProfessors: {$avg: '$AVGSalaryProfessors'}, StateAVGSalaryAssociateProfessors: {$avg: '$AVGSalaryAssociateProfessors'}}}
Peame lihtsalt käivitama ülaltoodud tulemuste komplekti prognoosi ja saama riigi keskmiste palkade erinevuse, nagu on näidatud allpool meie torujuhtme 3. etapis:
{$project: {_ID: 1, SalaryDifference: {$subtract: ['$StateAVGSalaryProfessors', '$StateAVGSalaryAssociateProfessors']}}}
See peaks andma meile riiklikul tasemel keskmise palgaerinevuse professorite ja dotsentide vahel kogu Ameerika Ühendriikide 7519 õppeasutuse andmekogust. Selle teabe tõlgendamise veelgi mugavamaks muutmiseks tehkem lihtne sortimine, et teaksime, millises osariigis on kõige vähem erinevusi, lisades $ sort -etapi:
{$sort: { SalaryDifference: 1}}
Sellest andmekogumist nähtub, et Idaho, Kansas ja Lääne-Virginia on kolm osariiki, kus dotsentide ja professorite palkade erinevus on kõigi teiste osariikidega võrreldes kõige väiksem.
Selle jaoks loodud täielik liitmistorustik on näidatud allpool:
[ {$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}} ]
Saadud andmekogum, mis ilmub, näeb välja selline. Teadlased saavad neid tulemusi ka CSV-sse eksportida, et sellest visualiseerimispakettide (näiteks Tableau) või lihtsate Microsoft Exceli diagrammide kaudu aru anda.
Veel üks näide, mida selles artiklis uurime, hõlmab järgmist: www.data.gov . Arvestades kõigi Ameerika Ühendriikide osariigi ja kohalike omavalitsuste organisatsioonide palgateavet, tahaksime välja selgitada iga osariigi täistööajaga ja osalise tööajaga “Financial Administration” töötajate keskmise palga.
Andmekogum on imporditud, mille tulemuseks on 1975 dokumenti, kus iga dokument järgib seda skeemi:
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'});
Vastus sellele küsimusele võib aidata finantsameti töötajal valida parim riik, kuhu kolida. Meie MongoDB agregaatori torujuhtme tööriista abil saab seda teha üsna lihtsalt:
Esimeses etapis filtreerige veerg GovernmentFunction, et loobuda kõikidest üksustest, mis pole finantshalduse üksused:
{$match:{GovernmentFunction:'Financial Administration'}}
Juhendaja järgmises etapis rühmitame üksused osariikide kaupa ja arvutame igas osariigis keskmised täis- ja osalise tööajaga palgad:
{$group: {_id: '$State', FTP_AVG: {$avg: '$FullTimePay'}, PTM_AVG: {$avg: '$PartTimePay'}}}
Lõpuks sorteerime tulemused kõrgemapalgalistest riikidest madalamapalgalistest riikidest:
{$sort: {FTP_AVG: -1, PTM_AVG: -1}}
See peaks võimaldama tööriistal luua järgmise liitmistorustiku:
[ {$match:{GovernmentFunction:'Financial Administration'}}, {$group: {_id: '$State', FTP_AVG: {$avg: '$FullTimePay'}, PTM_AVG: {$avg: '$PartTimePay'}}}, {$sort: {FTP_AVG: -1, PTM_AVG: -1}} ]
Liitmistorustiku käitamine peaks andma selliseid tulemusi:
kuidas ehitada vaarika pi 3
Selle äriteabe rakenduse loomiseks kasutasime TÄHENDA , mis on kombinatsioon MongoDB , ExpressJS , NurgaJS ja SõlmJS .
Nagu te juba teate, on MongoDB skeemita dokumentide andmebaas. Ehkki iga tema salvestatud dokument on piiratud 16 MB-ga, muudab selle paindlikkus ja jõudlus koos pakutava liitmistorustiku raamistikuga MongoDB-le selle tööriista ideaalselt sobivaks. MongoDB-ga alustamine on tänu sellele väga lihtne põhjalik dokumentatsioon .
Node.js, teine MEANi lahutamatu komponent, pakub sündmuspõhist serveripoolset Javascripti keskkonda. Node.js käitab Javascripti, kasutades Google Chrome'i V8 mootorit. Node.js mastaapsuse lubadused on see, mis juhib paljud organisatsioonid selle poole.
Express.js on Node.js-i kõige populaarsem veebirakenduste raamistik. See muudab veebirakenduste jaoks API-de või mis tahes muu serveripoolse ärikihi loomise lihtsaks. See on oma minimalistliku olemuse tõttu väga kiire, kuid on ka üsna paindlik.
AngularJS, mille on loonud ja haldavad mitmed Google'i insenerid, on kiiresti saamas üheks kõige populaarsemaks meie käsutuses olevaks esiotsa Javascripti raamistikuks.
On kaks põhjust, miks MEAN on nii populaarne ja meie valik rakenduste arendamiseks techXplorersis:
Oskuste kogum on lihtne. JavaScripti mõistval inseneril on hea minna kõikidele kihtidele.
Suhtlus kasutajaliidese ja andmebaasi vaheliste kihtide vahel toimub kõik JSON-objektide kaudu, mis säästab meil märkimisväärset aega erinevate kihtide kujundamisel ja arendamisel.
Selles MongoDB liitmise torujuhtme õpetuses oleme näidanud kulutõhusat viisi, kuidas anda teadlastele tööriist, kus nad saavad kasutada tootmisandmeid uurivad andmekogumid ja käivitada erinevaid teisenduste komplekte, et mudeleid analüüsida ja neist koostada.
Saime selle rakenduse otsast lõpuni välja töötada ja juurutada vaid 3 päeva jooksul. Selle rakenduse töötas välja 4 kogenud inseneri meeskond (2 USA-s ja 2 Indias) ja a disainer ja vabakutseline UX-i ekspert aidates meil mõelda liidese kujundamisest. Mingil hetkel tulevikus võtan aega, et selgitada, kuidas selline koostöö toimib, et ehitada vinge tooteid uskumatult lühikese aja jooksul.
Loodame, et kasutate ära MongoDB agregatsioonitorustiku eeliseid ja annate võimu oma teadlastele, kes saavad oma nutika analüüsi ja teadmistega maailma muuta.
See rakendus on reaalajas mängimiseks siin .