Public
Edited
Mar 20
1 fork
Insert cell
Insert cell
Insert cell
viewof compression = Inputs.select(["zstd", "gzip", "snappy", "br"], {
label: "compression"
})
Insert cell
Insert cell
Insert cell
Insert cell
viewof duckdb = Inputs.toggle({ label: "do duckdb" })
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
average_time = {
if (!duckdb) return [];
const startTime = performance.now();
const result = (
await db.query(
`SELECT average, date FROM parquet_scan('${PARQUET_URL}') LIMIT 1000000`
)
).map((r) => ({ ...r, date: parseCustomDate(r.date) }));
result.fetchTime = performance.now() - startTime;
return result;
}
Insert cell
average_time.fetchTime
Insert cell
Insert cell
Insert cell
Insert cell
scatter = {
if (!do_scatter) return;
const startTime = performance.now();

const plot = Plot.plot({
marks: [Plot.dot(average_time, { x: "date", y: "average", tip: true })]
});

plot.renderTime = performance.now() - startTime;

return plot;
}
Insert cell
do_scatter && scatter.renderTime
Insert cell
histogram = {
const startTime = performance.now();
const plot = Plot.plot({
marks: [
Plot.rectY(average_time, Plot.binX({ y: "count" }, { x: "average" })),
Plot.ruleY([0])
]
});
plot.renderTime = performance.now() - startTime;
return plot;
}
Insert cell
histogram.renderTime
Insert cell
density = {
const startTime = performance.now();

const plot = Plot.plot({
marks: [
Plot.density(average_time, {
x: "date",
y: "average",
stroke: "blue",
strokeWidth: 0.25
})
]
});

plot.renderTime = performance.now() - startTime;

return plot;
}
Insert cell
density.renderTime
Insert cell
binned = {
const startTime = performance.now();

const plot = Plot.plot({
marks: [Plot.rect(average_time, Plot.bin({}, { x: "date", y: "average" }))]
});

plot.renderTime = performance.now() - startTime;

return plot;
}
Insert cell
binned.renderTime
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
start_time = hypa_read_objects && performance.now()
Insert cell
hypa_data_date = {
if (!hypa_read_objects) return [];
const file = await hyparquet.asyncBufferFromUrl({ url: PARQUET_URL }); // wrap url for async fetching
const startTime = performance.now();
const data = await hyparquet.parquetReadObjects({
file,
columns: ["date"],
rowStart: 0,
rowEnd: 1000000, // These don't affect data read! we need rowLimit
compressors: compressors.compressors
});

const fetchTime = performance.now() - startTime;
const munged = data.map((r) => ({ date: parseCustomDate(r.date) }));
munged.mungeTime = performance.now() - startTime;
munged.fetchTime = fetchTime;
return munged;
}
Insert cell
hypa_data_average = {
if (!hypa_read_objects) return [];
const file = await hyparquet.asyncBufferFromUrl({ url: PARQUET_URL }); // wrap url for async fetching
const startTime = performance.now();
const data = await hyparquet.parquetReadObjects({
file,
columns: ["average"],
rowStart: 0,
rowEnd: 1000000, // These don't affect data read! we need rowLimit
compressors: compressors.compressors
});

data.fetchTime = performance.now() - startTime;
return data;
}
Insert cell
hypa_data_date.fetchTime
Insert cell
hypa_data_average.fetchTime
Insert cell
hypa_data_date.mungeTime
Insert cell
total_time = hypa_data_average &&
hypa_data_date &&
performance.now() - start_time
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