analytics
Présentation
Ce plugin est propose une série d'instructions pour croiser, compter, trier, agréger des flux d’objets Javascript
installation
npm install @ezs/analytics
usage
Table of Contents
keys
Take Object
and throws all its keys
[{
}]
Script:
[use]
plugin = analytics
[keys]
Output:
[
]
Parameters
Returns Object
count
Take Object
object getting some fields with json path, and do ...
[{
}]
Script:
[use]
plugin = analytics
[count]
Output:
[
]
Parameters
Returns Object
output
Format the output with data a meta
Parameters
indent
boolean indent or not (optional, default false
)meta
Array<string>? fields to be considered as metadata
object
Examples
Input
[
{ _id: 1, value: 2, total: 2 },
{ _id: 2, value: 4, total: 2 }
]
Script
.pipe(ezs('output', { meta: 'total' }))
Output
{
data: [
{ _id: 1, value: 2 },
{ _id: 2, value: 4 }
],
meta: {
total: 2
}
}
Returns string
slice
Take Object
and throw the same object only if it is in the section of the
stream between start and start + size. stream is numbered from 1
[{
}]
Script:
[use]
plugin = analytics
[drop]
Output:
[
]
Parameters
start
Number start of the slice (optional, default 0
)size
Number size of the slice (optional, default 10
)
Returns Object
value
Take Object
object and getting the value field
[{
}]
Script:
[use]
plugin = analytics
[value]
Output:
[
]
Parameters
path
String the pah of the value field (optional, default value
)
Returns Object
drop
Take Object
and throw the same object only if there the value of the select field is not equals than a value
[{
}]
Script:
[use]
plugin = analytics
[drop]
Output:
[
]
Parameters
path
String path of the field to compare (optional, default "value"
)if
Number value to compare (optional, default ""
)
Returns Object
graph
Take Object
object getting some fields with json path, and do ...
[{
}]
Script:
[use]
plugin = analytics
[graph]
Output:
[
]
Parameters
Returns Object
maximizing
Take special Object
like {id, value}
and replace value
with the max of value
s
[{
}]
Script:
[use]
plugin = analytics
[maximizing]
Output:
[
]
Parameters
id
String path to use for id (optional, default id
)value
String path to use for value (optional, default value
)
Returns Object
pair
Take Object
object getting some fields with json path, and do ...
[{
}]
Script:
[use]
plugin = analytics
[pair]
Output:
[
]
Parameters
Returns Object
pluck
Take Object
object getting value of fields (with json path
) and throws an
object for each value
[{
}]
Script:
[use]
plugin = analytics
[pluck]
Output:
[
]
Parameters
path
String path to use form group by (optional, default id
)
Returns Object
topics
Take Object
and take values with [value] path (must be an array)
[{
}]
Script:
[use]
plugin = analytics
[topics]
Output:
[
]
Parameters
id
String path to use for id (optional, default id
)value
String path to use for value (optional, default value
)
Returns Object
exploding
Take Object
and take values with [value] path (must be an array)
and throw object of each value. The new object is build with [id] and eac value.
[{
}]
Script:
[use]
plugin = analytics
[exploding]
Output:
[
]
Parameters
id
String path to use for id (optional, default "id"
)value
String path to use for value (optional, default "value"
)
Returns Object
summing
Take special Object
like {id, value}
and replace value
with the sum of
value
s
[{
}]
Script:
[use]
plugin = analytics
[summing]
Output:
[
]
Parameters
id
String path to use for id (optional, default id
)value
String path to use for value (optional, default value
)
Returns Object
less
Take Object
and throw the same object only if the value of the selected
field is less (or equal) than a value
[{
}]
Script:
[use]
plugin = analytics
[less]
Output:
[
]
Parameters
path
String path of the field to compare (optional, default value
)than
Number value to compare (optional, default 0
)strict
Boolean less than but not equal (optional, default false
)
Returns Object
minimizing
Take special Object
like {id, value}
and replace value
with the min of
value
s
[{
}]
Script:
[use]
plugin = analytics
[drop]
Output:
[
]
Parameters
id
String path to use for id (optional, default id
)value
String path to use for value (optional, default value
)
Returns Object
groupingByEquality
Take Object
like { id, value }
and reduce all values with the same id
in a single object
[{
}]
Script:
[use]
plugin = analytics
[groupingByEquality]
Output:
[
]
Parameters
id
String path to use for id (optional, default id
)value
String path to use for value (optional, default value
)
Returns Object
distribute
Take Object
like { id, value } and throw a serie of number value
[{
}]
Script:
[use]
plugin = analytics
[distribute]
Output:
[
]
Parameters
id
String path to use for id (optional, default "id"
)value
String path to use for value (optional, default "value"
)step
String step between each valut (optional, default 1
)start
Number first value to throw (optional, default minvalueinthestream
)size
Number size of the distribution (optional, default (maxvalue-minvalue)inthestream
)default
Number default value for missing object (optional, default 0
)
Returns Object
groupingByHamming
Take Object
like { id, value }
and reduce all value
with id
which
have the same Hamming distance in a single object
[{
}]
Script:
[use]
plugin = analytics
[groupingByHamming]
Output:
[
]
Parameters
id
String path to use for id (optional, default "id"
)value
String path to use for value (optional, default "value"
)
Returns Object
aggregate
Aggregate by id and count
[{
{ id: 'x', value: 2 },
{ id: 't', value: 2 },
{ id: 'x', value: 3 },
{ id: 'x', value: 5 },
}]
Script:
[use]
plugin = analytics
[aggregate]
path = id
Output:
[
{ id: 'x', value: 3 },
{ id: 't', value: 1 },
]
Parameters
path
String path to use for id (optional, default id
)
Returns Object
groupingByLevenshtein
Take Object
like { id, value }
and reduce all value
s with
id
which have the same Levenshtein distance in a single object
Output:
[
]
Parameters
id
String path to use for id (optional, default id
)value
String path to use for value (optional, default value
)distance
Number minimal levenshtein distance to have a same id (optional, default 1
)
Returns Object
groupingByModulo
Take Object
like { id, value }
and reduce all value
s with the same
modulo computation in a ansingle object
[{
}]
Script:
[use]
plugin = analytics
[groupingByModulo]
Output:
[
]
Parameters
id
String path to use for id (optional, default id
)value
String path to use for value (optional, default value
)
Returns Object
reducing
Take Object
group value of { id, value }
objectpath
[{
{ id: 'x', value: 2 },
{ id: 't', value: 2 },
{ id: 'x', value: 3 },
{ id: 'x', value: 5 },
}]
Script:
[use]
plugin = analytics
[reducing]
Output:
[
{ id: 'x', value: [2, 3, 5] },
{ id: 't', value: [2] },
]
Parameters
id
String path to use for id (optional, default id
)value
String path to use for value (optional, default value
)
Returns Object
sort
Take all Object
and sort them with dedicated key
[{
}]
Script:
[use]
plugin = analytics
[sort]
Output:
[
]
Parameters
path
String path to use for id (optional, default id
)
Returns Object
distinct
Take Object
object getting some fields with json path, and do ...
[{
{ a: 'x', b: 'z' },
{ a: 't', b: 'z' },
{ a: 't', b: 'z' },
{ a: 'x', b: 'z' },
{ a: 'x', b: 'z' },
}]
Script:
[use]
plugin = analytics
[distinct]
path = a
Output:
[
{ id: 'x', value: 1 },
{ id: 't', value: 1 },
{ id: 't', value: 1 },
{ id: 'x', value: 1 },
{ id: 'x', value: 1 },
]
Parameters
path
String path (optional, default "id"
)
Returns Object
merging
Take special Object
like {id, value}
and replace value
with the merge of value
s
[{
}]
Script:
[use]
plugin = analytics
[merging]
Output:
[
]
Parameters
id
String path to use for id (optional, default id
)value
String path to use for value (optional, default value
)
Returns Object
filter
Take Object
and throw the same object only if there the value of the select field is equals than a value
-
[
{ id: 2000, value: 1 },
{ id: 2001, value: 2 },
{ id: 2003, value: 3 },
{ id: 2005, value: 4 },
{ id: 2007, value: 5 },
{ id: 2003, value: 3 },
{ id: 2011, value: 7 },
{ id: 2013, value: 8 },
]
Script:
[use]
plugin = analytics
[filter]
path = id
if = 2003
if = 2013
Output:
[
{ id: 2003, value: 3 },
{ id: 2003, value: 3 },
{ id: 2013, value: 8 },
]
Parameters
path
String path of the field to compare (optional, default "value"
)if
Number value to compare (optional, default ""
)
Returns Object
greater
Take Object
and throw the same object only if the value of the selected
field is greater (or equal) than a value
[{
{ id: 2000, value: 1 },
{ id: 2001, value: 2 },
{ id: 2003, value: 3 },
{ id: 2005, value: 4 },
{ id: 2007, value: 5 },
{ id: 2009, value: 6 },
{ id: 2011, value: 7 },
{ id: 2013, value: 8 },
}]
Script:
[use]
plugin = analytics
[greater]
than = 3
strict = true
Output:
[
{ id: 2005, value: 4 },
{ id: 2007, value: 5 },
{ id: 2009, value: 6 },
{ id: 2011, value: 7 },
{ id: 2013, value: 8 },
]
Parameters
path
String path of the field to compare (optional, default "value"
)than
Number value to compare (optional, default 0
)strict
Boolean greater than but not equal (optional, default false
)
Returns Object
multiply
Take Object
and throw the same object only if there the value of the select field is equals than a value
Input file:
[{
a: 1,
b: 2,
}]
Script:
[use]
plugin = analytics
[multiply]
path = factor
value = X
value = Y
value = Z
Output:
[{
a: 1,
b: 2,
factor: X
},
{
a: 1,
b: 2,
factor: Y
},
{
a: 1,
b: 2,
factor: Z
},
]
Parameters
path
String path of the field to add (optional, default "factor"
)value
String value(s) to set factor field (optional, default ""
)
Returns Object
distance
To compare 2 fields with 2 id and compute a distance
- for arrays, the distance is calculated according to the number of element in common
[{
{
id_of_a: 1,
id_of_b: 2,
a: ['x', 'y'],
b: ['x', 'z'],
},
{
id_of_a: 1,
id_of_b: 3,
a: ['x', 'y'],
b: ['y', 'z'],
},
{
id_of_a: 1,
id_of_b: 4,
a: ['x', 'y'],
b: ['z'],
},
{
id_of_a: 1,
id_of_b: 5,
a: ['x', 'y'],
b: ['x', 'y', 'z'],
},
{
id_of_a: 1,
id_of_b: 6,
a: ['x', 'y'],
b: ['x', 'y'],
},
}]
Script:
[use]
plugin = analytics
[distance]
id = id_of_a
id = id_of_b
value = a
value = b
Output:
[
{ id: [ 1, 2 ], value: 0.5 },
{ id: [ 1, 3 ], value: 0.5 },
{ id: [ 1, 4 ], value: 0 },
{ id: [ 1, 5 ], value: 0.8 },
{ id: [ 1, 6 ], value: 1 }
]
]
Parameters
path
String path (optional, default value
)
Returns Object
segment
Take Object
object getting some fields with json path, and throw segment of
value. Ex: get [a,b,c]
and throw [a,b], [b,c]
[{
{
id: 'doc#1',
value: [
1,
2,
3,
4,
],
},
{
id: 'doc#2',
value: [
4,
5,
6,
],
},
{
id: 'doc#3',
value: [
6,
7,
]
},
{
id: 'doc#4',
value: [
1,
2,
3,
4,
5,
6,
7,
]
}
}]
Script:
[use]
plugin = analytics
[segment]
path = value
Output:
[
{ id: [ 1, 2 ], value: 1 }
{ id: [ 2, 3 ], value: 1 }
{ id: [ 3, 4 ], value: 1 }
{ id: [ 4, 5 ], value: 1 }
{ id: [ 5, 6 ], value: 1 }
{ id: [ 6, 7 ], value: 1 }
{ id: [ 1, 2 ], value: 1 }
{ id: [ 2, 3 ], value: 1 }
{ id: [ 3, 4 ], value: 1 }
{ id: [ 4, 5 ], value: 1 }
{ id: [ 5, 6 ], value: 1 }
{ id: [ 6, 7 ], value: 1 }
]
Parameters
path
String path (optional, default value
)aggregate
Boolean aggregate all values for all paths (or not) (optional, default true
)
Returns Object
tune
Take all Object
and sort them with selected field
[{
}]
Script:
[use]
plugin = analytics
[tune]
Output:
[
]
Parameters
path
String path to use for the sort key (optional, default id
)
Returns Object
statistics
Compute some statistics from one or more fields
Parameters
path
String path of the value field (optional, default value
)target
String path of statistics in output object (optional, default _statistics
)
Examples
Input
```json
[
{ a: 1, },
{ a: 1, },
{ a: 2, },
{ a: 3, },
{ a: 3, },
{ a: 3, },
]
```
Script
```ini
[use]
plugin = analytics
[statistics]
path = a
```
Output
```json
[{
"a": 1,
"stats": {
"a": {
"sample": 2,
"frequency": 1,
"percentage": 25,
"sum": 4,
"count": 3,
"min": 1,
"max": 2,
"mean": 1.3333333333333333,
"range": 1,
"midrange": 0.5,
"variance": 0.2222222222222222,
"deviation": 0.4714045207910317,
"population": 2
}
}
},
{
"a": 1,
"stats": {
"a": {
"sample": 2,
"frequency": 1,
"percentage": 25,
"sum": 4,
"count": 3,
"min": 1,
"max": 2,
"mean": 1.3333333333333333,
"range": 1,
"midrange": 0.5,
"variance": 0.2222222222222222,
"deviation": 0.4714045207910317,
"population": 2
}
}
},
{
"a": 2,
"stats": {
"a": {
"sample": 1,
"frequency": 0.5,
"percentage": 50,
"sum": 4,
"count": 3,
"min": 1,
"max": 2,
"mean": 1.3333333333333333,
"range": 1,
"midrange": 0.5,
"variance": 0.2222222222222222,
"deviation": 0.4714045207910317,
"population": 2
}
}
}]
```
Returns Object