
5千万件のデータをQlikViewで分析するデモ動画を公開しました
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 X230OS: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,764 | 5,440,761 | 99.47 | 14分28秒 |
2009年 | 8,735 | 7,781,641 | 145.73 | 21分04秒 |
2010年 | 8,603 | 8,537,010 | 156.27 | 22分40秒 |
2011年 | 8,756 | 9,173,703 | 164.03 | 20分51秒 |
2012年 | 8,784 | 11,287,987 | 206.93 | 21分01秒 |
2013年 | 8,748 | 12,987,524 | 188.52 | 21分41秒 |
合計 | 52,390 | 55,208,626 | 960.95 | 2時間01分45秒 |
前処理後のデータの詳細
QVDファイルサイズの合計:849MB項目数:9
項目名 | 値の種類 |
---|---|
国 | 995 |
プロジェクトコード | 12 |
リクエスト数 | 707,386 |
サイズ | 14,612,140 |
日付 | 2,186 |
年 | 6 |
月 | 12 |
日 | 31 |
時刻 | 24 |