Public
Edited
Feb 21, 2023
3 stars
Insert cell
Insert cell
Insert cell
class DuckDBClientS3 extends DuckDBClient {
static async of(s3_config = {}, s3_sources = {}, sources = {}, config) {
const db = await super.of(sources, config);
// ref https://duckdb.org/docs/sql/configuration
for (let [k, v] of Object.entries(s3_config)) await db.query(`SET s3_${k}='${v}'`);
for (let [k, s] of Object.entries(s3_sources)) {
const p = Array.isArray(s) ? `str_split('${s.join(",")}', ',')` : `'${s}'`;
await db.query(`CREATE TABLE ${k} AS SELECT * FROM read_parquet(${p})`);
}
return db;
}
}
Insert cell
Insert cell
client = DuckDBClientS3.of(
{ region, access_key_id, secret_access_key },
{ "electricity_2018": "s3://linna/parquet/electricity_2018.parquet" },
{ "gaiai": FileAttachment("gaia-sample.arrow") }
)
Insert cell
client
SELECT
count(*) AS n
FROM electricity_2018
Insert cell
import { region, access_key_id, secret_access_key } from "@kimmolinna/duckdb-parquet-and-aws-s3"
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