2.0.4 • Published 6 months ago
js_formula_engine v2.0.4
BI 公式引擎
运行环境
编译后支持兼容 es5
的浏览器、JavaScript 引擎。
开发环境 node
版本为 v16.18.0
。
主要功能
- 表达式解析
- 可扩展预定义函数
- 输出sql语句
- 支持
mysql
- 支持
pgsql
- 支持指定字段别名
- 支持
- 直接执行表达式
- 兼容常用全角字符
- 允许限制可用函数
- 功能测试
安装 npm 包
npm i js_formula_engine
Java 或 .net 使用,直接加载 index.js
内容,相当于 import 'js_formula_engine'
。
使用简介
先创建公式引擎实例,然后调用 parse
函数解析表达式。解析结果中的 data
字段是执行表达式或生成SQL语句的参数。
使用示例
import 'js_formula_engine'
// 创建引擎对象
const engine = new FormulaEngine();
// 解析表达式, 格式 engine.parse(表达式字符串, 表达式字段名称, 【可选】可用字段信息数组)
const data = engine.parse('"4" + "5" + if(false, 5, "888") + if (true, "aaa" + 666 + 999, "bbb") + 1 + "2" + "3"+1+2+3+4;', 'test', fields);
// 执行表达式,格式 engine.execute(解析结果data,【可选】数据字段的值,需要保证值类型和字段名称与解析时类型一致)
let value = engine.execute(data.data)
console.log(value.data)
// 生成SQL语句, 格式 engine.generateSQL(解析结果data, 【可选】字段别名信息)
let value = engine.generateSQL(data.data)
console.log(value.data)
V2.0 开始支持 mysql
(默认), pgsql
。指定生成的 SQL类型
:
// 创建引擎时指定默认SQL类型
const engine = new FormulaEngine(undefined, 'pgsql');
// 解析时指定类型
const data = engine.parse('1+2+3+4', 'test', fields, 'pgsql');
// 同时输出两种类型
const data = engine.parse('1+2+3+4', 'test', fields, ['mysql', 'pgsql']);
// 生成SQL时指定类型
// 需要注意的是,如果解析时的SQL类型不包含或引擎默认的SQL类型与 generateSQL 时的类型不一致,会自动重新解析,性能较差
engine.generateSQL(data.data, 'mysql');