InfluxDB: Flux - Aggregation Function reduce(): Unterschied zwischen den Versionen

Aus Wiki-WebPerfect
Wechseln zu: Navigation, Suche
Zeile 24: Zeile 24:
  
  
=== Flux with the function "reduce()" in action ===
+
=== Same Flux Query but with "reduce()" in action ===
 
<pre>
 
<pre>
 
bucket = "<YOUR_BUCKET>"
 
bucket = "<YOUR_BUCKET>"

Version vom 19. Mai 2021, 12:45 Uhr

When should I use reduce()

Example

Because the raw data in my example measurement "asset_hyperv_local" has a lot of tags I use "keep()" to decrease the number of columns.

Flux

bucket = "<YOUR_BUCKET>"

from(bucket: bucket)
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => 
    r._measurement == "asset_hyperv_local" and
    r._field == "physicalmemory" and
    r.cluster =~ /C1TN7.*/
  )
  |> last()
  |> group(columns: ["cluster", "manufacturer"])
  |> keep(columns: ["_time", "_value", "cluster", "manufacturer", "_field"])


Same Flux Query but with "reduce()" in action

bucket = "<YOUR_BUCKET>"

from(bucket: bucket)
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => 
    r._measurement == "asset_hyperv_local" and
    r._field == "physicalmemory" and
    r.cluster =~ /C1TN7.*/
  )
  |> last()
  |> group(columns: ["cluster", "manufacturer"])
  |> keep(columns: ["_time", "_value", "cluster", "manufacturer", "_field"])
  |> reduce(
    fn: (r, accumulator) => ({ 
      NumberOfNodes: accumulator.NumberOfNodes + 1.0,
      SumOfPhysicalMemory: r._value + accumulator.SumOfPhysicalMemory,
    }), 
    identity: {NumberOfNodes: 0.0, SumOfPhysicalMemory: 0.0}
  )