From 93f8b57af0db3fa91d319b83d591e46512a78ec0 Mon Sep 17 00:00:00 2001 From: cesare Date: Tue, 28 Jan 2025 17:22:52 +0100 Subject: [PATCH] query riferimenti, in progress --- js/dataMgr.js | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 js/dataMgr.js diff --git a/js/dataMgr.js b/js/dataMgr.js new file mode 100644 index 0000000..a1ae94a --- /dev/null +++ b/js/dataMgr.js @@ -0,0 +1,68 @@ +import * as duckdb from 'https://cdn.jsdelivr.net/npm/@duckdb/duckdb-wasm@1.29.0/+esm'; +//import * as arrow from 'https://cdn.skypack.dev/apache-arrow@9' + + +var rif_commentatori=[]; +var rif_autori=[]; +var rif_areetematiche=[]; + +const JSDELIVR_BUNDLES = duckdb.getJsDelivrBundles(); + +// Select a bundle based on browser checks +const bundle = await duckdb.selectBundle(JSDELIVR_BUNDLES); + +const worker_url = URL.createObjectURL( + new Blob([`importScripts("${bundle.mainWorker}");`], {type: 'text/javascript'}) +); + +// Instantiate the asynchronus version of DuckDB-wasm +const worker = new Worker(worker_url); +const logger = new duckdb.ConsoleLogger(); +const db = new duckdb.AsyncDuckDB(logger, worker); +await db.instantiate(bundle.mainModule, bundle.pthreadWorker); +URL.revokeObjectURL(worker_url); + +console.log ('datamgr init done') + + +//await db.registerFileURL('remote.parquet', 'http://localhost:8000/js/data/riferimenti_3.parquet', DuckDBDataProtocol.HTTP, false); + +/*const res = await fetch('http://localhost:8000/js/data/riferimenti_3.parquet'); + +await db.registerFileBuffer('buffer.parquet', new Uint8Array(await res.arrayBuffer()));*/ + +const conn = await db.connect(); + +await conn.query(` + CREATE TABLE riferimenti AS + SELECT * FROM "https://lida.dantenetwork.it/js/data/riferimenti_3.parquet"; + CREATE table commentatori as select distinct Com from riferimenti; + CREATE table autori as select distinct Aut from riferimenti order by Aut; + Create table areatematica as select distinct CA from riferimenti order by CA; +`); + +var table=await conn.query(` + SELECT * FROM autori +`); +const result = table.toArray().map((row) => row.toJSON()); +rif_autori=result.map((x) => x['Aut']); +console.log(rif_autori) +await conn.close(); +const conn2 = await db.connect(); +var table=await conn2.query(` + SELECT * FROM commentatori +`); +const result2 = table.toArray().map((row) => row.toJSON()); +rif_commentatori=result2.map((x) => x['Com']);; +console.log(rif_commentatori) + +var table=await conn2.query(` + SELECT * FROM areatematica +`); +const result3 = table.toArray().map((row) => row.toJSON()); + +rif_areetematiche= result3.map((x) => x['CA']); +console.log(rif_areetematiche) +await conn2.close(); + +console.log('done')