Public
Edited
Jul 26, 2024
Insert cell
Insert cell
duckdbWasmVersion = "1.28.1-dev106.0"
Insert cell
arrow = require("apache-arrow")
Insert cell
duckdb = import(
`https://cdn.jsdelivr.net/npm/@duckdb/duckdb-wasm@${duckdbWasmVersion}/+esm`
)
Insert cell
bundles = duckdb.getJsDelivrBundles()
Insert cell
bundle = duckdb.selectBundle(bundles)
Insert cell
async function makeDB() {
const logger = new duckdb.ConsoleLogger();
const worker = await duckdb.createWorker(bundle.mainWorker);
const db = new duckdb.AsyncDuckDB(logger, worker);
await db.instantiate(bundle.mainModule);
return db;
}
Insert cell
db = makeDB()
Insert cell
query = `from read_parquet("https://idl.uw.edu/mosaic/data/flights-200k.parquet")`
Insert cell
connection = await db.connect()
Insert cell
connection.query(query)
Insert cell
connection.useUnsafe(async (bindings, conn) => {
const buffer = await bindings.runQuery(conn, query);
console.log("buffer", buffer);

const table = arrow.tableFromIPC(buffer);

console.log("table", table);
})
Insert cell
function getArrowIPC(conn, query) {
return new Promise((resolve, reject) => {
connection.useUnsafe(async (bindings, conn) => {
try {
const buffer = await bindings.runQuery(conn, query);
resolve(buffer);
} catch (error) {
reject(error);
}
});
});
}
Insert cell
buffer = getArrowIPC(connection, query)
Insert cell
table = arrow.tableFromIPC(buffer)
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