Public
Edited
Jul 5
2 forks
1 star
Insert cell
Insert cell
class BlobFile extends Blob {
constructor (arrayBuffer,extension) {
super([arrayBuffer]);
Object.defineProperty(this,"name",{value: "d."+extension});
Object.defineProperty(this,"_url",{value: "blob:"});
}
async url(){
return (await this._url) +"";
}
}
Insert cell
Insert cell
s3_github = {
const parquet = await (await fetch("https://raw.githubusercontent.com/kimmolinna/parquet_public/master/electricity.parquet")).arrayBuffer()
const con = await DuckDBClient.of({'test': {file:new BlobFile(parquet,"parquet")}})
return con;
}
Insert cell
Insert cell
Insert cell
s3_duckdb = {
const con = await DuckDBClient.of();
await con.query(`SET s3_region='fr-par'`);
await con.query(`SET s3_endpoint='s3.fr-par.scw.cloud'`);
await con.query(`SET s3_access_key_id='SCW8ZBVSFFMBXF9C0QK5'`);
await con.query(`SET s3_secret_access_key='c2c40167-6fc9-4204-9648-2e3e5209b56e'`);
return con
}
Insert cell
s3_duckdb
select * from 's3://kimmolinna/electricity.db'

Insert cell
s3_aws_client = {
const s3 = await new AWS.S3Client({
region: region,
buffersize: 100000000,
s3BucketEndPoint: true,
endpoint: `https://${endpoint}`,
credentials:{
accessKeyId: 'SCW8ZBVSFFMBXF9C0QK5',
secretAccessKey: 'c2c40167-6fc9-4204-9648-2e3e5209b56e'}
});
const file = await s3.send(new AWS.GetObjectCommand({Bucket: bucket,Key: 'electricity.parquet'}));
const buffer = await (await file.Body.getReader().read()).value
const con = await DuckDBClient.of(
{
aws_test:{
file: new BlobFile(buffer,"parquet")
}
}
);
return con;
}
Insert cell
s3_aws_client
SELECT * FROM aws_test
Insert cell
endpoint = 's3.fr-par.scw.cloud'
Insert cell
bucket = 'duckdb-wasm'
Insert cell
region = 'fr-par'
Insert cell
Insert cell
https://www.scaleway.com/en/docs/storage/object/api-cli/object-storage-aws-cli/
https://www.scaleway.com/en/docs/storage/object/api-cli/setting-cors-rules/
Insert cell
cors = (
{
"CORSRules": [
{
"AllowedHeaders": ["*"],
"AllowedMethods": ["GET", "HEAD", "POST", "PUT", "DELETE"],
"AllowedOrigins": [
"https://kimmolinna.static.observableusercontent.com"
],
"ExposeHeaders": ["Etag"],
"MaxAgeSeconds": 3000
}
]
}
)

Insert cell
AWS = await import("https://cdn.skypack.dev/@aws-sdk/client-s3@3.212")
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