Käyttämällä tietoja mielenkiintoisiin kysymyksiin vastaamiseksi tutkijat ovat kiireisiä tekemällä nykypäivän datavetoisessa maailmassa. Kun otetaan huomioon valtavat tietomäärät, niiden käsittelyn ja analysoinnin haaste on suuri; varsinkin tilastotieteilijöille tai data-analyytikoille, joilla ei ole aikaa investoida Hadoopin ekosysteemi-, Spark- tai NoSQL-tietokantojen tarjoamiin liiketoimintatietoalustojen tai -tekniikoiden oppimiseen, mikä auttaisi heitä analysoimaan teratavua tietoa muutamassa minuutissa.
Nykypäivän normi on, että tutkijat tai tilastotieteilijät rakentavat mallinsa sellaisten analyysipakettien tietoihin R , MATLAB tai Oktaavi ja anna sitten kaavat ja tietojenkäsittelyvaiheet IT-ryhmille, jotka sitten rakentavat tuotannon analyysiratkaisuja.
Yksi lähestymistavan ongelma on, että jos tutkija ymmärtää jotain uutta saatuaan mallinsa käytetyksi kaikilla tuotannossa olevilla tiedoilla, prosessi on toistettava uudelleen.
Entä jos tutkija voisi työskennellä a MongoDB-kehittäjä ja suorittaa analyysin kaikista tuotantotiedoista ja käyttää sitä tutkimustietojoukkona tarvitsematta oppia uutta tekniikkaa tai monimutkaisia ohjelmointikieliä tai edes SQL: ää?
Jos käytämme MongoDB: n aggregaatioputkisto ja TARKOITTAA tehokkaasti voimme saavuttaa tämän kohtuullisen lyhyessä ajassa. Tämän artikkelin ja käytettävissä olevan koodin kautta täällä tässä GitHub-arkistossa , haluaisimme osoittaa, kuinka helppoa on saavuttaa tämä.
Suurin osa markkinoilla olevista Business Intelligence -työkaluista tarjoaa tutkijoille tapoja tuoda tietojoukkoja NoSQL: stä ja muista Big Data -tekniikoista työkaluun, sitten muunnokset ja analyysit tehdään työkalun sisällä. Mutta tässä liiketalouden opetusohjelmassa käytämme MongoDB-aggregaatioputken voimaa vetämättä tietoja MongoDB: stä, ja tutkija käyttää yksinkertaista käyttöliittymää kaikenlaisten muunnosten tekemiseen tuotannon big data -järjestelmässä.
Yksinkertaisesti sanottuna MongoDB: n aggregaatioputki on kehys joukon tietojen muunnoksia varten tietojoukolle. Ensimmäisessä vaiheessa koko asiakirjakokoelma syötetään, ja siitä lähtien jokainen seuraava vaihe ottaa edellisen muunnoksen tulosjoukon syötteeksi ja tuottaa muutetun muunnoksen.
Koontiputkistossa voidaan käyttää 10 muunnostyyppiä:
$ geoNear: tulostaa asiakirjat lähimpänä tietystä pisteestä kauimpana
$ match: suodattaa minkä tahansa lausekkeen asettaman syötetietueen
$ project: luo tulosjoukon, jossa on syötekenttien tai laskettujen kenttien osajoukko
$ redact: rajoittaa asiakirjojen sisältöä asiakirjan tietojen perusteella
$ untind: ottaa matriisikentän, jossa on n elementtiä dokumentista, ja palauttaa n asiakirjaa, joiden jokainen elementti lisätään kuhunkin asiakirjaan kenttänä, joka korvaa taulukon
$ group: ryhmittelee yhden tai useamman sarakkeen mukaan ja suorittaa aggregaatit muille sarakkeille
$ raja: poimii ensimmäiset n asiakirjaa syötesarjoista (hyödyllinen prosenttipisteiden laskennassa jne.)
$ skip: ohittaa ensimmäiset n asiakirjaa syöteryhmästä
$ sort: lajittelee kaikki syöttöasiakirjat annetun objektin mukaan
$ out: vie kaikki edellisestä vaiheesta palautetut asiakirjat ja kirjoittaa ne kokoelmaan
Edellä olevan luettelon ensimmäistä ja viimeistä lukuun ottamatta ei ole sääntöjä siitä, missä järjestyksessä näitä muunnoksia voidaan soveltaa. $ outia tulisi käyttää vain kerran ja lopussa, jos haluamme kirjoittaa yhdistämisputken tuloksen uuteen tai olemassa olevaan kokoelmaan. $ geoNearia voidaan käyttää vain putkilinjan ensimmäisenä vaiheena.
Jotta asiat olisivat helpommin ymmärrettäviä, käydään läpi kaksi tietoaineistoa ja kaksi näihin aineistoihin liittyvää kysymystä.
Selitämme MongoDB: n aggregaatioputken voimaa, olemme ladanneet tietojoukon, joka sisältää yliopistojen opetushenkilöstön palkkatiedot koko Yhdysvalloissa. Nämä tiedot ovat saatavilla osoitteessa nces.ed.gov . Meillä on tietoja 7598 laitoksesta seuraavilla kentillä:
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 }
Näillä tiedoilla haluamme selvittää (keskimäärin) mitä eroa on dosenttien ja professoreiden palkoissa valtioittain. Sitten apulaisprofessori voi ymmärtää, missä tilassa häntä arvostetaan lähempänä professoria palkan suhteen.
Tähän kysymykseen vastaamiseksi tutkijan on ensin karsittava huonoja tietoja kokoelmasta, koska tietojoukossa on muutama rivi / asiakirja, joissa keskimääräinen palkka on tyhjä tai tyhjä merkkijono. Tämän tietojoukon puhdistamisen suorittamiseksi lisäämme seuraavan vaiheen:
{$match: {AVGSalaryProfessors: {$not: {$type: 2}}, AVGSalaryAssociateProfessors: {$not: {$type: 2}}}}
Tämä suodattaa kaikki entiteetit, joilla on merkkijonoarvot näissä kahdessa kentässä. MongoDB: ssä kukin tyyppi on edustettu yksilöllisellä numerolla - jousille tyypin numero on 2.
Tämä tietojoukko on hyvä esimerkki, koska reaalimaailman data-analytiikassa insinöörien on usein käsiteltävä myös tietojen puhdistamista.
Nyt kun meillä on vakaita tietoja, voimme jatkaa seuraavaan vaiheeseen, jossa keskitämme palkat valtioittain:
{$group: {_id: '$State', StateAVGSalaryProfessors: {$avg: '$AVGSalaryProfessors'}, StateAVGSalaryAssociateProfessors: {$avg: '$AVGSalaryAssociateProfessors'}}}
Meidän on vain suoritettava ennuste yllä olevasta tulosjoukosta ja saatava ero valtion keskimääräisissä palkoissa, kuten alla olevassa vaiheessa 3 esitetään:
{$project: {_ID: 1, SalaryDifference: {$subtract: ['$StateAVGSalaryProfessors', '$StateAVGSalaryAssociateProfessors']}}}
Tämän pitäisi antaa meille valtion tasolla keskimääräinen palkkaero professoreiden ja apulaisprofessoreiden välillä 7519 oppilaitoksen koko joukosta kaikkialla Yhdysvalloissa. Jotta näiden tietojen tulkitseminen olisi vieläkin helpompaa, tehkäämme yksinkertainen lajittelu, jotta tiedämme, missä osavaltiossa on vähiten eroa lisäämällä $ sort -vaihe:
{$sort: { SalaryDifference: 1}}
Tästä aineistosta on ilmeistä, että Idaho, Kansas ja Länsi-Virginia ovat kolme osavaltiota, joissa dosenttien ja professoreiden palkkojen ero on vähiten verrattuna kaikkiin muihin osavaltioihin.
Tätä varten muodostettu koko aggregaattiputki on esitetty alla:
[ {$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}} ]
Tuloksena oleva tietojoukko näyttää tältä. Tutkijat voivat myös viedä nämä tulokset CSV: hen raportoidakseen siitä visualisointipaketeilla, kuten Tableau, tai yksinkertaisten Microsoft Excel -kaavioiden avulla.
Toinen esimerkki, jota tutkimme tässä artikkelissa, sisältää tietojoukon, josta on saatu www.data.gov . Kun otetaan huomioon kaikkien Yhdysvaltojen osavaltioiden ja paikallishallinnon organisaatioiden palkkatiedot, haluaisimme selvittää kunkin osavaltion kokopäiväisten ja osa-aikaisten 'Financial Administration' -henkilöiden keskimääräisen palkan.
Tietojoukko on tuotu, jolloin on saatu 1975 asiakirjaa, joissa jokainen asiakirja noudattaa tätä mallia:
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'});
Vastaus tähän kysymykseen voi auttaa taloushallinnon työntekijää valitsemaan parhaan valtion, johon siirtyä. MongoDB-aggregaattoriputkipohjaisen työkalun avulla tämä voidaan tehdä melko helposti:
Suodata ensimmäisessä vaiheessa GovernmentFunction -sarakkeessa, jos haluat hylätä kaikki muut kuin ”taloushallinnon” yksiköt:
{$match:{GovernmentFunction:'Financial Administration'}}
Opetusohjelman seuraavassa vaiheessa ryhmittelemme yksiköt valtioittain ja laskemme keskimääräiset kokopäiväiset ja osa-aikaiset palkat jokaisessa osavaltiossa:
{$group: {_id: '$State', FTP_AVG: {$avg: '$FullTimePay'}, PTM_AVG: {$avg: '$PartTimePay'}}}
Lopuksi lajittelemme tulokset paremmin maksavista valtioista alhaisempiin valtioihin:
{$sort: {FTP_AVG: -1, PTM_AVG: -1}}
Tämän pitäisi antaa työkalun luoda seuraava yhdistämisputki:
[ {$match:{GovernmentFunction:'Financial Administration'}}, {$group: {_id: '$State', FTP_AVG: {$avg: '$FullTimePay'}, PTM_AVG: {$avg: '$PartTimePay'}}}, {$sort: {FTP_AVG: -1, PTM_AVG: -1}} ]
Koontiputken suorittamisen pitäisi tuottaa joitain tuloksia:
Rakensimme tämän liiketoimintatiedon sovelluksen, jota käytimme TARKOITTAA , joka on yhdistelmä MongoDB , ExpressJS , KulmaJS ja SolmuJS .
Kuten ehkä jo tiedät, MongoDB on skeematon asiakirjatietokanta. Vaikka jokainen sen tallentama asiakirja on kooltaan rajoitettu 16 Mt: iin, sen joustavuus ja suorituskyky yhdessä sen tarjoaman aggregaatioputken kehyksen kanssa tekevät MongoDB: stä täydellisen sopivan tähän työkaluun. MongoDB: n käytön aloittaminen on erittäin helppoa sen ansiosta kattava dokumentaatio .
Node.js, toinen kiinteä osa MEAN: ää, tarjoaa tapahtumavetoisen palvelinpuolen Javascript-ympäristön. Node.js käyttää Javascriptiä Google Chromen V8-moottorilla. Node.js: n skaalautuvuuslupaukset ajavat monet järjestöt kohti sitä.
Express.js on Node.js: n suosituin verkkosovelluskehys. Sen avulla on helppo rakentaa sovellusliittymiä tai muita palvelinpuolen yrityskerroksia verkkosovelluksia varten. Se on erittäin nopea minimalistisen luonteensa vuoksi, mutta on myös melko joustava.
Useiden Googlen insinöörien luomasta ja ylläpitämästä AngularJS: stä on nopeasti tulossa yksi suosituimmista käytettävissä olevista käyttöliittymän Javascript-kehyksistä.
On kaksi syytä, miksi MEAN on niin suosittu, ja valintamme sovelluskehitykseen techXplorersilla:
Taitopaketti on yksinkertainen. Insinööri, joka ymmärtää JavaScriptin, on hyvä mennä kaikille tasoille.
Viestintä etupään ja yrityksen välillä tietokantatasojen välillä tapahtuu kaikki JSON-objektien kautta, mikä säästää huomattavasti aikaa suunnittelussa ja kehittämisessä eri tasoilla.
Tässä MongoDB: n koontiputken opetusohjelmassa olemme osoittaneet kustannustehokkaan tavan antaa tutkijoille työkalu, jossa he voivat käyttää tuotantotietoja tutkivat aineistot ja suorittaa erilaisia muunnosjoukkoja analysoida ja rakentaa malleja.
Pystyimme kehittämään ja asentamaan tämän sovelluksen päästä päähän vain 3 päivässä. Tämän sovelluksen on kehittänyt 4 kokeneen insinöörin (2 Yhdysvalloissa ja 2 Intiassa) ja a suunnittelija ja freelance UX -asiantuntija auttaa meitä ajatuksissa käyttöliittymän suunnittelusta. Jossain vaiheessa tulevaisuudessa käytän aikaa selittääkseni, kuinka tämä yhteistyön taso toimii mahtavien tuotteiden rakentamiseksi uskomattoman lyhyessä ajassa.
Toivomme, että hyödynnät MongoDB: n aggregaatioputkistoa ja annat voiman tutkijoidesi käsiin, jotka voivat muuttaa maailmaa älykkäillä analyyseillaan ja oivalluksillaan.
Tämä sovellus on live-pelattavissa tässä .