« 2010年3月3日

2010年3月4日の投稿

2010年3月5日 »

前回は200万件のCSVファイルを読み込んで、並べ替えするところまで説明しました。今回は複数のデータを結合する処理の説明です。

初期状態は以下のようになっています。2つの販売履歴データがあります。1998年から1999年までのデータが176万件、2000年から2001年までのデータが200万件です。内容は、販売日、営業マンID、商品IDの3つです。

Ws000510

この他に、関連するデータとして、営業マンマスタ、パーツマスタ、車マスタがあります。

ここで4年分のデータを通しで分析するために、2つの販売履歴データを結合して1つのデータにまとめたいと思います。このような場合、Excel 2007は最大約100万件の制限があるため使えません。MS SQL ServerやOracleなどの本格的なリレーショナルデータベースが必要になるでしょう。

SQLで書くと以下のようなイメージになります。

SELECT 販売日, 営業マンID, 商品ID FROM 販売履歴1998_1999

UNION

SELECT 販売日, 営業マンID, 商品ID FROM 販売履歴2000_2001

リレーショナルデータベースを使うには、SQLの知識が前提となります。Aktblitz(アクトブリッツ)を使えば、エクセル風の直感的な操作が可能です。

まずマウスで「販売履歴1998_1999」を「販売履歴2000_2001」にドラッグ&ドロップで重ねます。結合の種類で「縦結合(UNION)」を選択すると、以下のダイアログが表示されます。

Ws000512

単純な縦結合であれば、「自動設定」をクリックするだけで、画面の下半分に同じ名前の結合項目が自動選択されます。「OK]をクリックすると、一瞬で376万件の新しいデータ「販売履歴2000_2001_#1」が生成されます。この処理にかかったCPU時間は、わずか188ミリ秒(画面左下に表示)です。

Ws000513

私が長い間使ってきたSQLリレーショナルデータベースでは、ここまで速いのを見たことがありません。これだけでクラクラ来るくらい刺激的です。

さて、販売履歴には、営業マンIDや商品IDしかありません。これでは人の目で見て意味がわかりません。営業マンマスタに、営業マンの名前、年齢、性別、所属などの項目があります。営業マンマスタと販売履歴を結合してみましょう。

この操作も同様です。画面の左上で「営業マンマスタ」を「販売履歴2000_2001_#1」にドラッグ&ドロップします。今回は「縦結合」ではなく「Joinの実行」を選択して、両方の「営業マンID」をJOINキーとして設定します。

Ws000516

「OK」をクリックすると、370万件の販売履歴の項目数が3から12に増えた新しいデータ「販売履歴2000_2001_#2」ができます。処理時間は141ミリ秒です。370万件の結合に141ミリ秒は驚きです。

Ws000517

この次に車マスタと結合したいところですが、ここでAktblitzのクセというか、一つの制約があります。仕様上、結合でできたテーブルにさらに結合することができません。このため、結合でできたテーブルから元になったテーブルに必要な項目(営業マンの名前、年齢、性別、所属など)をコピーする必要があります。この操作を「項目転送」と言います。項目転送にかかる時間も1秒以下です。

以下は、項目転送が完了して、「販売履歴2000_2001_#1」の項目数が11になった状態です。最初に項目が3つで、営業マンマスタから営業マンIDを除く8項目を転送したので、項目数が11になっています。

Ws000518

項目転送が終わったテーブル「販売履歴2000_2001_#2」は不要なので削除します。

同様の手順で車マスタを販売履歴に結合して、車名やカテゴリなどを項目転送します。繰り返しになりますが、結合したいテーブルをドラッグ&ドロップして、結合列を指定するだけなので、とても簡単です。

さらにパーツマスタと結合してみます。車マスタや営業マンマスタと販売履歴の結合は1対1でしたが、パーツマスタは1種類の車に500種類のパーツが対応する1対多結合になります。パーツマスタと販売履歴を商品IDで結合した結果は、18億8,375万件になります。これだけの処理でもかかった時間はわずか109ミリ秒です。ここまで来るとSQLリレーショナルデータベースを使っても一仕事です。しかもこれが数年前のスペックのパソコンで楽々動くのです。(参考:32bit版Aktblitzは、最大20億行までのデータを取り扱うことができます。)

Ws000519

ここまでの処理をSQLで書くと以下のようなイメージになります。

SELECT 販売履歴.*, 営業マンマスタ.*, 車マスタ.*, パーツマスタ.*

FROM 販売履歴, 営業マンマスタ, 車マスタ, パーツマスタ

WHERE 販売履歴.営業マンID = 営業マンマスタ.営業マンID

AND 販売履歴.商品ID = 車マスタ.商品ID

AND 販売履歴.商品ID = パーツマスタ.商品ID

結果として全部のデータを結合した23項目の販売履歴テーブルができました。今回はここまでで保存して終了です。Aktblitzの独自形式による保存は、数秒で終わります。

試しに、AktblitzからCSV形式でファイルを書き出してみたら、全体の10分の1をエクスポートするのに79分かかりました。この時点でCSVファイルのサイズは3.9Gバイトでした。最後まで待てそうにないので途中で中断しました。

関連リンク:

「Aktblitz」のお問い合わせ・デモのご依頼は、株式会社テクネコで承ります。以下のリンクからお気軽にお問い合わせください。

テクネコ

« 2010年3月3日

2010年3月4日の投稿

2010年3月5日 »

» このブログのTOP

» オルタナティブ・ブログTOP



プロフィール

加藤和幸

加藤和幸

株式会社テクネコ 代表取締役。
ITを売る側と買う側の両方の経験を活かして、CRMとCMSのコンサルティングを中心に、お客様の”困った”を解決します。

詳しいプロフィール

Special

- PR -
カレンダー
2013年5月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
techneco
Special オルタナトーク

仕事が嫌になった時、どう立ち直ったのですか?

カテゴリー
エンタープライズ・ピックアップ

news094.gif 顧客に“ワォ!”という体験を提供――ザッポスに学ぶ企業文化の確立
単に商品を届けるだけでなく、サービスを通じて“ワォ!”という驚きの体験を届けることを目指している。ザッポスのWebサイトには、顧客からの感謝と賞賛があふれており、きわめて高い顧客満足を実現している。(12/17)

news094.gif ちょっとした対話が成長を助ける――上司と部下が話すとき互いに学び合う
上司や先輩の背中を見て、仕事を学べ――。このように言う人がいるが、実際どのようにして学べばいいのだろうか。よく分からない人に、3つの事例を紹介しよう。(12/11)

news094.gif 悩んだときの、自己啓発書の触れ方
「自己啓発書は説教臭いから嫌い」という人もいるだろう。でも読めば元気になる本もあるので、一方的に否定するのはもったいない。今回は、悩んだときの自己啓発書の読み方を紹介しよう。(12/5)

news094.gif 考えるべきは得意なものは何かではなく、お客さまが高く評価するものは何か
自社製品と競合製品を比べた場合、自社製品が選ばれるのは価格や機能が主ではない。いかに顧客の価値を向上させることができるかが重要なポイントになる。(11/21)

news094.gif なんて素敵にフェイスブック
夏から秋にかけて行った「誠 ビジネスショートショート大賞」。吉岡編集長賞を受賞した作品が、山口陽平(応募時ペンネーム:修治)さんの「なんて素敵にフェイスブック」です。平安時代、塀に文章を書くことで交流していた貴族。「塀(へい)に嘯(うそぶ)く」ところから、それを「フェイスブック」と呼んだとか。(11/16)

news094.gif 部下を叱る2つのポイント
叱るのは難しい。上司だって人間だ、言いづらいことを言うのには勇気がいるもの。役割だと割り切り、叱ってはみたものの、部下がむっとしたら自分も嫌な気分になる。そんな時に気をつけたいポイントが2つある。(11/14)

news094.gif 第6回 幸せの創造こそ、ビジネスの使命
会社は何のために存在するのでしょうか。私の考えはシンプルです。人間のすべての営みは、幸せになるためのものです――。2012年11月発売予定の斉藤徹氏の新著「BE ソーシャル!」から、「はじめに」および、第1章「そして世界は透明になった」を6回に分けてお送りする。(11/8)

オルタナティブ・ブログは、専門スタッフにより、企画・構成されています。入力頂いた内容は、アイティメディアの他、オルタナティブ・ブログ、及び本記事執筆会社に提供されます。


サイトマップ | 利用規約 | プライバシーポリシー | 広告案内 | お問い合わせ