@devrev/meerkat-浏览器
@devrev/meerkat-browser 一个库,用于将立方体查询转换为SQL,并在浏览器环境中使用 @duckdb/duckdb-wasm (英语)它作为Meerkat生态系统内的客户端查询引擎.
此软件包使用 @devrev/meerkat-core 生成兼容 DuckDB 的 AST 和 @duckdb/duckdb-wasm 以浏览器可用的数据源执行由此产生的查询.
关键特性
- 立方体到 SQL 执行:将立方体查询翻译为SQL,并在浏览器中执行.
- 浏览器优化: 搭建用于无缝工作
@duckdb/duckdb-wasm。 。 。 . - 客户端系统分析:启用强大的内浏览器数据分析,而无需服务器回行.
安装
npm install @devrev/meerkat-browser @devrev/meerkat-core @duckdb/duckdb-wasm
@duckdb/duckdb-wasm 是一个同伴依赖,应当根据其文档配置.
使用量
以下是如何将立方体查询转换为SQL,并用 Duckdb-wasm 在客户端执行查询的例子.
import * as duckdb from '@duckdb/duckdb-wasm';
import { cubeQueryToSQL } from '@devrev/meerkat-browser';
import { Query, TableSchema } from '@devrev/meerkat-core';
async function main() {
// 1. Initialize DuckDB-WASM
const logger = new duckdb.ConsoleLogger();
const worker = new Worker(duckdb.getJsDelivrWorker());
const bundle = await duckdb.selectBundle(duckdb.getJsDelivrBundles());
const db = new duckdb.AsyncDuckDB(logger, worker);
await db.open(bundle);
const connection = await db.connect();
// 2. Define your table schemas
const tableSchemas: TableSchema[] = [
{
name: 'users',
// The SQL could point to a registered file or another data source
sql: 'SELECT * FROM users',
columns: [
{ name: 'id', type: 'INTEGER' },
{ name: 'name', type: 'VARCHAR' },
{ name: 'city', type: 'VARCHAR' },
{ name: 'signed_up_at', type: 'TIMESTAMP' },
],
},
];
// 3. Define your Cube query
const query: Query = {
measures: ['users.count'],
dimensions: ['users.city'],
filters: [
{
member: 'users.city',
operator: 'equals',
values: ['New York'],
},
],
limit: 100,
};
// 4. Convert the query to SQL
const sqlQuery = await cubeQueryToSQL({
connection,
query,
tableSchemas,
});
// 5. You can now execute the generated SQL query with DuckDB
const result = await connection.query(sqlQuery);
console.log(
'Query Results:',
result.toArray().map((row) => row.toJSON())
);
}
main();