To assign a string, it must be enclosed in:
- either single quotes:
'Hello'
- or double quotes:
"Hello"
When working with strings, be aware that some characters have special meaning. You need to use an escape character for strings that include special characters; see Text Expressions and Escape Characters.
Parameter Types
When writing expressions, it is important to consider the type of the result. For example, you can write an expression to return the integer 3 but have defined the type of the stream attribute to be a string. If there is a mis-match between data types, when the expression is evaluated, PhixFlow stops evaluating the expression and reports an error.
The full list of types handled by PhixFlow is shown in the following table.
Type | Description |
---|---|
Array | A list values, e.g. [1,2,3]. For details about what other values arrays can hold and Array handling in general see Arrays and Record Sets |
Date | A date. For details about date manipulation functions go to Date Functions |
Datetime | A date and time. For details about date manipulation functions go to Date Functions |
Float | A floating point number, e.g. 3.2 or 3.0 or 0.0 |
Integer | An integer, e.g. 3 or 0 |
Number | An integer or floating point number |
String | A string value, e.g. "Hello" or the empty string "" |
Boolean | A logical value of either true or false. Any non-null, non-zero value is treated as true |
Regular Expression | Regular Expressions allow string patterns to be expressed; see Regular Expressions. |
Assigning Values to Variables
In PhixFlow, you can create your own variables using a $ symbol, for example $variableName
; see Using Variables.
In expressions that have complex calculations, you may need a variable to hold the result of a calculation. You can then reference the variable later in the expression, or in other attribute expressions for the same table. The following expression uses do() function and $-variables for a simple calculation. This expression A different expression $-variables are not really needed in simple calculations. They are useful:Expression Result do(
$A = 5,
$B = 2,
$A*$B
)
A
and$ B
do(
$c = 10, $A*$B*$C
)When to Use $-variables
Assigning Values From a Pipe
Stream attribute expressions are commonly used to fetch the value returned by a Pipe. This is simply done by suffixing the pipe name with the name of the attribute to be returned. For example:
in.accountRef
This expression causes PhixFlow to look at the pipe named "in" and return the value in the field called "accountRef".
This expression can return multiple values; see Arrays and Record Sets.
Calculating an Attribute Name
If the name of the attribute whose value you want has to be calculated based on other factors, you can assign the attribute name to a $-variable. You then use the variable instead of the attribute name itself. For example:
in.$attrName
Handling Invalid Characters
There are two options for handling an attribute name that contains invalid characters.
- Either assign that name to a variable and use the variable instead of the actual attribute.
- Or enclose the name in quotes, for example:
in.'account-ref'
.
Mathematical Operators (+, -, *, /)
Several values can be combined using the usual basic mathematical operators. For example when in.numProducts
has the value 9:
Expression | Result |
---|---|
in.numProducts + 3 | 12 |
in.numProducts - 3 | 6 |
in.numProducts * 3 | 27 |
in.numProducts / 3 | 3 |
The usual calculation precedences apply, so * and / operations are carried out before + and -. When the mathematical statements involve multiple calculations, use brackets ( ) to force the correct processing order.
Expression | Result |
---|---|
3 * 3 + 3 | 12 |
3 * (3 + 3) | 18 |
String Concatenation (+)
The + operator also serves as the string concatenation operator. This means you can use + to join strings together. For example if in.customerName
returns "Smith" and in.title
returns "Mr":
Expression | Result |
---|---|
"Hello" + " to " + "you" | "Hello to you" |
"Dear " + in.title+ " " in.customerName + "," + | "Dear Mr Smith," |
If you use +
to concatenate a string and a number (integer or floating point), then PhixFlow treats the number as if it is a string. For example:
Expression | Result |
---|---|
"Hello" + 3 | "Hello3" |
"4" + 3 | "43" |
Adding Comments
It is always a good idea to add comments to your scripts to explain its steps. Comments help anyone who needs to modify the script in future.
There are two ways to tell PhixFlow that a line is a comment, and can be ignored.
Notation | Use for |
---|---|
// | short comments up to 1 line |
/* <comment> */ | multi-line comments |
For some examples of using comments, plus other style tips for expressions, see Expression Style.
Using Functions
PhixFlow has a set of functions you can use in expressions; see Functions. These functions contain arguments, which may be one of the following:
- a simple integer or string
- another expression
- one of the /wiki/spaces/HELP80/pages/1456964453
- Regular Expressions, to match patterns within strings or arrays.
The help page for each function explains what PhixFlow expects for a specific argument.
If() Function
It is common to want to evaluate whether or not data meets a condition. To do this use the if() function in an expression. This function has 3 arguments.
if( //argument 1 - the condition _out.AppleHarvestDate < _toDate('20210101'), //argument 2 - return this if true 1, //argument 3 - return this if false 0 )
In this expression, the first argument is the condition, which is also an expression. This selects records that have a date before 1st January 2021. The remaining arguments are simple integers - for records that:
- meet the condition, PhixFlow returns 1 to indicate true.
- do not meet the condition, PhixFlow returns 0 to indicate false.
Alternatively, the expression could return strings, which must be enclosed in quote marks.
if( _out.AppleHarvestDate < _toDate('20210101'), "true", "false" )
Multiline Statements and $-variables
When you are working with more complex expression, you may have several different statements to evaluate first. To group statements together, use the do() function.
In multi-line statements, you usually need to assign the value of an expression to a $-variable, to use later in the expression. For example:
Expression | Result |
---|---|
| "Dear Mr Smith" |
Statements in the do() function end in a comma, except the last one.
The value of an expression that is used, is the value of the last statement to be evaluated. In simple expressions, such as the example above, the last statement to be evaluated is the last line. However, in Conditional Statements, the last statement evaluated is not always the last statement in the expression. For example:
Expression | Result |
---|---|
| 45 if the customer's name is "Smith" but otherwise the value 36. |
See Also
- Expressions and Scripts topic page for links to more information.