docs-v2/content/influxdb/v2.1/query-data/flux/exists.md

2.9 KiB

title seotitle list_title description influxdb/v2.1/tags menu weight aliases related list_code_example
Check if a value exists Use Flux to check if a value exists Exists Use the `exists` operator to check if a row record contains a column or if a column's value is _null_.
exists
influxdb_2_1
name parent
Exists Query with Flux
220
/influxdb/v2.1/query-data/guides/exists/
/influxdb/v2.1/query-data/flux/query-fields/
/{{< latest "flux" >}}/stdlib/universe/filter/
##### Filter null values ```js data |> filter(fn: (r) => exists r._value) ```

Use the exists operator to check if a row record contains a column or if a column's value is null.

(r) => exists r.column

If you're just getting started with Flux queries, check out the following:

  • [Get started with Flux](/{{< latest "flux" >}}/get-started/) for a conceptual overview of Flux and parts of a Flux query.
  • Execute queries to discover a variety of ways to run your queries.

Use exists with row functions ( [filter()](/{{< latest "flux" >}}/stdlib/universe/filter/), [map()](/{{< latest "flux" >}}/stdlib/universe/map/), [reduce()](/{{< latest "flux" >}}/stdlib/universe/reduce/)) to check if a row includes a column or if the value for that column is null.

Filter null values

from(bucket: "example-bucket")
    |> range(start: -5m)
    |> filter(fn: (r) => exists r._value)

Map values based on existence

from(bucket: "default")
    |> range(start: -30s)
    |> map(
        fn: (r) => ({r with
            human_readable: if exists r._value then
                "${r._field} is ${string(v: r._value)}."
            else
                "${r._field} has no value.",
        }),
    )

Ignore null values in a custom aggregate function

customSumProduct = (tables=<-) => tables
    |> reduce(
        identity: {sum: 0.0, product: 1.0},
        fn: (r, accumulator) => ({r with
            sum: if exists r._value then
                r._value + accumulator.sum
            else
                accumulator.sum,
            product: if exists r._value then
                r.value * accumulator.product
            else
                accumulator.product,
        }),
    )

Check if a statically defined record contains a key

When you use the record literal syntax to statically define a record, Flux knows the record type and what keys to expect.

  • If the key exists in the static record, exists returns true.
  • If the key does not exist in the static record, because the record type is statically known, exists returns an error.
import "internal/debug"

p = {
    firstName: "John",
    lastName: "Doe",
    age: 42,
}

exists p.firstName
// Returns true

exists p.height
// Returns "error: record is missing label height"