Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 32 Next »

Overview

Expressions contain brackets that contain set of arguments. The arguments are separated by commas. Expressions can also include:

This page explains the basics of writing expressions and scripts in PhixFlow. The instructions assume you are configuring a Stream Attribute, unless otherwise stated. It's also useful to know the style conventions recommeded for expressions; see Expression Style.

The internal variables that you can use in an expression depend on the context. When you are writing an expression, always check the relevant help page. This will have information about what your expression can include.

Assigning a Literal Value to a Field

The most basic expression simply assigns a constant value to the field.

ExpressionAssigns valueData type
33integer
3.23.2floating point
"Hello""Hello"string
Sections on this page

To assign a string, it must be enclosed in:

  • either single quotes: 'Hello'
  • or double quotes: "Hello"

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. 

TypeDescription
ArrayA 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
DateA date. For details about date manipulation functions go to Date Functions
DatetimeA date and time. For details about date manipulation functions go to Date Functions
FloatA floating point number, e.g. 3.2 or 3.0 or 0.0
IntegerAn integer, e.g. 3 or 0
NumberAn integer or floating point number
StringA string value, e.g. "Hello" or the empty string ""
BooleanA logical value of either true or false.
Any non-null, non-zero value is treated as true
Regular ExpressionRegular 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.

ExpressionResult

do(
   $A = 5,
   $B = 2,

   $A*$B
)

This expression

  • Sets values for 2 $-variables: $A and$ B 
  • Performs simple calculation
  • Returns 10


do(
   $c = 10,

   $A*$B*$C
)

A different expression

  • Sets another variable value
  • References the $-variables from the previous expression
  • Returns 100

When to Use $-variables

$-variables are not really needed in simple calculations. They are useful:

  • in forEach loops
  • calculating attibute names from pipes; see Assigning Values From a Pipe.
  • to store a value from a look-up pipe, when you need the value in multiple attributes
    1. In the first attribute, look-up the value.
    2. Use a $-variable to store the value that is returned by the look-up.
    3. When you need the value in another attribute, reference the $-variable instead of repeating the look-up.
  • in complex expressions, to break up multiple consecutive functions into separate lines. In this case, use a $-variable to store the intermediate values; see Multiline Statements and $-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:

ExpressionResult
in.numProducts + 312
in.numProducts - 36
in.numProducts * 327
in.numProducts / 33

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.

ExpressionResult
3 * 3 + 312
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":

ExpressionResult
"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:

ExpressionResult
"Hello" + 3"Hello3"
"4" + 3"43"


Internal Variables

Sometimes when youWhen you pass a a value that is passed between programs, subroutines or functions. Arguments are independent items, or variables, that contain data or codes.

PhixFlow has a list of functions you can use in an expression.

ExpressionInternal Variable
if( _out.AppleHarvestDate < toDate('20210101'), 1, 0)toDate converts the string 20210101 into a date 01-01-2021)

 expression within an expression

internal variable

_out. tells PhixFlow that it has already "seen" the attribute AppleHarvestDate in this stream.

You can refer to

<pipe_name>.<attribute_name> and pipe names default to "in", so  in.AppleHarvestDate which signals that AppleHarvestDate is being sourced down a pipe going into the stream called 'in'. The internal variable preceding an attribute name should reflect where the attribute is being source from.


There are many other internal variables, see Internal Variables.

Regular Expressions - Regular expressions can be used to match patterns within strings or arrays as arguments within jep expressions, for example replaceAllreplaceFirst and matches. See Regexp ToDelete.

Simple integers or strings. In the above case 1 and 0 are simple integers. They tell PhixFlow to return the number 1 if NumberOfApples > 1 and 0 if it is not. A string could be returned instead eg. if(_out.NumberOfApples > 1, 'True', 'False') would return the string True if NumberOfApples >1 and False if it is not. Note strings need to be wrapped in ' marks. 


(To find the correct syntax for an expression - find it in the list below or search in confluence)

If() Statements

It is common to want to evaluate whether or not data meets a condition. To do this use an if() statement; see the if page.

ExpressionResult

if(_out.NumberOfApples > 1, 1, 0)

tbc

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:

ExpressionResult

do (

    $name = in.customerName,
    $title = in.title,
    $salutation = "Dear",


    $result = $salutation + ' ' + $title + $name

)

"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:

ExpressionResult

if (

    in.customerName == "Smith",
    45 ,

// else 36

)

45 if the customer's name is "Smith" but otherwise the value 36.


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.

NotationUse for
//

 short comments up to 1 line

/* <comment> */multi-line comments


For some examples using comments, plus other style tips for expressions, see Expression Style.

See Also

  •  ToDelete topic page for links to more information.



  • No labels