使用する 興味深い質問に答えるためのデータ 研究者が今日のデータ主導の世界で忙しくしていることです。膨大な量のデータを考えると、データの処理と分析の課題は大きなものです。特に、テラバイトのデータを数分で分析するのに役立つ、Hadoopエコシステム、Spark、またはNoSQLデータベースによって提供されるビジネスインテリジェンスプラットフォームまたはテクノロジーの学習に投資する時間がない統計学者またはデータアナリスト向けです。
今日の標準は、研究者や統計学者が次のような分析パッケージのデータのサブセットに基づいてモデルを構築することです。 R 、 MATLAB 、または オクターブ 、次に、数式とデータ処理手順をITチームに提供し、ITチームは生産分析ソリューションを構築します。
このアプローチの問題の1つは、本番環境のすべてのデータでモデルを実行した後、研究者が何か新しいことに気付いた場合、このプロセスをもう一度繰り返す必要があることです。
研究者が MongoDB開発者 新しいテクノロジーや複雑なプログラミング言語、さらにはSQLを習得することなく、すべての本番データで分析を実行し、それを探索データセットとして使用しますか?
使用する場合 MongoDBのアグリゲーションパイプライン そして 平均 効果的に、これをかなり短い時間で達成できます。この記事と利用可能なコードを通じて このGitHubリポジトリにあります 、これを実現するのがいかに簡単かを示したいと思います。
市場に出回っているビジネスインテリジェンスツールのほとんどは、研究者がNoSQLやその他のビッグデータテクノロジーからツールにデータセットをインポートする方法を提供しており、変換と分析はツール内で行われます。ただし、このビジネスインテリジェンスチュートリアルでは、MongoDBからデータを取得せずにMongoDB Aggregation Pipelineの機能を使用しており、研究者はシンプルなインターフェイスを使用して、本番ビッグデータシステムであらゆる種類の変換を行っています。
簡単に言えば、MongoDBの集約パイプラインは、データセットに対して一連のデータ変換を実行するためのフレームワークです。最初のステージでは、ドキュメントのコレクション全体を入力として受け取り、それ以降の各ステージでは、前の変換の結果セットを入力として受け取り、変換された出力を生成します。
集約パイプラインで使用できる変換には、次の10種類があります。
$ geoNear:指定されたポイントから最も近いものから最も遠いものの順にドキュメントを出力します
$ match:任意の式で設定された入力レコードをフィルタリングします
$ project:入力フィールドまたは計算フィールドのサブセットを使用して結果セットを作成します
ノードjsにはWebサーバーが必要ですか
$ redact:ドキュメントからの情報に基づいてドキュメントの内容を制限します
$ unwind:ドキュメントからn個の要素を含む配列フィールドを取得し、各要素がその配列を置き換えるフィールドとして各ドキュメントに追加されたn個のドキュメントを返します。
$ group:1つ以上の列でグループ化し、他の列で集計を実行します
Excel2016でpowerpivotを使用する方法
$ limit:入力セットから最初のn個のドキュメントを選択します(パーセンタイル計算などに役立ちます)
$ skip:入力セットの最初のn個のドキュメントを無視します
$ sort:指定されたオブジェクトに従ってすべての入力ドキュメントをソートします
$ out:前のステージから返されたすべてのドキュメントを取得し、コレクションに書き込みます
上記のリストの最初と最後を除いて、これらの変換を適用できる順序についての規則はありません。 $ outは、集計パイプラインの結果を新規または既存のコレクションに書き込みたい場合は、一度だけ使用し、最後に使用する必要があります。 $ geoNearは、パイプラインの最初のステージとしてのみ使用できます。
物事を理解しやすくするために、2つのデータセットとこれらのデータセットに関連する2つの質問を見ていきましょう。
MongoDBの集約パイプラインの威力を説明するために、米国全体の大学の教職員の給与情報を含むデータセットをダウンロードしました。このデータは次のURLで入手できます。 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 }
このデータを使用して、准教授と州別の教授の給与の違いを(平均して)調べたいと思います。そうすれば、准教授は、どの州で自分が給与の面で教授に近いと評価されているかを知ることができます。
この質問に答えるには、データセットに平均給与がnullまたは空の文字列である行/ドキュメントがいくつかあるため、研究者は最初にコレクションから不良データを取り除く必要があります。データセットのこのクリーニングを実行するために、次のステージを追加します。
{$match: {AVGSalaryProfessors: {$not: {$type: 2}}, AVGSalaryAssociateProfessors: {$not: {$type: 2}}}}
これにより、これら2つのフィールドに文字列値を持つすべてのエンティティが除外されます。 MongoDBでは、各タイプは 一意の番号で表されます -文字列の場合、タイプ番号は2です。
このデータセットは良い例です。実際のデータ分析では、エンジニアはデータのクリーンアップにも対処しなければならないことがよくあるからです。
安定したデータが得られたので、次の段階に進み、州ごとに給与を平均します。
{$group: {_id: '$State', StateAVGSalaryProfessors: {$avg: '$AVGSalaryProfessors'}, StateAVGSalaryAssociateProfessors: {$avg: '$AVGSalaryAssociateProfessors'}}}
パイプラインのステージ3で以下に示すように、上記の結果セットの予測を実行し、州の平均給与の差を取得する必要があります。
データウェアハウスには、外部ソースから購入したデータは含まれていません。
{$project: {_ID: 1, SalaryDifference: {$subtract: ['$StateAVGSalaryProfessors', '$StateAVGSalaryAssociateProfessors']}}}
これにより、全米の7519の教育機関のデータセットから、教授と准教授の間の州レベルの平均給与の差がわかります。この情報の解釈をさらに便利にするために、単純な並べ替えを実行して、$ sortステージを追加することにより、どの状態の違いが最も少ないかを確認します。
{$sort: { SalaryDifference: 1}}
このデータセットから、アイダホ州、カンザス州、ウェストバージニア州は、准教授と教授の給与の差が他のすべての州と比較して最も少ない3つの州であることが明らかです。
このために生成された完全な集約パイプラインを以下に示します。
[ {$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などの視覚化パッケージを使用して、または単純なMicrosoftExcelチャートを使用してレポートすることもできます。
この記事で検討する別の例には、から取得したデータセットが含まれます。 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列をフィルタリングして、「FinancialAdministration」以外のエンティティをすべて破棄します。
{$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 、 ExpressJS 、 AngularJS 、および NodeJS 。
ご存知かもしれませんが、MongoDBはスキーマレスのドキュメントデータベースです。保存する各ドキュメントのサイズは16MBに制限されていますが、その柔軟性とパフォーマンス、および提供される集約パイプラインフレームワークにより、MongoDBはこのツールに最適です。 MongoDBの使用を開始するのは、そのおかげで非常に簡単です。 包括的なドキュメント 。
MEANのもう1つの不可欠なコンポーネントであるNode.jsは、イベント駆動型のサーバー側Javascript環境を提供します。 Node.jsは、GoogleChromeのV8エンジンを使用してJavascriptを実行します。 Node.jsのスケーラビリティの約束が推進しているものです 多くの組織 それに向かって。
Express.jsは、Node.jsで最も人気のあるWebアプリケーションフレームワークです。これにより、Webアプリケーション用のAPIまたはその他の種類のサーバー側ビジネスレイヤーを簡単に構築できます。ミニマリストの性質のために非常に高速ですが、非常に柔軟性もあります。
多くのGoogleエンジニアによって作成および保守されているAngularJSは、私たちが自由に利用できる最も人気のあるフロントエンドJavascriptフレームワークの1つに急速になりつつあります。
MEANが非常に人気がある理由と、techXplorersでのアプリケーション開発に私たちが選んだ理由は2つあります。
Excelでデータを変換する方法
スキルセットはシンプルです。 JavaScriptを理解しているエンジニアは、すべてのレイヤーに進むのが得策です。
フロントエンドからビジネス、データベースレイヤーへの通信はすべて、JSONオブジェクトを介して行われるため、さまざまなレイヤーでの設計と開発にかかる時間を大幅に節約できます。
このMongoDB集約パイプラインチュートリアルでは、研究者が本番データを次のように使用できるツールを提供する費用効果の高い方法を示しました。 探索的データセット さまざまな変換セットを実行して、モデルを分析および構築します。
このアプリケーションをわずか3日でエンドツーエンドで開発およびデプロイすることができました。このアプリケーションは、4人の経験豊富なエンジニア(米国に2人、インドに2人)のチームと デザイナー兼フリーランスのUXエキスパート インターフェイスデザインに関するいくつかの考えを手伝ってくれます。将来のある時点で、このレベルのコラボレーションが信じられないほど短い時間で素晴らしい製品を構築するためにどのように機能するかを説明する時間を取ります。
MongoDBのアグリゲーションパイプラインを活用し、巧妙な分析と洞察で世界を変えることができる研究者の手に力を与えてください。
このアプリケーションはライブで遊ぶことができます ここに 。