dvt-aggregation
TypeScript icon, indicating that this package has built-in type declarations

0.2.9 • Public • Published

dvt-aggregation

简单又实用的聚合函数生成器 createAggregateFunction,该生成器接受一个指标配置数组,返回这些指标对应的聚合函数。

支持的特性

  • 支持以下聚合操作符:MAX | MIN | SUM | AVG | COUNT
  • 支持的普通四则运算(加减乘除与圆括号)
  • 支持简单的计算指标

示例

import { createAggregateFunction } from 'dvt-aggregation'
 
const indicators = [
  { code: 'target', name: '目标收入', expression: 'SUM(target)' },
  { code: 'income', name: '实际收入', expression: 'SUM(income)' },
  { code: 'rate', name: '达成比率', expression: 'income / target' },
]
 
const fn = createAggregateFunction(indicators)
 
// 生成的 fn 如下:
function anonymous(slice) {
  /* aggregate function generated by dvt-aggregation@x.y.z
    目标收入: target = SUM(target)
    实际收入: income = SUM(income)
    达成比率: rate = income / target
  */
 
  let r = {}
 
  r['target'] = 0
  r['income'] = 0
 
  for (const d of slice) {
    r['target'] += d['target'] || 0
    r['income'] += d['income'] || 0
  }
 
  r['rate'] = r['income'] / r['target']
 
  return r
}
 
const result = fn([
  { month: '2022-01', target: 700, income: 600 },
  { month: '2022-02', target: 800, income: 750 },
  { month: '2022-03', target: 1000, income: 1050 },
])
// result: { target: 2500, income: 2400, rate: 0.96 }

Readme

Keywords

none

Package Sidebar

Install

npm i dvt-aggregation

Weekly Downloads

15

Version

0.2.9

License

none

Unpacked Size

219 kB

Total Files

7

Last publish

Collaborators

  • shinima