From 6a09ba9f17d3ab187987cef14049f9abea315c86 Mon Sep 17 00:00:00 2001 From: Scott Anderson Date: Thu, 25 Aug 2022 09:00:52 -0600 Subject: [PATCH] Update 'exists' guide with correct static example (#4388) * update exists guide with correct static example, closes #4387 * port exists changes back to all exists guides --- content/influxdb/v1.7/flux/guides/exists.md | 96 ++++++++++++------- content/influxdb/v1.8/flux/guides/exists.md | 96 ++++++++++++------- .../influxdb/v2.0/query-data/flux/exists.md | 92 +++++++++++------- .../influxdb/v2.1/query-data/flux/exists.md | 48 +++++++--- .../influxdb/v2.2/query-data/flux/exists.md | 48 +++++++--- .../influxdb/v2.3/query-data/flux/exists.md | 48 +++++++--- .../influxdb/v2.4/query-data/flux/exists.md | 51 +++++++--- 7 files changed, 322 insertions(+), 157 deletions(-) diff --git a/content/influxdb/v1.7/flux/guides/exists.md b/content/influxdb/v1.7/flux/guides/exists.md index fafb64a65..e70405e47 100644 --- a/content/influxdb/v1.7/flux/guides/exists.md +++ b/content/influxdb/v1.7/flux/guides/exists.md @@ -3,8 +3,8 @@ title: Check if a value exists seotitle: Use Flux to check if a value exists list_title: Exists description: > - Use the Flux `exists` operator to check if a record contains a key or if that - key's value is `null`. + Use the `exists` operator to check if a row record contains a column or if a + column's value is _null_. menu: influxdb_1_7: name: Exists @@ -20,63 +20,87 @@ list_code_example: | ``` --- -Use the Flux `exists` operator to check if a record contains a key or if that -key's value is `null`. +Use the `exists` operator to check if a row record contains a column or if a +column's value is _null_. ```js -p = {firstName: "John", lastName: "Doe", age: 42} - -exists p.firstName -// Returns true - -exists p.height -// Returns false +(r) => exists r.column ``` If you're just getting started with Flux queries, check out the following: -- [Get started with Flux](/influxdb/v1.7/flux/get-started/) for a conceptual overview of Flux and parts of a Flux query. -- [Execute queries](/influxdb/v1.7/flux/guides/execute-queries/) to discover a variety of ways to run your queries. +- [Get started with Flux](/{{< latest "flux" >}}/get-started/) for a conceptual overview of Flux and parts of a Flux query. +- [Execute queries](/influxdb/v2.4/query-data/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`. +to check if a row includes a column or if the value for that column is _null_. #### Filter null values + ```js -from(bucket: "db/rp") - |> range(start: -5m) - |> filter(fn: (r) => exists r._value) +from(bucket: "example-bucket") + |> range(start: -5m) + |> filter(fn: (r) => exists r._value) ``` #### Map values based on existence + ```js 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." - })) + |> 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 + ```js -customSumProduct = (tables=<-) => - tables +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 - }) + 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](/flux/v0.x/data-types/composite/record/#record-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. + +```js +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" +``` diff --git a/content/influxdb/v1.8/flux/guides/exists.md b/content/influxdb/v1.8/flux/guides/exists.md index 27a9085e7..13a2469b7 100644 --- a/content/influxdb/v1.8/flux/guides/exists.md +++ b/content/influxdb/v1.8/flux/guides/exists.md @@ -3,8 +3,8 @@ title: Check if a value exists seotitle: Use Flux to check if a value exists list_title: Exists description: > - Use the Flux `exists` operator to check if a record contains a key or if that - key's value is `null`. + Use the `exists` operator to check if a row record contains a column or if a + column's value is _null_. menu: influxdb_1_8: name: Exists @@ -20,63 +20,87 @@ list_code_example: | ``` --- -Use the Flux `exists` operator to check if a record contains a key or if that -key's value is `null`. +Use the `exists` operator to check if a row record contains a column or if a +column's value is _null_. ```js -p = {firstName: "John", lastName: "Doe", age: 42} - -exists p.firstName -// Returns true - -exists p.height -// Returns false +(r) => exists r.column ``` If you're just getting started with Flux queries, check out the following: -- [Get started with Flux](/influxdb/v1.8/flux/get-started/) for a conceptual overview of Flux and parts of a Flux query. -- [Execute queries](/influxdb/v1.8/flux/guides/execute-queries/) to discover a variety of ways to run your queries. +- [Get started with Flux](/{{< latest "flux" >}}/get-started/) for a conceptual overview of Flux and parts of a Flux query. +- [Execute queries](/influxdb/v2.4/query-data/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`. +to check if a row includes a column or if the value for that column is _null_. #### Filter null values + ```js -from(bucket: "db/rp") - |> range(start: -5m) - |> filter(fn: (r) => exists r._value) +from(bucket: "example-bucket") + |> range(start: -5m) + |> filter(fn: (r) => exists r._value) ``` #### Map values based on existence + ```js 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." - })) + |> 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 + ```js -customSumProduct = (tables=<-) => - tables +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 - }) + 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](/flux/v0.x/data-types/composite/record/#record-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. + +```js +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" +``` diff --git a/content/influxdb/v2.0/query-data/flux/exists.md b/content/influxdb/v2.0/query-data/flux/exists.md index 60dc55cec..ed0df123b 100644 --- a/content/influxdb/v2.0/query-data/flux/exists.md +++ b/content/influxdb/v2.0/query-data/flux/exists.md @@ -3,8 +3,8 @@ title: Check if a value exists seotitle: Use Flux to check if a value exists list_title: Exists description: > - Use the Flux `exists` operator to check if a record contains a key or if that - key's value is `null`. + Use the `exists` operator to check if a row record contains a column or if a + column's value is _null_. influxdb/v2.0/tags: [exists] menu: influxdb_2_0: @@ -24,63 +24,87 @@ list_code_example: | ``` --- -Use the Flux `exists` operator to check if a record contains a key or if that -key's value is `null`. +Use the `exists` operator to check if a row record contains a column or if a +column's value is _null_. ```js -p = {firstName: "John", lastName: "Doe", age: 42} - -exists p.firstName -// Returns true - -exists p.height -// Returns false +(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](/influxdb/v2.0/query-data/execute-queries/) to discover a variety of ways to run your queries. +- [Execute queries](/influxdb/v2.4/query-data/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`. +to check if a row includes a column or if the value for that column is _null_. #### Filter null values + ```js from(bucket: "example-bucket") - |> range(start: -5m) - |> filter(fn: (r) => exists r._value) + |> range(start: -5m) + |> filter(fn: (r) => exists r._value) ``` #### Map values based on existence + ```js 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." - })) + |> 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 + ```js -customSumProduct = (tables=<-) => - tables +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 - }) + 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](/flux/v0.x/data-types/composite/record/#record-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. + +```js +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" +``` diff --git a/content/influxdb/v2.1/query-data/flux/exists.md b/content/influxdb/v2.1/query-data/flux/exists.md index 2af8d69c2..a7d7fd909 100644 --- a/content/influxdb/v2.1/query-data/flux/exists.md +++ b/content/influxdb/v2.1/query-data/flux/exists.md @@ -3,8 +3,8 @@ title: Check if a value exists seotitle: Use Flux to check if a value exists list_title: Exists description: > - Use the Flux `exists` operator to check if a record contains a key or if that - key's value is `null`. + Use the `exists` operator to check if a row record contains a column or if a + column's value is _null_. influxdb/v2.1/tags: [exists] menu: influxdb_2_1: @@ -24,31 +24,26 @@ list_code_example: | ``` --- -Use the Flux `exists` operator to check if a record contains a key or if that -key's value is `null`. +Use the `exists` operator to check if a row record contains a column or if a +column's value is _null_. ```js -p = {firstName: "John", lastName: "Doe", age: 42} - -exists p.firstName -// Returns true - -exists p.height -// Returns false +(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](/influxdb/v2.1/query-data/execute-queries/) to discover a variety of ways to run your queries. +- [Execute queries](/influxdb/v2.4/query-data/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`. +to check if a row includes a column or if the value for that column is _null_. #### Filter null values + ```js from(bucket: "example-bucket") |> range(start: -5m) @@ -56,6 +51,7 @@ from(bucket: "example-bucket") ``` #### Map values based on existence + ```js from(bucket: "default") |> range(start: -30s) @@ -70,6 +66,7 @@ from(bucket: "default") ``` #### Ignore null values in a custom aggregate function + ```js customSumProduct = (tables=<-) => tables |> reduce( @@ -86,3 +83,28 @@ customSumProduct = (tables=<-) => tables }), ) ``` + +#### Check if a statically defined record contains a key + +When you use the [record literal syntax](/flux/v0.x/data-types/composite/record/#record-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. + +```js +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" +``` diff --git a/content/influxdb/v2.2/query-data/flux/exists.md b/content/influxdb/v2.2/query-data/flux/exists.md index ec900c312..ebfc1aedb 100644 --- a/content/influxdb/v2.2/query-data/flux/exists.md +++ b/content/influxdb/v2.2/query-data/flux/exists.md @@ -3,8 +3,8 @@ title: Check if a value exists seotitle: Use Flux to check if a value exists list_title: Exists description: > - Use the Flux `exists` operator to check if a record contains a key or if that - key's value is `null`. + Use the `exists` operator to check if a row record contains a column or if a + column's value is _null_. influxdb/v2.2/tags: [exists] menu: influxdb_2_2: @@ -24,31 +24,26 @@ list_code_example: | ``` --- -Use the Flux `exists` operator to check if a record contains a key or if that -key's value is `null`. +Use the `exists` operator to check if a row record contains a column or if a +column's value is _null_. ```js -p = {firstName: "John", lastName: "Doe", age: 42} - -exists p.firstName -// Returns true - -exists p.height -// Returns false +(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](/influxdb/v2.2/query-data/execute-queries/) to discover a variety of ways to run your queries. +- [Execute queries](/influxdb/v2.4/query-data/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`. +to check if a row includes a column or if the value for that column is _null_. #### Filter null values + ```js from(bucket: "example-bucket") |> range(start: -5m) @@ -56,6 +51,7 @@ from(bucket: "example-bucket") ``` #### Map values based on existence + ```js from(bucket: "default") |> range(start: -30s) @@ -70,6 +66,7 @@ from(bucket: "default") ``` #### Ignore null values in a custom aggregate function + ```js customSumProduct = (tables=<-) => tables |> reduce( @@ -86,3 +83,28 @@ customSumProduct = (tables=<-) => tables }), ) ``` + +#### Check if a statically defined record contains a key + +When you use the [record literal syntax](/flux/v0.x/data-types/composite/record/#record-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. + +```js +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" +``` diff --git a/content/influxdb/v2.3/query-data/flux/exists.md b/content/influxdb/v2.3/query-data/flux/exists.md index e2dc3e2ba..2701bb9df 100644 --- a/content/influxdb/v2.3/query-data/flux/exists.md +++ b/content/influxdb/v2.3/query-data/flux/exists.md @@ -3,8 +3,8 @@ title: Check if a value exists seotitle: Use Flux to check if a value exists list_title: Exists description: > - Use the Flux `exists` operator to check if a record contains a key or if that - key's value is `null`. + Use the `exists` operator to check if a row record contains a column or if a + column's value is _null_. influxdb/v2.3/tags: [exists] menu: influxdb_2_3: @@ -24,31 +24,26 @@ list_code_example: | ``` --- -Use the Flux `exists` operator to check if a record contains a key or if that -key's value is `null`. +Use the `exists` operator to check if a row record contains a column or if a +column's value is _null_. ```js -p = {firstName: "John", lastName: "Doe", age: 42} - -exists p.firstName -// Returns true - -exists p.height -// Returns false +(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](/influxdb/v2.3/query-data/execute-queries/) to discover a variety of ways to run your queries. +- [Execute queries](/influxdb/v2.4/query-data/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`. +to check if a row includes a column or if the value for that column is _null_. #### Filter null values + ```js from(bucket: "example-bucket") |> range(start: -5m) @@ -56,6 +51,7 @@ from(bucket: "example-bucket") ``` #### Map values based on existence + ```js from(bucket: "default") |> range(start: -30s) @@ -70,6 +66,7 @@ from(bucket: "default") ``` #### Ignore null values in a custom aggregate function + ```js customSumProduct = (tables=<-) => tables |> reduce( @@ -86,3 +83,28 @@ customSumProduct = (tables=<-) => tables }), ) ``` + +#### Check if a statically defined record contains a key + +When you use the [record literal syntax](/flux/v0.x/data-types/composite/record/#record-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. + +```js +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" +``` diff --git a/content/influxdb/v2.4/query-data/flux/exists.md b/content/influxdb/v2.4/query-data/flux/exists.md index b508dec17..7056ca9cf 100644 --- a/content/influxdb/v2.4/query-data/flux/exists.md +++ b/content/influxdb/v2.4/query-data/flux/exists.md @@ -3,8 +3,8 @@ title: Check if a value exists seotitle: Use Flux to check if a value exists list_title: Exists description: > - Use the Flux `exists` operator to check if a record contains a key or if that - key's value is `null`. + Use the Flux `exists` operator to check if a row record contains a column or if + that column's value is `null`. influxdb/v2.4/tags: [exists] menu: influxdb_2_4: @@ -24,17 +24,11 @@ list_code_example: | ``` --- -Use the Flux `exists` operator to check if a record contains a key or if that -key's value is `null`. +Use the `exists` operator to check if a row record contains a column or if a +column's value is _null_. ```js -p = {firstName: "John", lastName: "Doe", age: 42} - -exists p.firstName -// Returns true - -exists p.height -// Returns false +(r) => exists r.column ``` If you're just getting started with Flux queries, check out the following: @@ -46,9 +40,10 @@ 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`. +to check if a row includes a column or if the value for that column is _null_. #### Filter null values + ```js from(bucket: "example-bucket") |> range(start: -5m) @@ -56,6 +51,7 @@ from(bucket: "example-bucket") ``` #### Map values based on existence + ```js from(bucket: "default") |> range(start: -30s) @@ -70,6 +66,7 @@ from(bucket: "default") ``` #### Ignore null values in a custom aggregate function + ```js customSumProduct = (tables=<-) => tables |> reduce( @@ -86,3 +83,33 @@ customSumProduct = (tables=<-) => tables }), ) ``` + +#### Check if a statically defined record contains a key + +When you use the [record literal syntax](/flux/v0.x/data-types/composite/record/#record-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 exists in the static record, but has a _null_ value, `exists` returns `false`. +- If the key does not exist in the static record, because the record type is + statically known, `exists` returns an error. + +```js +import "internal/debug" + +p = { + firstName: "John", + lastName: "Doe", + age: 42, + height: debug.null(type: "int"), +} + +exists p.firstName +// Returns true + +exists p.height +// Returns false + +exists p.hairColor +// Returns "error: record is missing label hairColor" +```