大容量のファイルの処理(csv形式、xml形式どちらが適切でしょうか?)
商品のアクセス件数を分析する仕組み(ツール)を提案したいのですが、
肝心のアクセス件数結果が出力されるファイルが膨大な場合が多くどのように処理すればいいか
途方にくれています。
結果ファイルの中身は「どのユーザーが何時何分に何にアクセスした」
という結果が一行一行出力されています。
ユーザーA 12:00 商品A
ユーザーB 12:22 商品C
・
・
・
といった様相です。
*結果ファイルはcsvファイル、またはxmlファイルで出力できます。
一日程度の結果であればcsvファイルをエクセル2007で開き自力で色々といじることが
できるのですが、数日~数か月におよぶとデータ行が膨大になりエクセルの最大行数1048576を
簡単に超えてしまい処理に困っています。
当初はエクセルマクロを使い分析ツールを依頼しようと考えていたのですが、すぐにこのデータ量で
素人目にも難しいとわかりました。
このような大きなファイルの中身の分析はxmlファイルの方が
分析ツールを作成する側としても処理(ファイルの取り込みや中身のソートなど)しやすいものなのでしょうか?
なにぶん浅学なため、今まで使っていたエクセルでどうにかこうにかしてきたのですが、
流石に限界なのかと感じています。
どなたかご助言いただけますと、幸いです。よろしくお願いいたします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
データ集計内容がたとえば、大量のログのなかから
商品A,B,Cの出現回数を数えるだけとか、日別や時間別のアクセス数を数えるだけといった、
簡単なものなら、毎回、全ログを最初から集計しなおすんじゃなくて、
月とか日とか週で集計しておいたサマリを別のブックに残しておいて、
過去分データはそれを参照するようにすれば、容量制限が解消でき、高速化も実現できるかと。
(大抵のアクセス解析ツールはそうなってます)(過去のログは書き換わるものではないので)
もっと、自在に検索したいなら、私も データベースを使う方法がベストだと思いますが、
その大きなCSVファイルをperlとかコマンドラインのPHPで読み込んで、
商品名や日付や時間帯をキーにした連想配列で集計して、結果をCSVに吐き出して、
見栄えを整えたりグラフ化するとこだけ、Excelでやっちゃうのが、実装自体は簡単だと思います。
superside0様
お礼を申し上げるのが遅れて大変申し訳ありません。
>>、毎回、全ログを最初から集計しなおすんじゃなくて、
月とか日とか週で集計しておいたサマリを別のブックに残しておいて、
過去分データはそれを参照するようにすれば、容量制限が解消でき、高速化も実現できるかと。
この部分について、データベースの担当の方も同様の意見を述べており、とても参考になります。ご推察の通り、大量のデータとなっているのはイチイチ集計毎に大量のログを集計しにいっているため時間もかかり大容量のファイルとなっているそうです。この点も踏まえデータベースにどのようにアクセスする、どういった集計がしたいかを具体化させて良い提案を練り上げます。
ご助言本当にありがとうございました。
No.1
- 回答日時:
はじめまして。
「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という有料のツールなどがあります。ご参考までに。
uarms様
お礼が大変遅れて申し訳ありません。とても素早い回答にただ感謝するのみです。BIについて調べるきっかけになり、本当にありがとうございます。
元のデータベースから何ステップか経由して件のCSV/XMLファイルが手に入っています。
しかしデータベースを管理している方に話を持って行ったところBIなどで、もっとユーザーサイド(この場合は当方になりますが)で処理しやすいようにアクセスできるようにすることは可能と、助言いただきました。BIについては様々な種類のものが世の中にはあるみたいですが、詳しく調査し有効に活用できるものか判断したいと思います。
本当に助かりました。良い提案のためのグッドスタートに絶対いたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルでcsvファイルを開いてVBAを使いたい 7 2022/04/28 11:12
- Excel(エクセル) CSVファイルでVBAを動かす方法 3 2023/04/04 10:22
- その他(プログラミング・Web制作) データ解析ソフトRでのファイル入力read.csvがエラーになります 7 2022/03/27 22:11
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- Visual Basic(VBA) VBAで特定の場所にあるCSVファイル(複数)から特定場所を抜き出してExcelに転記したいです。 11 2023/05/23 16:29
- Excel(エクセル) CSVファイルがカンマ区切りにならない。対処法を教えていただきたいです。 仕事でSMS一斉送信ができ 2 2022/07/01 21:24
- Access(アクセス) CSVファイルの「0落ち」にVBA 6 2023/02/02 15:27
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- HTML・CSS HTMLタグのあるCSVファイルを利用する方法 4 2023/03/19 14:41
- Visual Basic(VBA) tatsumaru77様 昨日回答して頂いたものです。 すみませんが、昨日の質問で1つ補足があります 1 2022/05/15 15:06
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの指数を無効にしたい
-
datファイル→csvファイル→datフ...
-
複数のCSVファイルを横に並べて...
-
CSVファイルの結合(重複データ...
-
二つのCSVファイルを照らし合わ...
-
エクセル終了時の保存確認メッ...
-
複数のデータ系列の線の太さを...
-
ファイル名を今日の日付、時刻...
-
エクセルVBA Workbook変数に変...
-
作成したマクロを共有
-
マクロを消すマクロは不可能?
-
VBAで実行時エラー '1004'の解...
-
フォルダ内の全ブックのシート...
-
エクセルファイルを自身のファ...
-
PLDTというファイルがでてきます
-
エクセルワークシート上に印刷...
-
別のパソコンでエクセルのマク...
-
エクセルで作成したマクロが他...
-
cellsで特定の離れた範囲を選択...
-
EXCELでマクロを記録する際に、...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの指数を無効にしたい
-
複数のCSVファイルを横に並べて...
-
excelインポート時の「実行時エ...
-
大量のCSVデータを1つのエ...
-
VBAでCSVの1行目だけを書き換え...
-
複数のcsvファイルを1つのEXCEL...
-
Excel VBAを使った複数のCSVフ...
-
EXCELLの動きが遅い
-
CSVファイルの結合(重複データ...
-
「ほかのアプリケーションを無...
-
datファイル→csvファイル→datフ...
-
EXCELにcsv形式の外部データを...
-
二つのCSVファイルを照らし合わ...
-
EXCELで外部データの取り込みが...
-
【VBA初心者】同じフォルダ内の...
-
【エクセル VBA】CSVファイルの...
-
Accessにエクセルからデータを...
-
VBAで一定期間の名簿を検索、抽...
-
同じ形のCSVファイルを複数同時...
-
複数個のascファイルを1つ...
おすすめ情報