我正在从AWS S3存储桶下载csv文件,以便可以在D3中使用它。
下载csv文件没有问题。在console.log(data.Body.toString())
下面的代码中,以预期格式打印出csv文件内容
但是,我不确定如何通过下面的代码将下载的csv文件内容传递给D3。
文件内容已经是不错的csv文件格式。
问题:如何用merged.csv
对象替换下面的mergedcsv
?
<script type="text/javascript">
var bucket = new AWS.S3();
bucket.getObject({
Bucket: 's3-google-analytics',
Key: 'merged.csv'
},
function awsDataFile(error, data) {
if (error) {
return console.log(error);
}
mergedcsv = data.Body.toString();
console.log(data.Body.toString());
}
);
// how to replace the "merged.csv" below with the mergedcsv object above?
d3.csv("merged.csv", function(data) {
var parseDate = d3.time.format("%Y%m%d").parse;
var counter = 0;
data.forEach(function(d) {
etc
});
});
</script>
已更新以添加mergedcsv
内容的样本,例如console.log(mergedcsv);
或console.log(data.Body.toString());
的输出:
yyyymm,date,hostname,source,PPCC,in30days,sessionDuration,users,sessions,newUsers,twitterSessions,bounceRate,sessionsPerUser
201203,20120330,journal,google,PPCC,>30days,26.25,4,4,4,0,75.0,1.0
201203,20120331,journal,(direct),PPCC,>30days,0.0,3,3,3,0,100.0,1.0
201203,20120331,journal,bing,PPCC,>30days,0.0,1,1,1,0,100.0,1.0
答案 0 :(得分:5)
阅读d3.csv上的文档后,它会从URL加载CSV文件,但是在您的示例中,您已经加载了数据,只需要解析数据即可。因此d3.csv不会有任何用处。
似乎用于解析的D3函数是d3.csv.parse(data)
,它将返回已解析数据的数组。 (文档为here)
所以您可以做类似...
var bucket = new AWS.S3();
var mergedcsv;
bucket.getObject({
Bucket: 's3-google-analytics',
Key: 'merged.csv'
},
function awsDataFile(error, data) {
if (error) {
return console.log(error);
}
mergedcsv = d3.csv.parse(data.Body.toString());
// now mergedcsv will be an array, so you can do whatever you were going to do with it before, i.e...
var parseDate = d3.time.format("%Y%m%d").parse;
var counter = 0;
data.forEach(function(d) {
etc
});
}
);