@devrev/meerkat-core (英语)
@devrev/meerkat-core 是Meerkat生态系统的基础库,一个TypeScript SDK,将类似 Cube 的查询无缝地翻译为 DuckDB 抽象语法树(AST). 它为查询转换提供了核心逻辑,被设计为环境-不可知性,在节点.js和浏览器环境中运行.
此软件包完全专注于从基于JSON的查询对象生成一个 DuckDB 兼容的 AST 。 它不处理查询执行,这是特定环境包的责任,比如: @devrev/meerkat-node 财务报告和审定财务报表 @devrev/meerkat-browser。 。 。 .
关键特性
- 立方体变换 AST:将 Cube 风格的 JSON 查询转换为 DuckDB 兼容 SQL AST .
- 环境不可知论:在Node.js和浏览器环境中运行.
- 类型安全:为查询,计程器,和过滤器提供强烈的TypeScript定义.
- 高级过滤和加入:支持复杂的过滤器,逻辑运算符,以及多表相接.
- 按设计可扩展:Leverages DuckDB本土JSON系列化,避免了传统查询构建者的限制.
安装
npm install @devrev/meerkat-core
核心概念
meerkat-core 围绕两个主要对象:
Query: 定义分析请求的 JSON 对象。 它规定了措施、尺寸、过滤器和顺序.TableSchema: 定义数据表格的结构,包括列、度、维度和相加.
库使用这些对象生成 DuckDB AST. 这个 AST 然后可以传递给执行引擎.
使用量
以下是如何将立方体风格的查询转换为 DuckDB AST:
import { cubeToDuckdbAST, Query, TableSchema } from '@devrev/meerkat-core';
// 1. Define the schema for your table
const schema: TableSchema = {
name: 'users',
sql: 'SELECT * FROM users',
columns: [
{ name: 'id', type: 'INTEGER' },
{ name: 'name', type: 'VARCHAR' },
{ name: 'city', type: 'VARCHAR' },
{ name: 'signed_up_at', type: 'TIMESTAMP' },
],
};
// 2. Define your query
const query: Query = {
measures: ['users.count'],
dimensions: ['users.city'],
filters: [
{
member: 'users.city',
operator: 'equals',
values: ['New York'],
},
],
limit: 100,
};
// 3. Generate the DuckDB AST
const ast = cubeToDuckdbAST(query, schema);
// The `ast` can now be deserialized into a SQL string for execution.
console.log(JSON.stringify(ast, null, 2));
生态系统
meerkat-core 其基础是:
@devrev/meerkat-node:用于Node.js中的服务器侧分析@duckdb/node-api。 。 。 .@devrev/meerkat-browser: 用于浏览器中的客户端分析@duckdb/duckdb-wasm。 。 。 .