addMetrics
Syntax
addMetrics(engine/name, newMetrics, newMetricsSchema, [windowSize])
alias: extendMetrics
Arguments
engine is the abstract table object returned by a streaming engine function such as createTimeSeriesEngine
. Please note that addMetrics
cannot be used in createAnomalyDetectionEngine and createReactiveStateEngine.
name is a string indicating the name of a stream engine.
newMetrics is metacode indicating the new metrics to be calculated by the stream engine.
newMetricsSchema is a table object specifying the column names and data types of the new metrics in the output table.
windowSize is a positive integer indicating the length of the windows for calculation for the new metrics. It is only used for the time-series engine. It must be one of the values of windowSize in the existing time-series engine. The default value is the first value of windowSize in the existing time-series engine.
Details
Dynamically add new measures to a streaming engine.
Examples
Calculate the sum of column x with a streaming engine:
$ share streamTable(10000:0,`time`id`x, [TIMESTAMP,SYMBOL,INT]) as t
$ output1 = table(10000:0, `time`sum_x, [TIMESTAMP,INT])
$ agg1 = createTimeSeriesEngine(name=`agg1, windowSize=100, step=50, metrics=<sum(x)>, dummyTable=t, outputTable=output1, timeColumn=`time)
$ subscribeTable(tableName="t", actionName="agg1", offset=0, handler=append!{agg1}, msgAsTable=true)
$ n=500
$ time=2019.01.01T00:00:00.000+(1..n)
$ id=take(`ABC`DEF, n)
$ x=1..n
$ insert into t values(time, id, x);
$ select * from output1;
time |
sum_x |
---|---|
2019.01.01T00:00:00.050 |
1,225 |
2019.01.01T00:00:00.100 |
4,950 |
2019.01.01T00:00:00.150 |
9,950 |
2019.01.01T00:00:00.200 |
14,950 |
2019.01.01T00:00:00.300 |
24,950 |
2019.01.01T00:00:00.350 |
29,950 |
2019.01.01T00:00:00.400 |
34,950 |
2019.01.01T00:00:00.450 |
39,950 |
2019.01.01T00:00:00.500 |
44,950 |
Now add a new measure avg(x) to the stream aggregator. The new measure’s column name is avg_x and the data type is DOUBLE in the output table.
$ newMetricsSchema= table(1:0, [`avg_x], [DOUBLE])
$ addMetrics(agg1, <avg(x)>, newMetricsSchema);
$ n=300
$ time=2019.01.01T00:00:00.500+(1..n)
$ id=take(`ABC`DEF, n)
$ x=500+1..n
$ insert into t values(time, id, x);
$ select * from output1;
time |
sum_x |
avg_x |
---|---|---|
2019.01.01T00:00:00.050 |
1,225 |
|
2019.01.01T00:00:00.100 |
4,950 |
|
2019.01.01T00:00:00.150 |
9,950 |
|
2019.01.01T00:00:00.200 |
14,950 |
|
2019.01.01T00:00:00.250 |
19,950 |
|
2019.01.01T00:00:00.300 |
24,950 |
|
2019.01.01T00:00:00.350 |
29,950 |
|
2019.01.01T00:00:00.400 |
34,950 |
|
2019.01.01T00:00:00.450 |
39,950 |
|
2019.01.01T00:00:00.500 |
44,950 |
|
2019.01.01T00:00:00.550 |
49,950 |
525 |
2019.01.01T00:00:00.600 |
54,950 |
550 |
2019.01.01T00:00:00.650 |
59,950 |
599.5 |
2019.01.01T00:00:00.700 |
64,950 |
649.5 |
2019.01.01T00:00:00.750 |
69,950 |
699.5 |
2019.01.01T00:00:00.800 |
74,950 |
749.5 |