docs-v2/content/shared/sql-reference/functions/struct.md

3.6 KiB

Use struct functions to create Arrow structs in SQL queries.

named_struct

Returns an Arrow struct using the specified name and input expressions pairs.

named_struct(expression1_name, expression1_input[, ..., expression_n_name, expression_n_input])

Arguments

  • expression_n_name: Name of the column field. Must be a constant string.
  • expression_n_input: Expression to include in the output struct. Can be a constant, column, or function, and any combination of arithmetic or string operators.

get_field

{{< expand-wrapper >}} {{% expand "View named_struct query example" %}}

The following example uses the {{% influxdb3/home-sample-link %}}.

SELECT
  named_struct('time', time, 'temperature', temp, 'humidity', hum) AS named_struct
FROM
  home
WHERE
  room = 'Kitchen'
LIMIT 4
named_struct
{time: 2022-01-01T13:00:00, temperature: 22.8, humidity: 36.5}
{time: 2022-01-01T12:00:00, temperature: 22.5, humidity: 36.0}
{time: 2022-01-01T15:00:00, temperature: 22.7, humidity: 36.2}
{time: 2022-01-01T18:00:00, temperature: 23.3, humidity: 36.9}

{{% /expand %}} {{< /expand-wrapper >}}

row

Alias of struct.

struct

Returns an Arrow struct using the specified input expressions optionally named. Fields in the returned struct use the optional name or the cN naming convention. Fields in the returned struct use the cN naming convention (for example: c0, c1, c2, etc.) unless you specify custom names using the AS operator within individual expressions.

struct(expression1[, ..., expression_n])

Arguments

  • expression1, expression_n: Expression to include in the output struct. Can be a constant, column, or function, and any combination of arithmetic or string operators.

Aliases

  • row

get_field

{{< expand-wrapper >}} {{% expand "View struct query example" %}}

The following example uses the {{% influxdb3/home-sample-link %}}.

SELECT
  struct(time, temp, hum) AS struct
FROM
  home
WHERE
  room = 'Kitchen'
LIMIT 4

{{% influxdb/custom-timestamps %}}

struct
{c0: 2022-01-01T13:00:00, c1: 22.8, c2: 36.5}
{c0: 2022-01-01T12:00:00, c1: 22.5, c2: 36.0}
{c0: 2022-01-01T15:00:00, c1: 22.7, c2: 36.2}
{c0: 2022-01-01T18:00:00, c1: 23.3, c2: 36.9}

{{% /influxdb/custom-timestamps %}}

{{% /expand %}} {{% expand "View struct query example with named fields" %}}

Use the AS operator in a struct expression argument to assign a name to the struct field.

The following example uses the {{% influxdb3/home-sample-link %}}.

SELECT
  struct(time AS 'time', temp AS 'temperature', hum) AS struct
FROM
  home
WHERE
  room = 'Kitchen'
LIMIT 4

{{% influxdb/custom-timestamps %}}

struct
{time: 2022-01-01T13:00:00, temperature: 22.8, c2: 36.5}
{time: 2022-01-01T12:00:00, temperature: 22.5, c2: 36.0}
{time: 2022-01-01T15:00:00, temperature: 22.7, c2: 36.2}
{time: 2022-01-01T18:00:00, temperature: 23.3, c2: 36.9}

{{% /influxdb/custom-timestamps %}}

{{% /expand %}} {{< /expand-wrapper >}}