data-formula
v1.0.4
Published
Flexible data processing with SQL, JsonPath, and transform support in pipeline steps.
Downloads
18
Maintainers
Readme
Data Formula · 
Flexible data processing with SQL, JsonPath, and transform support in pipeline steps.
Simple to use use json structure to get your resutls.
Less code with this library use less code and get faster results.
Is possible use the library in the playground.
Install
npm install data-formulaCode Examples
Is possible use SQL without server:
import { formula } from 'data-formula';
const input = {
users: [
{
id: 'U01',
name: 'John Connor',
},
{
id: 'U02',
name: 'Bruce Lee',
},
],
};
const actions = [
{
type: 'calcule',
sql: `
SELECT
name
FROM
users
ORDER BY
name
`,
output: {
name: 'users_order_by_name',
},
},
];
const output = formula(actions, input);
console.log(output.users_order_by_name);
/*
[
{
name: 'Bruce Lee',
},
{
name: 'John Connor',
},
]
*/Is possible use transform data:
import { formula } from 'data-formula';
const input = {
users: [
{
id: 'U01',
name: 'John Connor',
event_at: '2025-06-01',
customer: {
id: 'C01',
name: 'Company 1',
},
},
{
id: 'U03',
name: 'Alice',
event_at: '2025-06-22',
customer: {
id: 'C01',
name: 'Company 1',
},
},
{
id: 'U02',
name: 'Bruce Lee',
event_at: '2025-06-12',
customer: {
id: 'C02',
name: 'Company 2',
},
},
],
};
const actions = [
{
type: 'transform',
mapper: {
id: 'id',
name: 'name',
ts: ['$.event_at', 'formatToTimestamp'],
day: ['$.event_at', 'formatToDay'],
customer_id: '$.customer.id',
customer_name: '$.customer.name',
},
input: {
name: 'users',
},
output: {
name: 'users_transformed',
},
},
];
const output = formula(actions, input);
console.log(output.users_transformed);
/*
[
{
id: 'U01',
name: 'John Connor',
ts: 1748736000000,
day: '06',
customer_id: 'C01',
customer_name: 'Company 1',
},
...
]
*/Mixed:
import { formula } from 'data-formula';
const input = {
users: [
{
id: 'U01',
name: 'John Connor',
event_at: '2025-06-01',
customer: {
id: 'C01',
name: 'Company 1',
},
},
{
id: 'U03',
name: 'Alice',
event_at: '2025-06-22',
customer: {
id: 'C01',
name: 'Company 1',
},
},
{
id: 'U02',
name: 'Bruce Lee',
event_at: '2025-06-12',
customer: {
id: 'C02',
name: 'Company 2',
},
},
],
};
const actions = [
{
type: 'transform',
mapper: {
id: 'id',
name: 'name',
customer_id: '$.customer.id',
customer_name: '$.customer.name',
},
input: {
name: 'users',
},
output: {
name: 'users_transformed',
},
},
{
type: 'calcule',
sql: `
SELECT
customer_id,
customer_name,
SUM(COUNT(*)) as count
FROM
users_transformed
ORDER BY
name
`,
output: {
name: 'users_group_by_company',
},
},
];
const output = formula(actions, input);
console.log(output.users_group_by_company);
/*
[
{
count: 2,
customer_name: 'Company 1',
},
{
count: 1,
customer_name: 'Company 2',
}
]
*/Structure
Transform
{
type: 'transform',
mapper: <string, string || Array>[
// 'my_field_transformed': ['field' | 'function' | 'jsonpath']
],
input: {
name: string
},
output: {
name: string
}
}Functions can use in mapper:
formatToTimestamp Format date to timestamp
formatToDay Format date to a day
jsonpath Also is posiible extrand information using jsonpath syntax $.my_field more info: [https://www.npmjs.com/package/jsonpath#jsonpath-syntax]
Calcule
{
type: 'calcule',
sql: string, // sql query to filter, group or calcule
output: {
name: string
}
}License
React is MIT licensed.
