2017-02-19 16 views
1

タイトルからわかるように、私はd3にロードできないCSVファイル(250Mb〜700k行)を持っています。私は通常、CSVファイルの場合と同じようにロードしようとしましたが、運はありません。現在、エラーは発生せず、空のデータ配列がコンソールに表示されます。ファイルが大きすぎるか、間違って読み込んでいるかわかりません。これに関する助けに感謝します。ありがとう。非常に大きなCSVデータセットをd3にロードする方法

  var dataset; 
      d3.csv("Consumer_Complaints.csv", function (error, data) { 
       if (error) { 
        console.log(error); 
       } else { 
        console.log("file load successful?"); 
        console.log(data); 

        dataset = data; 
       } 
      }); 
+0

:私も(私がいなかった、あなたは最後まで待つように忍耐を持っている場合)をダウンロードし、ファイルを解析するのに必要な合計時間を表示するようにconsole.timeを置きますこのファイル? Javascript(ブラウザ内)はローカルファイルシステムにアクセスできません。 –

+0

Visual Studio経由の@BurhanKhalid IIS – sparta93

+0

DOMについて考える。 「PapaParse」(http://papaparse.com)を見てください。 –

答えて

6

これはD3とは関係ありませんが、一般的なJavaScriptです。 D3はロードして解析できるファイルのサイズに制限を設けていません。

クライアントでJavascriptが実行されています(例外はあります)。これはつまり、あなたのコードが(異なるサーバーであれば)の巨大な CSVファイルをダウンロードしなければならないことを意味します。それだけでなく、膨大な数のオブジェクトの配列の数十万の行を解析する必要があります。それは単にあまりにも多くのことです。

ので、常識を考えることを教えてくれる:

  • ユーザーの接続速度
  • ユーザーの処理能力
  • 分間空白の画面を凝視するユーザの忍耐を、データまで待ちますダウンロード/解析されます。

これは、巨大なCSVファイル(data.govサイトから)を読み込むデモで、読み込まれたデータの量をコンソールで確認できます。どのようにあなたが実行している

console.time("totalTime:"); 
 
d3.csv("https://data.consumerfinance.gov/api/views/s6ew-h6mp/rows.csv") 
 
    .on("progress", function(evt) { 
 
     console.log("Amount loaded: " + evt.loaded) 
 
    }) 
 
    .get(function(data) { 
 
     console.timeEnd("totalTime:"); 
 
    });
<script src="https://d3js.org/d3.v4.min.js"></script>

+0

このGerardoをありがとう、私は私の最後にデータを処理し、私はグラフにフィードすることができます小さなデータセットを作成する必要がありますように見えますか、あなたのマシンのメモリを壊したりしないでください。 – sparta93

+2

はい、これが最善の方法です。 –

関連する問題