Transformation Step
The Transformation step in RiskOS™ lets you manipulate data within a workflow using a set of predefined, stateless functions. Transformations do not maintain state; they operate only on the data provided as inputs at the time of execution.
For example, you can use the CONCAT function to combine firstName and surName into a single fullName variable. That new variable becomes immediately available to downstream steps, simplifying logic and reducing duplication.
Placement in a workflow
- A Transformation step can be placed anywhere in a workflow, depending on your logic.
- Common patterns include:
- Right after the Input step to normalize incoming data.
- Before a Condition step to prepare data for evaluation.
- After an Enrichment step to parse out specific data.
Configure a Transformation step
-
Add the Transformation step to your workflow, then click the step to open the side panel.
-
Select a Function from the dropdown (see Available functions below).
- Provide input parameters for the function:
- Value: For static values (e.g., strings, numbers).
- Variable: For dynamic inputs, such as payload fields or outputs from prior steps.
- Specify the output field name.
- The function’s result is stored in this field.
- Use it later with
$[output_field_name]. - Example: If you name the output field
fullName, reference it downstream as$fullName.
Note:
You can customize the Transformation step’s label by editing the text field at the top of the side panel.
Available functions
Note:
This catalog lists supported stateless functions. Check release notes regularly to confirm the latest set of functions available in your environment.
String functions
| Transformation | Input | Output | Description |
|---|---|---|---|
STARTSWITH | String + substring | Boolean | True if a string starts with the substring (ignores leading whitespace). |
ENDSWITH | String + substring | Boolean | True if a string ends with the substring (ignores trailing whitespace). |
LENGTH | String | Numeric | Returns the string length. |
CONTAINS | String + substring | Boolean | True if the string contains the substring. |
TO_LOWER_CASE | String | String | Converts to lowercase. |
CONCAT | Multiple strings | String | Joins strings into one. |
SPLIT | String + separator | Array | Splits string into an array of substrings. |
FIRST_N | String + numeric value | String | Returns the first n characters. |
REVERSE | String | String | Reverses a string. |
JARO_WINKLER_DISTANCE | Two strings | Numeric | Calculates similarity using Jaro-Winkler distance. This function does not normalize the input strings. |
SIAMESE_JARO_WINKLER_DISTANCE | Two strings | Numeric | Calculates similarity using Jaro-Winkler distance optimized for names; normalizes input, tokenizes, and alphabetically sorts tokens (so "Ryan Reisling" ≈ "Reisling Ryan"). |
SUBSTRING | String + start + end positions | String | Extracts substring between two positions. |
Numerical functions
| Transformation | Input | Output | Description |
|---|---|---|---|
DIVISION | Two numbers | Numeric | Returns quotient. |
MULTIPLICATION | Two numbers | Numeric | Returns product. |
SUM | One or more numbers | Numeric | Returns total. |
MODULUS | Two numbers | Numeric | Returns remainder. |
SUBTRACT | Two numbers | Numeric | Returns the difference. |
RANDOM_NUMBER | Min + max values | Numeric | Returns a random number within range. |
Array functions
| Transformation | Input | Output | Description |
|---|---|---|---|
IS_IN_ARRAY_ANY | String(s) + array | Boolean | True if any element is in the array. |
IS_IN_ARRAY_ALL | String(s) + array | Boolean | True if all elements are in the array. |
JOIN | Array | String | Joins array elements into a space-separated string. |
ARRAY_LENGTH | Array | Numeric | Returns the number of elements. |
COUNT_DISTINCT | Array | Numeric | Returns the number of unique items. |
Date functions
| Transformation | Input | Output | Description |
|---|---|---|---|
DATE_DIFF_IN_DAYS | Two dates (ISO) or date + “today” | Numeric | Days between two dates. |
CALCULATE_AGE | Date of birth (ISO) | Numeric | Age in years. |
TIME_DIFF_IN_SECS | Two timestamps (ISO) | Numeric | Seconds between two timestamps. |
Special functions
| Transformation | Input | Output | Description |
|---|---|---|---|
GEO_DISTANCE_LAT_LONG | Two lat/long coordinate pairs | Numeric | Distance (in km) between two coordinates. |
EXTRACT_EMAIL_HANDLE | Email address | String | Returns the part after “@”. |
EXTRACT_EMAIL_USER | Email address | String | Returns the part before “@”. |
IS_NULL | Any | Boolean | True if the value is null. |
COPY | Any | Any | Copies input to output. |
DECLARE_CUSTOM_VARIABLE | Any | Any | Declares a custom variable to use later (e.g., as input to another step). |
INSPECT_VALUE | Any | Any | Shows the value and type of a given variable name. Useful for workflow debugging. |
Best practices
- Place transformations where they add clarity or efficiency — e.g., normalize data early, simplify condition checks, or prep values before decisions.
- Use clear names for output fields so they’re self-explanatory in downstream steps.
- Validate transformation results with test payloads to avoid logic errors.
Updated 3 months ago
