dポイントプレゼントキャンペーン実施中!

大容量のファイルの処理(csv形式、xml形式どちらが適切でしょうか?)

商品のアクセス件数を分析する仕組み(ツール)を提案したいのですが、
肝心のアクセス件数結果が出力されるファイルが膨大な場合が多くどのように処理すればいいか
途方にくれています。

結果ファイルの中身は「どのユーザーが何時何分に何にアクセスした」
という結果が一行一行出力されています。

ユーザーA 12:00 商品A
ユーザーB 12:22 商品C




といった様相です。
*結果ファイルはcsvファイル、またはxmlファイルで出力できます。


一日程度の結果であればcsvファイルをエクセル2007で開き自力で色々といじることが
できるのですが、数日~数か月におよぶとデータ行が膨大になりエクセルの最大行数1048576を
簡単に超えてしまい処理に困っています。

当初はエクセルマクロを使い分析ツールを依頼しようと考えていたのですが、すぐにこのデータ量で
素人目にも難しいとわかりました。

このような大きなファイルの中身の分析はxmlファイルの方が
分析ツールを作成する側としても処理(ファイルの取り込みや中身のソートなど)しやすいものなのでしょうか?

なにぶん浅学なため、今まで使っていたエクセルでどうにかこうにかしてきたのですが、
流石に限界なのかと感じています。

どなたかご助言いただけますと、幸いです。よろしくお願いいたします。

A 回答 (2件)

データ集計内容がたとえば、大量のログのなかから


商品A,B,Cの出現回数を数えるだけとか、日別や時間別のアクセス数を数えるだけといった、
簡単なものなら、毎回、全ログを最初から集計しなおすんじゃなくて、
月とか日とか週で集計しておいたサマリを別のブックに残しておいて、
過去分データはそれを参照するようにすれば、容量制限が解消でき、高速化も実現できるかと。
(大抵のアクセス解析ツールはそうなってます)(過去のログは書き換わるものではないので)

もっと、自在に検索したいなら、私も データベースを使う方法がベストだと思いますが、
その大きなCSVファイルをperlとかコマンドラインのPHPで読み込んで、
商品名や日付や時間帯をキーにした連想配列で集計して、結果をCSVに吐き出して、
見栄えを整えたりグラフ化するとこだけ、Excelでやっちゃうのが、実装自体は簡単だと思います。
    • good
    • 0
この回答へのお礼

superside0様

お礼を申し上げるのが遅れて大変申し訳ありません。

>>、毎回、全ログを最初から集計しなおすんじゃなくて、
月とか日とか週で集計しておいたサマリを別のブックに残しておいて、
過去分データはそれを参照するようにすれば、容量制限が解消でき、高速化も実現できるかと。

この部分について、データベースの担当の方も同様の意見を述べており、とても参考になります。ご推察の通り、大量のデータとなっているのはイチイチ集計毎に大量のログを集計しにいっているため時間もかかり大容量のファイルとなっているそうです。この点も踏まえデータベースにどのようにアクセスする、どういった集計がしたいかを具体化させて良い提案を練り上げます。

ご助言本当にありがとうございました。

お礼日時:2012/01/28 01:47

はじめまして。


「Excelでデータを分析したい」というのが要件ですね。

大量のデータはExcelでは不向きなので、データベースと呼ばれる仕組みで管理・分析するのが一般的です。一番身近なデータベースといえば、Excelの兄弟分であるAccessです。サーバーで動作するより高性能なデータベースとしては、OracleやSQL Serverなどの製品があります。

ただ、データベースは専門の知識がないと管理・分析が難しいため、質問者さまのように、使いやすいExcelで扱えるCSVやXMLなどの形式でエクスポートすることは多々あります。

データベースなら解決できるのに敷居が高い、でも使い慣れたExcelで分析したいというジレンマを解消するには、BI(ビジネスインテリジェンス)ツールをお勧めします。これは、サーバー上であらかじめ分析用のデータベースを作っておき、Excelでこれに接続してピボット機能でデータを分析できるものです。

分析したい視点(商品別のアクセス数、ユーザー別の商品数など)を設定しておけば、たとえば夜間に前日までのデータを分析用データベースに変換して、翌朝にはExcel上で分析結果が見れるということが可能になります。

分析したい視点での設定は多少の知識が必要になりますが、それほど難しくはないかと思います。もしCSVやXMLのファイルを取り出す元のデータベースに手を入れられるのであれば、BIツールをお勧めします。DataNature、Dr.Sum、Oracle Business Intelligence、SQL Server Analysis Servicesなどがありますが、どれも高額です。(SQL Server Analysis ServicesはSQL Serverに標準添付しているので追加購入は不要)

お金はかけられない、元のデータベースに手を入れられない(CSVまたはXMLでしか受け取る権限がない)のであれば、やはりExcel上での工夫になってしまうと思います。となると私は答えを持ち合わせていないので、上記の回答は参考程度に収めてください。


ここまで書いてて思ったのですが、CSVやXMLで得られるログがウェブサイトのアクセスログであれば、データベース云々ではなくアクセスログ解析ツールが利用できます。こちらはWebLogという無料のツールや、Urchinという有料のツールなどがあります。ご参考までに。
    • good
    • 0
この回答へのお礼

uarms様

お礼が大変遅れて申し訳ありません。とても素早い回答にただ感謝するのみです。BIについて調べるきっかけになり、本当にありがとうございます。
元のデータベースから何ステップか経由して件のCSV/XMLファイルが手に入っています。
しかしデータベースを管理している方に話を持って行ったところBIなどで、もっとユーザーサイド(この場合は当方になりますが)で処理しやすいようにアクセスできるようにすることは可能と、助言いただきました。BIについては様々な種類のものが世の中にはあるみたいですが、詳しく調査し有効に活用できるものか判断したいと思います。

本当に助かりました。良い提案のためのグッドスタートに絶対いたします。

お礼日時:2012/01/28 01:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!