agg-pivot

1.0.11 • Public • Published

agg-pivot

create pivot table and aggregate it.

after

{
    "rows": [
        [ {"value": "1990","name": "year"} ],
        [ {"value": "1991","name": "year"} ],
        [ {"value": "1992","name": "year"} ]
    ],
    "cols": [
        [ {"value": "tom","name": "name"} ],
        [ {"value": "alice","name": "name"} ],
        [ { "value": "bob","name": "name"} ]
    ],
    "sums": [
        "sales",
        "budgets"
    ],
    "table": {
        "1990&tom&sales": 130,
        "1990&tom&budgets": 241,
        "1990&alice&sales": 460,
        "1990&alice&budgets": 245,
        "1990&bob&sales": 0,
        "1990&bob&budgets": 0,
        "1991&tom&sales": 678,
        "1991&tom&budgets": 124,
        "1991&alice&sales": 0,
        "1991&alice&budgets": 0,
        "1991&bob&sales": 0,
        "1991&bob&budgets": 0,
        "1992&tom&sales": 0,
        "1992&tom&budgets": 0,
        "1992&alice&sales": 0,
        "1992&alice&budgets": 0,
        "1992&bob&sales": 700,
        "1992&bob&budgets": 251
    }
}

before

[
    'year', 'month', 'name', 'sales', 'budgets',
    '1990', '0', 'tom', '123', '120',
    '1990', '1', 'tom', '7', '121',
    '1990', '1', 'alice', '456', '122',
    '1990', '2', 'alice', '4', '123',
    '1991', '2', 'tom', '678', '124',
    '1992', '3', 'bob', '664', '125',
    '1992', '4', 'bob', '36', '126',
]

how to use


// table of data you want to aggregate
const buf = [
    'year', 'month', 'name', 'sales', 'budgets',
    '1990', '0', 'tom', '123', '120',
    '1990', '1', 'tom', '7', '121',
    '1990', '1', 'alice', '456', '122',
    '1990', '2', 'alice', '4', '123',
    '1991', '2', 'tom', '678', '124',
    '1992', '3', 'bob', '664', '125',
    '1992', '4', 'bob', '36', '126',
];

// create table and preprocess to aggregate with specifing count of header
// for example, the 'buf' has 5 headers 'year', 'month', 'name', 'sales', 'budgets'
const table = frombuf(buf, 5);

// you can see table info 
console.log(JSON.stringify(table));

// configure pivot table configration and aggregate its
const a = aggregate(table, {
    rows: ['year'],
    cols: ['name'],
    sums: ['sales', 'budgets'],
});

// goal
console.log(JSON.stringify(a));

Readme

Keywords

Package Sidebar

Install

npm i agg-pivot

Weekly Downloads

4

Version

1.0.11

License

MIT

Unpacked Size

39.8 kB

Total Files

10

Last publish

Collaborators

  • r22n