@gscdump/engine-duckdb-node
v0.9.2
Published
Node DuckDB engine adapter for @gscdump/analysis — SQL analyzer dispatch over parquet via duckdb-node.
Readme
@gscdump/engine-duckdb-node
Node DuckDB engine adapter — wraps the parquet storage engine as a
SqlQuerySourceand ships parquet/snapshot attach helpers for the browser-style attached-table path.
Install
npm install @gscdump/engine-duckdb-node @gscdump/engineUsage
import { ROW_ANALYZERS, SQL_ANALYZERS } from '@gscdump/analysis'
import { createEngine } from '@gscdump/engine-duckdb-node'
import { createAnalyzerRegistry, runAnalyzerFromSource } from '@gscdump/engine/analyzer'
const source = createEngine({ engine, ctx })
const registry = createAnalyzerRegistry({ rows: ROW_ANALYZERS, sql: SQL_ANALYZERS })
const result = await runAnalyzerFromSource(
source,
{ type: 'striking-distance', minImpressions: 100 },
registry,
)Attaching parquet for the browser-style path
import { analyzeInBrowser } from '@gscdump/analysis'
import { attachParquetIndex, attachSnapshotIndex } from '@gscdump/engine-duckdb-node'
await attachParquetIndex(conn, { files }) // per-day or per-month parquet
await attachSnapshotIndex(conn, { snapshot }) // pre-baked .duckdb snapshot
const result = await analyzeInBrowser(
{ query: (sql, params) => conn.runAndReadAll(sql, params).then(r => r.getRowObjects()) },
{ schema: 'gsc' },
{ type: 'striking-distance' },
)Exports
createEngine({ engine, ctx })— builds aSqlQuerySourcefrom aStorageEngine+TenantCtx(delegates tocreateEngineQuerySourcefrom@gscdump/engine/source).attachParquetIndex/attachSnapshotIndex/snapshotAlias— DuckDB session attach helpers.
SQL_ANALYZERS, analyzeInBrowser, and rewriteForTableSource moved to @gscdump/analysis (they reference the analyzer instances and don't belong on the engine boundary).
Related
@gscdump/engine— Storage engine + analyzer/source contracts.@gscdump/analysis— Analyzer instances +analyzeInBrowser+SQL_ANALYZERS.@gscdump/engine-duckdb-wasm— Browser counterpart (DuckDB-WASM).@gscdump/engine-sqlite— SQLite / D1 counterpart.
