Formula syntax

This article contains the following subsections:

Basic syntax

Visualization formula syntax is similar to SQL.

You can describe simple expressions with usual arithmetical operations:

([Sales] - [Profit]) / 10
[OrderDate] - #2022-01-24#

More complex expressions use functions to perform calculations, aggregation, and conversion of data:

CONCAT(SUM([Total]) / [UnitCost], ' %')
AVG([WorkHours])
DATETRUNC([datetime], 'month')

Addressing dataset fields

Syntax of addressing dataset fields is similar to Transact-sql. The difference is that you need to put the field name in square brackets ([]):

[field name]

Constants

You can use constants for the following data types:

  • Integer: 42, -32456
  • Float: 0.8765, -1.701
  • Date: #2022-02-12
  • Date and time: #2022-02-12 13:14:15#
  • String: "String here"
  • Boolean: TRUE, FALSE
  • Geopoint: GEOPOINT("[55.7912,37.6872]")
  • Geopolygon: GEOPOLYGON("[[[55.75,37.52],[55.75,37.68],[55.65,37.60]],[[55.79,37.60],[55.76,37.57],[55.76,37.63]]]")

Operators

Formulas support the following operator types:

  • Arithmetical: +, -, *, /.
    ([Sales per Order] * [OrderCount]) - [Income]

    ([Profit] / [Price per Unit]) * 100
    
    [City] + ", " + [StateCode]
    

    Note

    Addition (+), deduction (-) and multiplication (*) operators change behavior depending on argument type.

  • Exponentiation: ^.

    [mass] * [speed] ^ 2
    
  • Remainder: %.

    [Total] % 10 + [Unit cost] % 10
    
  • Logical: AND, OR, NOT, IN, LIKE, IS TRUE, IS FALSE, BETWEEN.

  • Comparison: =, !=, <, <=, >, >=.

    Comparison operators allow you to create logical chains:

    1 > A > -4 > B != 8
    

Formula formatting

Write formulas in a single line:

CONCAT(SUM([Category Sales]) / [Total Sales], ' %')

... or in multiple lines:

CONCAT(
   SUM([Category Sales]) / [Total Sales],
   ' %'
)

Comments

Use comments to add explanations or to ignore parts of the formula. Visualization syntax supports two types of comments:

  • Single-line:

    -- This is a single-line comment
    
  • Multi-line:

    /* This is 
    a multi-line comment */
    

Type conversion

You can convert expression values from one type into another:

FLOAT([String_With_Numbers])
DATETIME(STR([OrderDate]) + "-" + STR([OrderTime]))
GEOPOINT([Latitude],[Longitude])

Functions for data analysis

Use functions to perform calculations, logical operations, aggregation, and conversion of data. This subsection contains most commonly used data analysis functions.

For a complete list of supported functions, see all functions reference

Aggregation functions

Use aggregation functions to calculate resulting values.

For more information on this type of functions, see aggregation functions overview.

AVG

Returns the average of the values in a set. It ignores NULL values.

AVG([Total]) * COUNTD([CustomerID])

For more information, see AVG.

COUNT

Returns the number of records from a table column.

SELECT COUNT([City])

For more information, see COUNT.

SUM

SUM_IF([Sales], [Category] = "Books")

Window functions

Use window functions to aggregate values from multiple strings without merging them into one.

For more information on this type of functions, see window functions overview.

RANK

Returns the rank of the current row if ordered by the given argument.

RANK([Profit] TOTAL)

For more information, see RANK.

MCOUNT

Returns the moving count of (non-NULL) values in a fixed-size window defined by the sort order and arguments.

MCOUNT([Profit], 3)

For more information, see MCOUNT.

Logical functions

Use logical functions for calculation branching.

For more information on this type of functions, see logical functions overview.

CASE

Compares an expression with sequence of value_1, value_2 and further, and returns the result of the first match. If no matches found, returns default_result:

CASE( 
   [expression],
   value_1, result_1,
   value_2, result_2,
   default_result
) 

For more information, see CASE.

IF

Sequentially checks logical expressions condition_1, condition 2 and further, and returns the result of the condition that shows TRUE. If all the conditions show FALSE, returns default_result:

IF(
   condition_1, result_1,
   condition_2, result_2,
   default_result
) 

For more information, see IF.

IFNULL

Returns check_value if the value isn't NULL, otherwise returns alt_value:

IFNULL(check_value, alt_value)

For more information, see IFNULL.

ISNULL

Returns TRUE if expression is NULL, otherwise returns FALSE:

ISNULL(expression)

For more information, see ISNULL.

ZN

Returns the value of expression if it isn't NULL, otherwise returns 0 (a number):

ZN(expression)

For more information, see ZN.

String functions

Use string functions to process character data.

You can set strings with single and double quotes. You can use one type of quotes inside another:

CONCAT('"', [Product Name], '"')

Use special characters to perform string data conversions in formulas:

REPLACE([OfficeAddress], "\n", " ")

For more information on this type of functions, see string functions overview.

CONCAT

Joins two or more strings into one.

CONCAT([Total Sales], "$")

For more information, see CONCAT.

Replace

Replaces all the instances of a specified string value with a provided string value.

REPLACE([OrderID], "2022", [Month])

For more information, see REPLACE.

TRIM

Removes leading or trailing whitespaces from the string.

TRIM(" String ")

For more information, see TRIM.

Text markup functions

Use markup functions to create text markup:

MARKUP(BOLD("This"), " ", ITALIC("is"), " ", URL("https://example.com/", [LinkName]))

For more information on this type of functions, see text markup functions overview.