Public
Edited
Jun 8, 2023
Insert cell
Insert cell
b1 = FileAttachment("statement_41027887_EUR_2022-01-01_2022-12-31.csv").csv()
Insert cell
transactionsOut = b1.reduce((acc,d) => {
const sdate = d.Date.split('-');
const month = +sdate[1] - 1;
const ts = `${sdate[2]}/${month+1<10?'0':''}${month+1}/${sdate[0]}`;
acc[ts] = acc[ts] ?? {
timestamp: new Date(sdate[2],+sdate[1] - 1,sdate[0], 23, 0, 0),
ts,
date: d.Date,
out: 0,
in: 0,
values: [],
}
const amount = Math.abs(+d.Amount);
acc[ts].out += +d.Amount < 0 ? amount : 0;
acc[ts].in += +d.Amount > 0 ? amount : 0;
acc[ts].values.push(d)
return acc;
}, {})
Insert cell
{
const dailyTransactions = [];
const date = new Date(2022,0,1, 23, 0, 0);
const endDate = new Date(2022,11,31, 23, 0, 0);
let i = 0;
while(i<365) {
dailyTransactions.push(addDays(date,i));
i++;
}
return dailyTransactions.reduce((acc,d) => {
const year = d.getFullYear();
const month = d.getMonth();
const day = d.getDate();
const ts = `${year}/${month+1<10?'0':''}${month + 1}/${day<10?'0':''}${day}`;
acc.push({
ts,
out: transactionsOut[ts]?.out || 0,
in: transactionsOut[ts]?.in || 0,
})
return acc;
},[]);
}
Insert cell
addOneDay = (date) => {
date.setDate(date.getDate() + 1);
return date;
}
Insert cell
function addDays(date, days) {
var result = new Date(date);
result.setDate(result.getDate() + days);
return result;
}
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more