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