2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

営業マンがノンプログラミングで高速に集計してみた

Last updated at Posted at 2016-07-05

MongoDB アダプタに続きまして、第2回です。
引き続き DataSpider Servista V4 SP1 の新機能を試してみます。
今回試すのは「マルチストリームコンバータ(略称:MSC)」です。


###マルチストリームコンバータ 概要
V4 SP1 より搭載された新エンジンにより「集計」「結合」「ソート」処理が高速化されました。
これによりパフォーマンスの高速化が実現できるだけではなく、「集計」「結合」「ソート」処理を作成する際の工数の大幅な削減が見込めます。
MSC.jpg
今回はこの中の「集計」の処理で実践してみます。
従来も集計を行うことはできましたが、より簡単に集計処理が作れるようになっています。
###準備
では、準備です。
ダミーデータはこちらのサイトで作りました。
データは

名前,ふりがな,アドレス,性別,年齢,誕生日,都道府県

という形式で全部で 10,000件のデータがあります。こんな感じです(↓)。
sampleData.jpg
このデータを元にして、都道府県別の平均年齢を集計してみようと思います。
###スクリプト作成
CSV 読み取り機能の設定は割愛して、集計処理の機能にフォーカスしてご紹介します。

まず、ツールパレットを確認しましょう。
従来からの「マッピング」「マージ」に加えて「結合」「集計」「ソート」が追加されています。
ツールパレット.jpg
「集計」アイコンをドラッグ&ドロップで配置します。
設定は以下の通りです。殆どはプルダウンで選ぶだけです。

グループキー:集計のキーとする列を指定します。
グループキー.jpg
集計対象:集計対象とする列を指定します。
今回は「列名:年齢」「関数:合計値」と設定します。
集計設定.jpg
今回は合計値を取得していますが、予め用意された関数を用いることで集計対象とする列について様々な値を取得することができます。
(一部の処理において使用可能なデータ型に制限があります。詳しくはヘルプを確認しましょう)
集計関数.jpg
マルチストリームコンバータの設定(集計のための設定)はこれだけです。
あとは「平均年齢」を算出するためには「マッピング」機能を使います。
「マッピング」機能では様々な関数アイコンを使ってデータの加工ができます。
真ん中にあるアイコンが割り算のアイコンです。今回は「集計」アイコンによって取得した「合計値」を「件数」で割り、有効桁数小数点以下1桁として結果を取得します。
mapping.jpg
設定はここまでです。この集計結果を Excel に出力します(設定は割愛)。

###いざ、実行!
出来上がったスクリプトを実行してみます(ポチッ)。
数秒待つかな?と思いましたが、なんと!一瞬(266ms)で結果が出ました。
ノートPC で試してこの結果なのでサーバー機であればもっと速いでしょう。
作成したスクリプトと実行速度の証拠は以下のとおりです。
Script.jpg
###結果確認
当然ですが、出力先の Excel は以下のように集計結果が出力されています。
Excel.jpg
###まとめ
・・・とこんな感じで凄く簡単に集計処理作成することができます(作成時間:1時間弱)。
私はプログラムを書くことができないので、他の方法(スクラッチ開発)との比較をすることができないのですが、1万件の集計が一瞬で終わるパフォーマンスは使う人にとって十分に満足いただけるものと思います。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?