# Calculation Syntax Note: When writing calculation formulas, remember that they are evaluated on a per-requirement basis. Note: If a property name contains space characters, you can escape them using a backslash `\`.

## Arithmetic operations

Syntax

Output

Description

Examples

number + number

number

• @Cost + ext@Taxes

• @Width + 2.5

number - number

number

Subtracts a number from another.

• ext@Budget - ext@Spent

• 150 - @Height

number * number

number

Multiplies two numbers.

• ext@Estimate * @Cost

• 1.2 * @Cost

number / number

number

Divides a number by another.

• @Width / @Height

• @Cost / 0.75

number % number

number

Returns the remainder of the division between two numbers.

• @Length % ext@Segment

• ext@Man\ days % 10

## Aggregation functions

Syntax

Output

Description

Examples

COUNT(requirements: requirement[])

number

Counts requirements in a given list.

• COUNT(from@Refines)

• COUNT(to@Refinesfrom@Uses)

SUM(expression: number, requirements: requirement[])

number

Computes the sum of a numeric expression evaluated on a given list of requirements.

• SUM(@Cost, from@Refines)

• SUM(ext@Estimate * @Cost, from@Refines)

• SUM(1.2 * @Cost, from@Refinesfrom@Uses)

AVG(expression: number, requirements: requirement[])

number

Computes the average of a numeric expression evaluated on a given list of requirements.

• AVG(@Cost, from@Refines)

• AVG(ext@Estimate, from@Refinesfrom@Uses)

• AVG(ext@Man\ days * 150, from@Refines)

MAX(expression: number, requirements: requirement[])

number

Computes the maximum of a numeric expression evaluated on a given list of requirements.

• MAX(@Cost, from@Refines)

• MAX(2.5 * ext@Estimate, from@Refines)

• MAX(ext@Weight, from@Refinesfrom@Uses)

MIN(expression: number, requirements: requirement[])

number

Computes the minimum of a numeric expression evaluated on a given list of requirements.

• MIN(@Cost, from@Refines)

• MIN(ext@Budget + 200, from@Refines)

• MIN(ext@Estimate, from@Refinesfrom@Uses)

## Mathematical functions

Syntax

Output

Description

Examples

ABS(value: number)

number

Returns the absolute value of a number.

• ABS(10.75)

• ABS(ext@Cost)

CEIL(value: number)

number

Returns the nearest integer greater than or equal to a number.

• CEIL(25.3)

• CEIL(@Width)

FLOOR(value: number)

number

Returns the nearest integer less than or equal to a number.

• FLOOR(3.1415)

• FLOOR(1.3 * ext@Width)

ROUND(value: number)

number

Rounds a number to the nearest integer.

• ROUND(10.5)

• ROUND(ext@Budget)

SQRT(value: number)

number

Returns the square root of a number.

• SQRT(25)

• SQRT(@Width + @Height)

MIN(value1: number, value2: number)

number

Returns the minimum value between two numbers.

• MIN(@Cost, ext@Budget)

• MIN(@Priority, 5)

MAX(value1: number, value2: number)

number

Returns the maximum value between two numbers.

• MAX(@Width, @Height)

• MAX(0, @Priority)

• POW(base: number, exponent: number)

• POWER(base: number, exponent: number)

number

Returns a number raised to a power.

• POW(2, 10)

• POWER(@Width, 2)

## Conditional functions

Syntax

Output

Description

Examples

IF(condition: boolean, success: T, failure: T) Where T can be one of the following: number, boolean or string

T

Returns one value if a condition is `true` and another if it is `false`.

• IF(@Cost > ext@Budget, ext@Budget - @Cost, 0)

• IF(key ~ ‘TN-%’, ext@Tested AND @Delivered, @Delivered)

• IF(@Priority > 3, ‘High priority’, ‘Low priority’)

COUNTIF(requirements: requirement[], condition: boolean)

number

Counts the number of requirements meeting a given condition.

• COUNTIF(from@Refines, ext@Estimate + 10 >= 25)

• COUNTIF(to@Refinesfrom@Uses, @Cost < 1500)

SUMIF(expression: number, requirements: requirement[], condition: boolean)

number

Computes the sum of a numeric expression evaluated on requirements meeting a given condition.

• SUMIF(@Cost, from@Refines, key ~ ‘TECH-%’)

• SUMIF(ext@Estimate * @Cost, from@Refines, @Width * 2 >= 120)

AVGIF(expression: number, requirements: requirement[], condition: boolean)

number

Computes the average of a numeric expression evaluated on requirements meeting a given condition.

• AVGIF(@Cost, from@Refines, @Priority = 1)

• AVGIF(ext@Estimate, from@Refinesfrom@Uses, ext@Approved AND ext@Delivered)

MAXIF(expression: number, requirements: requirement[], condition: boolean)

number

Computes the maximum value of a numeric expression evaluated on requirements meeting a given condition.

• MAXIF(@Cost, from@Refines, @Author = ‘Jane’)

• MAXIF(2.5 * ext@Estimate, from@Refines, 1.2 * @Cost > 500)

MINIF(expression: number, requirements: requirement[], condition: boolean)

number

Computes the minimum value of a numeric expression evaluated on requirements meeting a given condition.

• MINIF(@Cost, from@Refines, NOT ext@Delivered)

• MINIF(ext@Budget + 200, from@Refines, @Tested)

## Requirement expressions

Syntax

Output

Description

Examples

relationship

requirement[]

Retrieves linked requirements (parent or child) for the current requirement.

• from

• to

• from@Refines

• to@Uses

• relationship->relationship

• relationship→relationship

requirement[]

Retrieves linked requirements (parent or child with multiple levels of depth) to the current requirement.

• tofrom@Uses

• from@Refinesfrom@Uses

DISTINCT(requirements: requirement[])

requirement[]

Filters a requirement list to keep only distinct requirements.

• DISTINCT(tofrom@Uses)

• DISTINCT(from@Refinesfrom@Uses)

FILTER(requirements: requirement[], condition: boolean)

requirement[]

Filters a requirement list to keep only requirements meeting a given condition.

• FILTER(fromfrom@Uses, ext@Cost > 1000)

• FILTER(from@Teststo@Extends, ext@Approved AND ext@Delivered)

## Boolean expressions

Syntax

Output

Description

Examples

NOT boolean

boolean

Applies a logical NOT to a boolean expression.

• NOT ext@Delivered

• NOT (@Approved AND ext@Delivered)

boolean AND boolean

boolean

Applies a logical AND between two boolean expressions.

• @Tested AND true

• false AND true

boolean OR boolean

boolean

Applies a logical OR between two boolean expressions.

• ext@Approved OR true

• false OR true

• expression = expression

• expression == expression

boolean

Indicates whether two expressions are equal.

• @Priority = 1

• 1.2 * @Cost == 500

• @Author = ‘John Doe’

• expression != expression

• expression <> expression

boolean

Indicates whether two expressions are different.

• @Priority != 5

• @Width * 2 <> 120

number > number

boolean

Indicates whether a numeric expression is greater than another.

• @Cost > 200

• 1.2 * @Cost > ext@Budget

number >= number

boolean

Indicates whether a numeric expression is greater or equal to another.

• @Cost >= 100

• ext@Estimate + 10 >= 25

number < number

boolean

Indicates whether a numeric expression is less than another.

• @Cost < 1500

• ext@Man\ days < 30

number <= number

boolean

Indicates whether a numeric expression is less or equal to another.

• @Width > 6.5

• ext@Estimate <= 20

• string ~ string

• string LIKE string

• string ILIKE string

boolean

Indicates whether a string expression matches a string pattern.

• text ~ ‘%important%’

• @Author ~ ‘John%’

expression IS NULL

boolean

Indicates whether an expression is null.

• @Cost IS NULL

• ext@Delivered IS NULL

expression IS NOT NULL

boolean

Indicates whether an expression is not null.

• @Priority IS NOT NULL

• ext@Estimate IS NOT NULL

JavaScript errors detected