Public
Edited
Sep 8, 2022
1 star
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
database
SELECT database_id, version_id, database_version_human FROM benchmarks.database WHERE bench_id = ${benchmarkRun}
Insert cell
Insert cell
database
SELECT id, sql, notes FROM benchmarks.query WHERE bench_id = ${benchmarkRun}
Insert cell
Insert cell
viewof databases = Inputs.checkbox(databaseNames, {value: databaseNames, label: "Databases"})
Insert cell
viewof queries = Inputs.checkbox(queryNames, {value: queryNames, label: "Queries"})
Insert cell
// Do not change this variable name, we embed using it
benchmarkPlot = {
let p = Plot.plot({
marginLeft: 220,
width: 800,
x: {
grid: true,
label: "Time, s"
},
y: { label: null },
facet: {
data: queryTimingsFiltered,
y: "query_id",
label: "Query",
marginRight: 210
},
color: {
type: "categorical"
},
marks: [
Plot.frame(),
Plot.boxX(queryTimingsFiltered, {
x: "time",
y: "database_version_human",
fill: "database_version_human"
})
]
});
d3.select(p).selectAll("svg > g > text").style("font-size", "14px");
d3.select(p).selectAll("svg > g > g> text").style("font-size", "14px");
return p;
}
Insert cell
Insert cell
import {SeafowlDatabase} from "@seafowl/client"
Insert cell
database = new SeafowlDatabase({host: "https://demo.seafowl.io"})
Insert cell
// Add a random number here to bypass the cache
benchmarkRuns = database.sql`SELECT id FROM benchmarks.benchmark ORDER BY run_at DESC --${Math.random()}`.then(
(r) => r.map((r) => r.id)
)
Insert cell
database
SELECT d.database_version_human, query_id, time
FROM benchmarks.timing t
JOIN benchmarks.database d ON t.database_id = d.database_id
WHERE t.bench_id = ${benchmarkRun}
AND d.bench_id = t.bench_id
Insert cell
databaseNames = [...new Set(queryTimings.map((t) => t.database_version_human))]
Insert cell
queryNames = [...new Set(queryTimings.map((t) => t.query_id))]
Insert cell
queryTimingsFiltered = queryTimings.filter((t) => queries.includes(t.query_id) && databases.includes(t.database_version_human))
Insert cell
Insert cell
crossTimings = database.sql`SELECT d.database_version_human, query_id, time
FROM benchmarks.timing t
JOIN benchmarks.database d ON t.database_id = d.database_id
AND d.bench_id = t.bench_id
WHERE t.database_id = 'seafowl' --`
Insert cell
Plot.plot({
marginLeft: 200,
width: 900,
height: 700,
x: {
grid: true,
label: "Time, s"
},
y: {label: null},
facet: {
data: crossTimings,
y: "query_id",
label: "Query",
marginRight: 200,
},
color: {
type: "categorical"
},
marks: [
Plot.frame(),
Plot.boxX(crossTimings, {x: "time", y: "database_version_human", fill: "database_version_human"})
]
})
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