2.2 KiB
2.2 KiB
title | seotitle | list_title | description | menu | weight | list_code_example | ||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Check if a value exists | Use Flux to check if a value exists | Exists | Use the Flux `exists` operator to check if a record contains a key or if that key's value is `null`. |
|
20 | ##### Filter null values ```js data |> filter(fn: (r) => exists r._value) ``` |
Use the Flux exists
operator to check if a record contains a key or if that
key's value is null
.
p = {firstName: "John", lastName: "Doe", age: 42}
exists p.firstName
// Returns true
exists p.height
// Returns false
If you're just getting started with Flux queries, check out the following:
- Get started with Flux 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 "influxdb" "v2" >}}/reference/flux/stdlib/built-in/transformations/filter/),
[map()
](/{{< latest "influxdb" "v2" >}}/reference/flux/stdlib/built-in/transformations/map/),
[reduce()
](/{{< latest "influxdb" "v2" >}}/reference/flux/stdlib/built-in/transformations/aggregates/reduce/))
to check if a row includes a column or if the value for that column is null
.
Filter null values
from(bucket: "db/rp")
|> 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
})
)