832 lines
17 KiB
Markdown
832 lines
17 KiB
Markdown
|
---
|
||
|
title: DerivativeNode
|
||
|
description: >
|
||
|
DerivativeNode computes the derivative of a stream or batch. The derivative is computed on a single field and behaves similarly to the InfluxQL derivative function.
|
||
|
note: Auto generated by tickdoc
|
||
|
menu:
|
||
|
kapacitor_v1:
|
||
|
name: DerivativeNode
|
||
|
identifier: derivative_node
|
||
|
weight: 100
|
||
|
parent: nodes
|
||
|
aliases:
|
||
|
- /kapacitor/v1/nodes/derivative_node/
|
||
|
---
|
||
|
|
||
|
The `derivative` node computes the derivative of a stream or batch.
|
||
|
The derivative is computed on a single field
|
||
|
and behaves similarly to the InfluxQL derivative
|
||
|
function. Kapacitor has its own implementation
|
||
|
of the derivative function, and, as a result, is
|
||
|
not part of the normal InfluxQL functions.
|
||
|
|
||
|
Example:
|
||
|
|
||
|
|
||
|
```js
|
||
|
stream
|
||
|
|from()
|
||
|
.measurement('net_rx_packets')
|
||
|
|derivative('value')
|
||
|
.unit(1s) // default
|
||
|
.nonNegative()
|
||
|
...
|
||
|
```
|
||
|
|
||
|
Computes the derivative via:
|
||
|
(current - previous ) / ( time_difference / unit)
|
||
|
|
||
|
The derivative is computed for each point, and
|
||
|
because of boundary conditions the first point is
|
||
|
dropped.
|
||
|
|
||
|
|
||
|
### Constructor
|
||
|
|
||
|
| Chaining Method | Description |
|
||
|
|:---------|:---------|
|
||
|
| **derivative ( `field` `string`)** | Create a new node that computes the derivative of adjacent points. |
|
||
|
|
||
|
### Property Methods
|
||
|
|
||
|
| Setters | Description |
|
||
|
|:---|:---|
|
||
|
| **[as](#as) ( `value` `string`)** | The new name of the derivative field. Default is the name of the field used when calculating the derivative. |
|
||
|
| **[nonNegative](#nonnegative) ( )** | If called the derivative will skip negative results. |
|
||
|
| **[quiet](#quiet) ( )** | Suppress all error logging events from this node. |
|
||
|
| **[unit](#unit) ( `value` `time.Duration`)** | The time unit of the resulting derivative value. Default: 1s |
|
||
|
|
||
|
|
||
|
|
||
|
### Chaining Methods
|
||
|
[Alert](#alert),
|
||
|
[Barrier](#barrier),
|
||
|
[Bottom](#bottom),
|
||
|
[ChangeDetect](#changedetect),
|
||
|
[Combine](#combine),
|
||
|
[Count](#count),
|
||
|
[CumulativeSum](#cumulativesum),
|
||
|
[Deadman](#deadman),
|
||
|
[Default](#default),
|
||
|
[Delete](#delete),
|
||
|
[Derivative](#derivative),
|
||
|
[Difference](#difference),
|
||
|
[Distinct](#distinct),
|
||
|
[Ec2Autoscale](#ec2autoscale),
|
||
|
[Elapsed](#elapsed),
|
||
|
[Eval](#eval),
|
||
|
[First](#first),
|
||
|
[Flatten](#flatten),
|
||
|
[GroupBy](#groupby),
|
||
|
[HoltWinters](#holtwinters),
|
||
|
[HoltWintersWithFit](#holtwinterswithfit),
|
||
|
[HttpOut](#httpout),
|
||
|
[HttpPost](#httppost),
|
||
|
[InfluxDBOut](#influxdbout),
|
||
|
[Join](#join),
|
||
|
[K8sAutoscale](#k8sautoscale),
|
||
|
[KapacitorLoopback](#kapacitorloopback),
|
||
|
[Last](#last),
|
||
|
[Log](#log),
|
||
|
[Max](#max),
|
||
|
[Mean](#mean),
|
||
|
[Median](#median),
|
||
|
[Min](#min),
|
||
|
[Mode](#mode),
|
||
|
[MovingAverage](#movingaverage),
|
||
|
[Percentile](#percentile),
|
||
|
[Sample](#sample),
|
||
|
[Shift](#shift),
|
||
|
[Sideload](#sideload),
|
||
|
[Spread](#spread),
|
||
|
[StateCount](#statecount),
|
||
|
[StateDuration](#stateduration),
|
||
|
[Stats](#stats),
|
||
|
[Stddev](#stddev),
|
||
|
[Sum](#sum),
|
||
|
[SwarmAutoscale](#swarmautoscale),
|
||
|
[Top](#top),
|
||
|
[Trickle](#trickle),
|
||
|
[Union](#union),
|
||
|
[Where](#where),
|
||
|
[Window](#window)
|
||
|
|
||
|
---
|
||
|
|
||
|
## Properties
|
||
|
|
||
|
Property methods modify state on the calling node.
|
||
|
They do not add another node to the pipeline, and always return a reference to the calling node.
|
||
|
Property methods are marked using the `.` operator.
|
||
|
|
||
|
|
||
|
### As
|
||
|
|
||
|
The new name of the derivative field.
|
||
|
Default is the name of the field used
|
||
|
when calculating the derivative.
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative.as(value string)
|
||
|
```
|
||
|
|
||
|
|
||
|
### NonNegative
|
||
|
|
||
|
If called the derivative will skip negative results.
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative.nonNegative()
|
||
|
```
|
||
|
|
||
|
### Quiet
|
||
|
|
||
|
Suppress all error logging events from this node.
|
||
|
|
||
|
```js
|
||
|
derivative.quiet()
|
||
|
```
|
||
|
|
||
|
|
||
|
### Unit
|
||
|
|
||
|
The time unit of the resulting derivative value.
|
||
|
Default: 1s
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative.unit(value time.Duration)
|
||
|
```
|
||
|
|
||
|
|
||
|
## Chaining Methods
|
||
|
|
||
|
Chaining methods create a new node in the pipeline as a child of the calling node.
|
||
|
They do not modify the calling node.
|
||
|
Chaining methods are marked using the `|` operator.
|
||
|
|
||
|
|
||
|
### Alert
|
||
|
|
||
|
Create an alert node, which can trigger alerts.
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative|alert()
|
||
|
```
|
||
|
|
||
|
Returns: [AlertNode](/kapacitor/v1/reference/nodes/alert_node/)
|
||
|
|
||
|
### Barrier
|
||
|
|
||
|
Create a new Barrier node that emits a BarrierMessage periodically.
|
||
|
|
||
|
One BarrierMessage will be emitted every period duration.
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative|barrier()
|
||
|
```
|
||
|
|
||
|
Returns: [BarrierNode](/kapacitor/v1/reference/nodes/barrier_node/)
|
||
|
|
||
|
### Bottom
|
||
|
|
||
|
Select the bottom `num` points for `field` and sort by any extra tags or fields.
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative|bottom(num int64, field string, fieldsAndTags ...string)
|
||
|
```
|
||
|
|
||
|
Returns: [InfluxQLNode](/kapacitor/v1/reference/nodes/influx_q_l_node/)
|
||
|
|
||
|
### ChangeDetect
|
||
|
|
||
|
Create a new node that only emits new points if different from the previous point.
|
||
|
|
||
|
```js
|
||
|
derivative|changeDetect(field string)
|
||
|
```
|
||
|
|
||
|
Returns: [ChangeDetectNode](/kapacitor/v1/reference/nodes/change_detect_node/)
|
||
|
|
||
|
### Combine
|
||
|
|
||
|
Combine this node with itself. The data is combined on timestamp.
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative|combine(expressions ...ast.LambdaNode)
|
||
|
```
|
||
|
|
||
|
Returns: [CombineNode](/kapacitor/v1/reference/nodes/combine_node/)
|
||
|
|
||
|
### Count
|
||
|
|
||
|
Count the number of points.
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative|count(field string)
|
||
|
```
|
||
|
|
||
|
Returns: [InfluxQLNode](/kapacitor/v1/reference/nodes/influx_q_l_node/)
|
||
|
|
||
|
### CumulativeSum
|
||
|
|
||
|
Compute a cumulative sum of each point that is received.
|
||
|
A point is emitted for every point collected.
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative|cumulativeSum(field string)
|
||
|
```
|
||
|
|
||
|
Returns: [InfluxQLNode](/kapacitor/v1/reference/nodes/influx_q_l_node/)
|
||
|
|
||
|
### Deadman
|
||
|
|
||
|
Helper function for creating an alert on low throughput, a.k.a. deadman's switch.
|
||
|
|
||
|
- Threshold: trigger alert if throughput drops below threshold in points/interval.
|
||
|
- Interval: how often to check the throughput.
|
||
|
- Expressions: optional list of expressions to also evaluate. Useful for time of day alerting.
|
||
|
|
||
|
Example:
|
||
|
|
||
|
|
||
|
```js
|
||
|
var data = stream
|
||
|
|from()...
|
||
|
// Trigger critical alert if the throughput drops below 100 points per 10s and checked every 10s.
|
||
|
data
|
||
|
|deadman(100.0, 10s)
|
||
|
//Do normal processing of data
|
||
|
data...
|
||
|
```
|
||
|
|
||
|
The above is equivalent to this example:
|
||
|
|
||
|
|
||
|
```js
|
||
|
var data = stream
|
||
|
|from()...
|
||
|
// Trigger critical alert if the throughput drops below 100 points per 10s and checked every 10s.
|
||
|
data
|
||
|
|stats(10s)
|
||
|
.align()
|
||
|
|derivative('emitted')
|
||
|
.unit(10s)
|
||
|
.nonNegative()
|
||
|
|alert()
|
||
|
.id('node \'stream0\' in task \'{{ .TaskName }}\'')
|
||
|
.message('{{ .ID }} is {{ if eq .Level "OK" }}alive{{ else }}dead{{ end }}: {{ index .Fields "emitted" | printf "%0.3f" }} points/10s.')
|
||
|
.crit(lambda: "emitted" <= 100.0)
|
||
|
//Do normal processing of data
|
||
|
data...
|
||
|
```
|
||
|
|
||
|
The `id` and `message` alert properties can be configured globally via the 'deadman' configuration section.
|
||
|
|
||
|
Since the [AlertNode](/kapacitor/v1/reference/nodes/alert_node/) is the last piece it can be further modified as usual.
|
||
|
Example:
|
||
|
|
||
|
|
||
|
```js
|
||
|
var data = stream
|
||
|
|from()...
|
||
|
// Trigger critical alert if the throughput drops below 100 points per 10s and checked every 10s.
|
||
|
data
|
||
|
|deadman(100.0, 10s)
|
||
|
.slack()
|
||
|
.channel('#dead_tasks')
|
||
|
//Do normal processing of data
|
||
|
data...
|
||
|
```
|
||
|
|
||
|
You can specify additional lambda expressions to further constrain when the deadman's switch is triggered.
|
||
|
Example:
|
||
|
|
||
|
|
||
|
```js
|
||
|
var data = stream
|
||
|
|from()...
|
||
|
// Trigger critical alert if the throughput drops below 100 points per 10s and checked every 10s.
|
||
|
// Only trigger the alert if the time of day is between 8am-5pm.
|
||
|
data
|
||
|
|deadman(100.0, 10s, lambda: hour("time") >= 8 AND hour("time") <= 17)
|
||
|
//Do normal processing of data
|
||
|
data...
|
||
|
```
|
||
|
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative|deadman(threshold float64, interval time.Duration, expr ...ast.LambdaNode)
|
||
|
```
|
||
|
|
||
|
Returns: [AlertNode](/kapacitor/v1/reference/nodes/alert_node/)
|
||
|
|
||
|
### Default
|
||
|
|
||
|
Create a node that can set defaults for missing tags or fields.
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative|default()
|
||
|
```
|
||
|
|
||
|
Returns: [DefaultNode](/kapacitor/v1/reference/nodes/default_node/)
|
||
|
|
||
|
### Delete
|
||
|
|
||
|
Create a node that can delete tags or fields.
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative|delete()
|
||
|
```
|
||
|
|
||
|
Returns: [DeleteNode](/kapacitor/v1/reference/nodes/delete_node/)
|
||
|
|
||
|
### Derivative
|
||
|
|
||
|
Create a new node that computes the derivative of adjacent points.
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative|derivative(field string)
|
||
|
```
|
||
|
|
||
|
Returns: [DerivativeNode](/kapacitor/v1/reference/nodes/derivative_node/)
|
||
|
|
||
|
### Difference
|
||
|
|
||
|
Compute the difference between points independent of elapsed time.
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative|difference(field string)
|
||
|
```
|
||
|
|
||
|
Returns: [InfluxQLNode](/kapacitor/v1/reference/nodes/influx_q_l_node/)
|
||
|
|
||
|
### Distinct
|
||
|
|
||
|
Produce batch of only the distinct points.
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative|distinct(field string)
|
||
|
```
|
||
|
|
||
|
Returns: [InfluxQLNode](/kapacitor/v1/reference/nodes/influx_q_l_node/)
|
||
|
|
||
|
### Ec2Autoscale
|
||
|
|
||
|
Create a node that can trigger autoscale events for a ec2 autoscalegroup.
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative|ec2Autoscale()
|
||
|
```
|
||
|
|
||
|
Returns: [Ec2AutoscaleNode](/kapacitor/v1/reference/nodes/ec2_autoscale_node/)
|
||
|
|
||
|
### Elapsed
|
||
|
|
||
|
Compute the elapsed time between points.
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative|elapsed(field string, unit time.Duration)
|
||
|
```
|
||
|
|
||
|
Returns: [InfluxQLNode](/kapacitor/v1/reference/nodes/influx_q_l_node/)
|
||
|
|
||
|
### Eval
|
||
|
|
||
|
Create an eval node that will evaluate the given transformation function to each data point.
|
||
|
A list of expressions may be provided and will be evaluated in the order they are given.
|
||
|
The results are available to later expressions.
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative|eval(expressions ...ast.LambdaNode)
|
||
|
```
|
||
|
|
||
|
Returns: [EvalNode](/kapacitor/v1/reference/nodes/eval_node/)
|
||
|
|
||
|
### First
|
||
|
|
||
|
Select the first point.
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative|first(field string)
|
||
|
```
|
||
|
|
||
|
Returns: [InfluxQLNode](/kapacitor/v1/reference/nodes/influx_q_l_node/)
|
||
|
|
||
|
### Flatten
|
||
|
|
||
|
Flatten points with similar times into a single point.
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative|flatten()
|
||
|
```
|
||
|
|
||
|
Returns: [FlattenNode](/kapacitor/v1/reference/nodes/flatten_node/)
|
||
|
|
||
|
### GroupBy
|
||
|
|
||
|
Group the data by a set of tags.
|
||
|
|
||
|
Can pass literal * to group by all dimensions.
|
||
|
Example:
|
||
|
|
||
|
|
||
|
```js
|
||
|
|groupBy(*)
|
||
|
```
|
||
|
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative|groupBy(tag ...interface{})
|
||
|
```
|
||
|
|
||
|
Returns: [GroupByNode](/kapacitor/v1/reference/nodes/group_by_node/)
|
||
|
|
||
|
### HoltWinters
|
||
|
|
||
|
Compute the Holt-Winters (/influxdb/v1/query_language/functions/#holt-winters) forecast of a data set.
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative|holtWinters(field string, h int64, m int64, interval time.Duration)
|
||
|
```
|
||
|
|
||
|
Returns: [InfluxQLNode](/kapacitor/v1/reference/nodes/influx_q_l_node/)
|
||
|
|
||
|
### HoltWintersWithFit
|
||
|
|
||
|
Compute the Holt-Winters (/influxdb/v1/query_language/functions/#holt-winters) forecast of a data set.
|
||
|
This method also outputs all the points used to fit the data in addition to the forecasted data.
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative|holtWintersWithFit(field string, h int64, m int64, interval time.Duration)
|
||
|
```
|
||
|
|
||
|
Returns: [InfluxQLNode](/kapacitor/v1/reference/nodes/influx_q_l_node/)
|
||
|
|
||
|
### HttpOut
|
||
|
|
||
|
Create an HTTP output node that caches the most recent data it has received.
|
||
|
The cached data is available at the given endpoint.
|
||
|
The endpoint is the relative path from the API endpoint of the running task.
|
||
|
For example, if the task endpoint is at `/kapacitor/v1/tasks/<task_id>` and endpoint is
|
||
|
`top10`, then the data can be requested from `/kapacitor/v1/tasks/<task_id>/top10`.
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative|httpOut(endpoint string)
|
||
|
```
|
||
|
|
||
|
Returns: [HTTPOutNode](/kapacitor/v1/reference/nodes/http_out_node/)
|
||
|
|
||
|
### HttpPost
|
||
|
|
||
|
Creates an HTTP Post node that POSTS received data to the provided HTTP endpoint.
|
||
|
HttpPost expects 0 or 1 arguments. If 0 arguments are provided, you must specify an
|
||
|
endpoint property method.
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative|httpPost(url ...string)
|
||
|
```
|
||
|
|
||
|
Returns: [HTTPPostNode](/kapacitor/v1/reference/nodes/http_post_node/)
|
||
|
|
||
|
### InfluxDBOut
|
||
|
|
||
|
Create an influxdb output node that will store the incoming data into InfluxDB.
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative|influxDBOut()
|
||
|
```
|
||
|
|
||
|
Returns: [InfluxDBOutNode](/kapacitor/v1/reference/nodes/influx_d_b_out_node/)
|
||
|
|
||
|
### Join
|
||
|
|
||
|
Join this node with other nodes. The data is joined on timestamp.
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative|join(others ...Node)
|
||
|
```
|
||
|
|
||
|
Returns: [JoinNode](/kapacitor/v1/reference/nodes/join_node/)
|
||
|
|
||
|
### K8sAutoscale
|
||
|
|
||
|
Create a node that can trigger autoscale events for a kubernetes cluster.
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative|k8sAutoscale()
|
||
|
```
|
||
|
|
||
|
Returns: [K8sAutoscaleNode](/kapacitor/v1/reference/nodes/k8s_autoscale_node/)
|
||
|
|
||
|
### KapacitorLoopback
|
||
|
|
||
|
Create an kapacitor loopback node that will send data back into Kapacitor as a stream.
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative|kapacitorLoopback()
|
||
|
```
|
||
|
|
||
|
Returns: [KapacitorLoopbackNode](/kapacitor/v1/reference/nodes/kapacitor_loopback_node/)
|
||
|
|
||
|
### Last
|
||
|
|
||
|
Select the last point.
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative|last(field string)
|
||
|
```
|
||
|
|
||
|
Returns: [InfluxQLNode](/kapacitor/v1/reference/nodes/influx_q_l_node/)
|
||
|
|
||
|
### Log
|
||
|
|
||
|
Create a node that logs all data it receives.
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative|log()
|
||
|
```
|
||
|
|
||
|
Returns: [LogNode](/kapacitor/v1/reference/nodes/log_node/)
|
||
|
|
||
|
### Max
|
||
|
|
||
|
Select the maximum point.
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative|max(field string)
|
||
|
```
|
||
|
|
||
|
Returns: [InfluxQLNode](/kapacitor/v1/reference/nodes/influx_q_l_node/)
|
||
|
|
||
|
### Mean
|
||
|
|
||
|
Compute the mean of the data.
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative|mean(field string)
|
||
|
```
|
||
|
|
||
|
Returns: [InfluxQLNode](/kapacitor/v1/reference/nodes/influx_q_l_node/)
|
||
|
|
||
|
### Median
|
||
|
|
||
|
Compute the median of the data.
|
||
|
|
||
|
> **Note:** This method is not a selector.
|
||
|
If you want the median point, use `.percentile(field, 50.0)`.
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative|median(field string)
|
||
|
```
|
||
|
|
||
|
Returns: [InfluxQLNode](/kapacitor/v1/reference/nodes/influx_q_l_node/)
|
||
|
|
||
|
### Min
|
||
|
|
||
|
Select the minimum point.
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative|min(field string)
|
||
|
```
|
||
|
|
||
|
Returns: [InfluxQLNode](/kapacitor/v1/reference/nodes/influx_q_l_node/)
|
||
|
|
||
|
### Mode
|
||
|
|
||
|
Compute the mode of the data.
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative|mode(field string)
|
||
|
```
|
||
|
|
||
|
Returns: [InfluxQLNode](/kapacitor/v1/reference/nodes/influx_q_l_node/)
|
||
|
|
||
|
### MovingAverage
|
||
|
|
||
|
Compute a moving average of the last window points.
|
||
|
No points are emitted until the window is full.
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative|movingAverage(field string, window int64)
|
||
|
```
|
||
|
|
||
|
Returns: [InfluxQLNode](/kapacitor/v1/reference/nodes/influx_q_l_node/)
|
||
|
|
||
|
### Percentile
|
||
|
|
||
|
Select a point at the given percentile. This is a selector function, no interpolation between points is performed.
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative|percentile(field string, percentile float64)
|
||
|
```
|
||
|
|
||
|
Returns: [InfluxQLNode](/kapacitor/v1/reference/nodes/influx_q_l_node/)
|
||
|
|
||
|
### Sample
|
||
|
|
||
|
Create a new node that samples the incoming points or batches.
|
||
|
|
||
|
One point will be emitted every count or duration specified.
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative|sample(rate interface{})
|
||
|
```
|
||
|
|
||
|
Returns: [SampleNode](/kapacitor/v1/reference/nodes/sample_node/)
|
||
|
|
||
|
### Shift
|
||
|
|
||
|
Create a new node that shifts the incoming points or batches in time.
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative|shift(shift time.Duration)
|
||
|
```
|
||
|
|
||
|
Returns: [ShiftNode](/kapacitor/v1/reference/nodes/shift_node/)
|
||
|
|
||
|
### Sideload
|
||
|
|
||
|
Create a node that can load data from external sources.
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative|sideload()
|
||
|
```
|
||
|
|
||
|
Returns: [SideloadNode](/kapacitor/v1/reference/nodes/sideload_node/)
|
||
|
|
||
|
### Spread
|
||
|
|
||
|
Compute the difference between `min` and `max` points.
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative|spread(field string)
|
||
|
```
|
||
|
|
||
|
Returns: [InfluxQLNode](/kapacitor/v1/reference/nodes/influx_q_l_node/)
|
||
|
|
||
|
### StateCount
|
||
|
|
||
|
Create a node that tracks number of consecutive points in a given state.
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative|stateCount(expression ast.LambdaNode)
|
||
|
```
|
||
|
|
||
|
Returns: [StateCountNode](/kapacitor/v1/reference/nodes/state_count_node/)
|
||
|
|
||
|
### StateDuration
|
||
|
|
||
|
Create a node that tracks duration in a given state.
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative|stateDuration(expression ast.LambdaNode)
|
||
|
```
|
||
|
|
||
|
Returns: [StateDurationNode](/kapacitor/v1/reference/nodes/state_duration_node/)
|
||
|
|
||
|
### Stats
|
||
|
|
||
|
Create a new stream of data that contains the internal statistics of the node.
|
||
|
The interval represents how often to emit the statistics based on real time.
|
||
|
This means the interval time is independent of the times of the data points the source node is receiving.
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative|stats(interval time.Duration)
|
||
|
```
|
||
|
|
||
|
Returns: [StatsNode](/kapacitor/v1/reference/nodes/stats_node/)
|
||
|
|
||
|
### Stddev
|
||
|
|
||
|
Compute the standard deviation.
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative|stddev(field string)
|
||
|
```
|
||
|
|
||
|
Returns: [InfluxQLNode](/kapacitor/v1/reference/nodes/influx_q_l_node/)
|
||
|
|
||
|
### Sum
|
||
|
|
||
|
Compute the sum of all values.
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative|sum(field string)
|
||
|
```
|
||
|
|
||
|
Returns: [InfluxQLNode](/kapacitor/v1/reference/nodes/influx_q_l_node/)
|
||
|
|
||
|
### SwarmAutoscale
|
||
|
|
||
|
Create a node that can trigger autoscale events for a Docker swarm cluster.
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative|swarmAutoscale()
|
||
|
```
|
||
|
|
||
|
Returns: [SwarmAutoscaleNode](/kapacitor/v1/reference/nodes/swarm_autoscale_node/)
|
||
|
|
||
|
### Top
|
||
|
|
||
|
Select the top `num` points for `field` and sort by any extra tags or fields.
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative|top(num int64, field string, fieldsAndTags ...string)
|
||
|
```
|
||
|
|
||
|
Returns: [InfluxQLNode](/kapacitor/v1/reference/nodes/influx_q_l_node/)
|
||
|
|
||
|
### Trickle
|
||
|
|
||
|
Create a new node that converts batch data to stream data.
|
||
|
|
||
|
```js
|
||
|
derivative|trickle()
|
||
|
```
|
||
|
|
||
|
Returns: [TrickleNode](/kapacitor/v1/reference/nodes/trickle_node/)
|
||
|
|
||
|
### Union
|
||
|
|
||
|
Perform the union of this node and all other given nodes.
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative|union(node ...Node)
|
||
|
```
|
||
|
|
||
|
Returns: [UnionNode](/kapacitor/v1/reference/nodes/union_node/)
|
||
|
|
||
|
### Where
|
||
|
|
||
|
Create a new node that filters the data stream by a given expression.
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative|where(expression ast.LambdaNode)
|
||
|
```
|
||
|
|
||
|
Returns: [WhereNode](/kapacitor/v1/reference/nodes/where_node/)
|
||
|
|
||
|
### Window
|
||
|
|
||
|
Create a new node that windows the stream by time.
|
||
|
|
||
|
NOTE: Window can only be applied to stream edges.
|
||
|
|
||
|
|
||
|
```js
|
||
|
derivative|window()
|
||
|
```
|
||
|
|
||
|
Returns: [WindowNode](/kapacitor/v1/reference/nodes/window_node/)
|