Overview
Sometimes we might want to write our own expressions that can be used time and again. To do this we can write a macro.
To make an expression reusable in different contexts, you need to replace any references to named items, such as attributes with arguments, such as $args[1], $args[2]
. To use the macro in an expression, specify:
macro_name(argument_name)
For example, we want to reuse an expression:
if( out.AppleHarvestDate < 1, 1, 0)
Create a macro called isGreaterThanOne that contains the expression:
if($args[1] > 1, 1, 0)
To use the macro, replacing $ars[1] with the pipe and attribute name _out.AppleHarvestDate
:
isGreaterThanOne(_out.AppleHarvestDate)
See also: Expressions, Scripts and Macros
Properties
For information about the properties toolbar, and about the sections Parent Details, Analysis Models, Description and Audit Summary, see Common Properties. We recommend you always add a Description that explains the purpose of the item you are creating.
For a full list of all the PhixFlow property tabs and windows, see Properties, Windows, Menus and Toolbars.
Basic Settings
Field | Description |
---|---|
Name | The name of the macro. This name is also how the macro will be invoked (called) from elsewhere in PhixFlow |
Minimum Parameters | The minumum number of parameters that must be passed to the macro when it is invoked. |
Maximum Parameters | The maximum number of parameters that may be passed to the macro when it is invoked. |
Expression
Field | Description |
---|---|
Expression | Enter the script that evaluates to a value based on the input parameters. |
Example
This sample macro is called padCost. It takes 1 parameter - a numeric value. It checks to see if the numeric value is missing a 0 before a decimal point. If so, it adds the 0 and returns the string. It can be called anywhere in phixflow that an expression can be entered (for example) with :
padCost(".977")
do( $val = $args[1], if( startsWith($val, "."), // if the cost is positive, add a zero onto the beginning "0" + $val, // ELSE if( startsWith($val, "-."), //if the cost is negative, replace the -. with a -0. "-0." + substring($val,3), //ELSE $val ) ) )
See also: