5千万件のデータをQlikViewで分析するデモ動画を公開しました

5千万件のデータをQlikViewで分析するデモ動画を公開しました

Pocket

QlikViewを使用して5千万件のデータを分析してみました。
Wikipediaのアクセスログ6年分(ファイル数5万、データ件数5千万)を題材に、データの前処理からグラフを使った分析までおこなっています。
専用のサーバーは用意せず、ノートPC1台とQlikView Personal Edition(QlikViewの無償版)を使用しています。

複数のグラフに複雑な条件をかけても、3秒以内程度で結果が返ってきており、まったくストレスなく分析できています。
実際に分析している様子を動画にしましたので、ぜひ動画でご覧ください。

動画は前処理編と分析編の2つに分かれています。
データを分析している様子を見たい方は、分析編の方をご覧ください。


QlikViewによる大量データの分析 1/2(前処理編)


この動画は前処理編です。
5万ファイル、5千万件のテキストファイルの前処理を、QlikViewでおこないます。
テキストファイルの結合や、分析に必要な項目の作成をし、QlikView用に最適化されたデータファイルである、QVDファイルとして出力する部分までおこないます。


QlikViewによる大量データの分析 2/2(分析編)


この動画は分析編です。
前処理編で作成したQVDファイルをQlikViewに取り込み、リストボックスやグラフを作成して、実際にデータの分析をおこないます。
5千万件という大量データであっても、まったくストレスなく分析できることがお分かりいただけると思います。
  • 6分20秒あたりから、リストボックスと統計ボックスを使った分析
  • 15分0秒あたりから、グラフを使った分析


使用した環境とデータの詳細


環境

PC:Lenovo ThinkPad X230
OS:Windows 7 Professional 64ビット版
メモリ:8GB
QlikView:QlikView Personal Edition 64ビット版

データ

Wikipediaが公開しているアクセスログ
2008年~2013年の6年分

データ件数:5千5百万件(55,208,626件)
ファイル数:52,390ファイル
データサイズ:961MB

動画の中で使用しているファイルは、以下からダウンロードできます。
Index of /other/pagecounts-ez/projectcounts/

Wikipediaが公開しているその他のデータについては、以下のページをご参照ください。
Wikimedia Downloads


前処理の詳細


今回使用したロードスクリプト

今回使用したロードスクリプトです。
2008年一年分のデータを取り込み、QVDファイルに出力しています。
ProjectCounts:
LOAD SubField(@1, '.', 1) as 国,
     SubField(@1, '.', 2) as プロジェクトコード,
     @3 as リクエスト数,
     @4 as サイズ,
     Date(Date#(SubField(FileBaseName(), '-', 2), 'YYYYMMDD')) as 日付,
     Left(SubField(FileBaseName(), '-', 2), 4) as 年,
     Mid(SubField(FileBaseName(), '-', 2), 5, 2) as 月,
     Right(SubField(FileBaseName(), '-', 2), 2) as 日,
     Left(SubField(FileBaseName(), '-', 3), 2) as 時刻
FROM
[projectcounts-2008\projectcounts-2008*]
(txt, codepage is 932, no labels, delimiter is ' ', msq);

STORE ProjectCounts into projectcounts-2008.qvd;
DROP Table ProjectCounts;

すべての年を一括で処理するサンプル

すべての年を一括で処理するサンプルです。
繰り返し処理のFOR文を使用して、複数のディレクトリを処理しています。
5千万件のデータを一括で取り込むのには、それ相応の時間がかかります。
動画とおなじ環境で試したところ、2時間程度かかりました。
FOR Each DirName in DirList projectcounts-20*

ProjectCounts:
LOAD SubField(@1, '.', 1) as 国, 
     SubField(@1, '.', 2) as プロジェクトコード, 
     @3 as リクエスト数, 
     @4 as サイズ,
     Date(Date#(SubField(FileBaseName(), '-', 2), 'YYYYMMDD')) as 日付,
     Left(SubField(FileBaseName(), '-', 2), 4) as 年,
     Mid(SubField(FileBaseName(), '-', 2), 5, 2) as 月,
     Right(SubField(FileBaseName(), '-', 2), 2) as 日,
     Left(SubField(FileBaseName(), '-', 3), 2) as 時刻
FROM
[$(DirName)\*]
(txt, codepage is 932, no labels, delimiter is ' ', msq);

NEXT

STORE ProjectCounts into projectcounts-2008-2013.qvd;
DROP Table ProjectCounts;

前処理の結果

正確なベンチマークではありません。
処理時間は環境や計測の仕方などによって、大きく変わる可能性があります。
ファイル数データの件数ファイルサイズ(MB)処理時間
2008年8,7645,440,76199.4714分28秒
2009年8,7357,781,641145.7321分04秒
2010年8,6038,537,010156.2722分40秒
2011年8,7569,173,703164.0320分51秒
2012年8,78411,287,987206.9321分01秒
2013年8,74812,987,524188.5221分41秒
合計52,39055,208,626960.952時間01分45秒


前処理後のデータの詳細

QVDファイルサイズの合計:849MB
項目数:9
項目名値の種類
995
プロジェクトコード12
リクエスト数707,386
サイズ14,612,140
日付2,186
6
12
31
時刻24