我正在从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>
Run Code Online (Sandbox Code Playgroud)
更新以添加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
Run Code Online (Sandbox Code Playgroud)
阅读d3.csv上的文档后,它会从URL加载CSV文件,但是在您的示例中,您已经加载了数据,只需要解析它即可。因此d3.csv不会有任何用处。
看起来,用于解析的D3函数d3.csv.parse(data)
将返回已解析数据的数组。(文档在这里)
所以你可以做类似的事情...
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
});
}
);
Run Code Online (Sandbox Code Playgroud)