7.9 KiB
title | description | menu | weight | aliases | influxdb/v2.0/tags | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Operators in the Flux language | Flux supports many types of operators including arithmetic operators, comparison operators, function operators, and others. |
|
215 |
|
|
Flux includes the following types of operators:
- Arithmetic operators
- Comparison operators
- Logical operators
- Assignment operators
- Function operators
- String Operators
- Literal constructors
- Miscellaneous operators
Also see:
Arithmetic operators
Arithmetic operators take two numerical values (either literals or variables) and perform a calculation that returns a single numerical value.
Operator | Description | Example | Result |
---|---|---|---|
+ |
Addition | 1 + 1 |
2 |
- |
Subtraction | 3 - 2 |
1 |
* |
Multiplication | 2 * 3 |
6 |
/ |
Division | 9 / 3 |
3 |
^ |
Exponentiation | 2 ^ 3 |
8 |
% |
Modulo | 10 % 5 |
0 |
{{% note %}} In the current version of Flux, values used in arithmetic operations must be of the same numeric type (integer or float). Operations with values of different numeric types will result in a type error. {{% /note %}}
Comparison operators
Comparison operators compare expressions and return true or false based on the comparison.
Operator | Description | Example | Result |
---|---|---|---|
== |
Equal to | "abc" == "abc" |
true |
!= |
Not equal to | "abc" != "def" |
true |
< |
Less than | 1 < 2 |
true |
> |
Greater than | 1 > 2 |
false |
<= |
Less than or equal | 1 <= 2 |
true |
>= |
Greater than or equal | 1 >= 2 |
false |
=~ |
Equal to regular expression | "abc" =~ /[a-z]*/ |
true |
!~ |
Not equal to regular expression | "abc" !~ /[0-9]*/ |
true |
{{% note %}}
The >
and <
operators also compare the lexicographic order of strings.
{{% /note %}}
Logical operators
Operator | Description |
---|---|
exists |
Returns false if right operand is null. Otherwise, returns true . |
and |
Returns true if both operands are true. Otherwise, returns false . |
or |
Returns true if any operand is true. Otherwise, returns false . |
Short-circuit evaluation
Flux logical operators observe the short-circuiting behavior seen in other programming languages. The evaluation of the left-hand (LH) operand determines if the right-hand (RH) operand is evaluated.
- When the operator is
and
and the LH operand evaluates tofalse
, the evaluation returnsfalse
without evaluating the RH operand. - When the operator is
or
and the LH operand evaluates totrue
, the evaluation returnstrue
without evaluating the RH operand.
Assignment operators
An assignment operator assigns a value to its left operand based on the value of its right operand.
Operator | Description | Example | Meaning |
---|---|---|---|
= |
Assign value of left expression to right expression | x = y |
x = y |
Function operators
Function operators facilitate the creation of functions and control the flow of data through operations.
Operator | Description | Examples | Meaning |
---|---|---|---|
|> |
Pipe‑forward | data |> function() |
Tables contained in the "data" variable are piped into the function. |
<- |
Pipe‑receive | tables=<- |
The "tables" variable or parameter is assigned to data piped into the operation. This operator is used for any data type passed into a function; not just table data. |
=> |
Arrow | (r) => r.tag1 == "tagvalue" |
The arrow passes a record or parameters into function operations. |
() |
Function call | top(n:10) |
Call the top function setting the n parameter to 10 and perform the associated operations. |
See Custom functions for examples of function operators is use.
String Operators
String operators concatenate or compare string values.
Operator | Description | Examples | Result |
---|---|---|---|
+ |
Concatenation | "ab" + "c" |
"abc" |
< |
Less than in lexicographic order | "ant" < "bee" |
true |
> |
Greater than in lexicographic order | "ant" > "bee" |
false |
Literal constructors
Literal constructors define fixed values.
Operator | Description |
---|---|
[ ] |
List / array |
{ } |
Record |
"" |
String |
Miscellaneous operators
Operator | Description | Example |
---|---|---|
( ) |
Logical grouping | r._value / (r._value * 2) |
, |
Sequence delimiter | item1, item2, item3 |
: |
Key-value separator | {name: "Bob"} |
. |
Member access / dot reference | r._measurement |
Operator precedence
The table below outlines operator precedence. Operators with a lower number have higher precedence.
Precedence | Operator | Description |
---|---|---|
1 | a() |
Function call |
a[] |
Member or index access | |
. |
Member access | |
2 | * / |
Multiplication and division |
3 | + - |
Addition and subtraction |
4 | == != |
Comparison operators |
< <= |
||
> >= |
||
=~ !~ |
||
5 | not |
Unary logical operator |
exists |
Null check operator | |
6 | and |
Logical AND |
7 | or |
Logical OR |
8 | if then else |
Conditional |