我似乎無法弄清楚如何解析CSV並在HTML中獲得準確的輸出。我的CSV有幾次同樣的產品,另外還有一些組合產品,我需要將它們分解成各自的部件並添加到它們各自的產品中。在D3中添加CSV值
然後,我需要找到一種方法來從表格顯示中刪除這些副本和組合產品(即使只是向該行添加一個類並通過css隱藏也可以)。
Codepen與最新的代碼:https://codepen.io/BIGREDBOOTS/project/editor/DnaBqq
d3.csv("test.csv", function(data) {
data.forEach(function(d) {
d.net_quantity = + d.net_quantity;
});
function tabulate(data, columns) {
var table = d3.select('body').append('table')
var thead = table.append('thead')
var tbody = table.append('tbody');
// append the header row
thead.append('tr')
.selectAll('th')
.data(columns).enter()
.append('th')
.text(function (column) { return column; });
// create a row for each object in the data
var rows = tbody.selectAll('tr')
.data(data)
.enter()
.append('tr');
var expensesCount = d3.nest()
.key(function(d) { return d.SKU; })
/*.rollup(function(v) { return v.length; })*/
.rollup(function(v) { return {
total: d3.sum(v, function(d) { return d.amount; })
}; })
.entries(data);
console.log(JSON.stringify(expensesCount));
// create a cell in each row for each column
var cells = rows.selectAll('td')
.data(function (row) {
return columns.map(function (column) {
return {column: column, value: row[column]};
});
})
.enter()
.append('td')
.text(function (d) { return d.value; });
return table;
}
// render the table(s)
tabulate(data, ['Product Title','SKU','Monthly units','Weekly units']); // 2 column table
現在,我得到這樣的輸出:
產品名稱 - SKU - 每月單位 - 每週單位
產品之一 - PRD101 - 5 - 2
產品二 - PRD102 - 10 - 3
產品三 - PRD103 - 15 - 10
產品OneAndTwo - PRD201 - 30 - 5
產品單 - PRD101 - 6 - 12
我想有:
產品標題 - SKU - 每月單位 - 每週單位
產品One - PRD101 - 41 - 19
產品雙 - PRD102 - 40 - 8
產品三 - PRD103 - 15 - 10
我在codepen示例中向代碼添加了彙總值,並且我在表中或console.log文件中看不到任何區別。我錯過了什麼? –
你沒有使用數組。你需要在這裏更改行= tbody.selectAll( 'TR') \t \t。數據(expensesCount) \t \t。進入() \t \t .append( 'TR'); 此外,您將需要重構每個單元格是如何從數據中填充的... – Robatron