Import Template Functions

As part of our import template capability, a field value can be filled with a function calculated property in the form =<function>(parameters). So for instance, to get a lowercase value of the column C, the expression =lower(C) could be used.

This document details the available functions and their use.

Math

| Function | Description | Output Type | Example | | -------- | -------------- | ----------- | ------------------------------------------ | | + | Add two values | Numeric | If C = 2, then =C + 1 evaluates to 3 | | - | Subtraction | Numeric | If C is 6, then =C - 4 evaluates to 2 | | * | Multiplication | Numeric | If C is 4, then =C * 2 evaluates to 8 | | / | Division | Numeric | If C is 12, then =C / 2 evaluates to 6 | | % | Modulus | Numeric | If C is 9, then =C % 5 evaluates to 4 | | ^ | Bitwise XOR | Numeric | | | (Pipe) | Bitwise OR | Numeric | | | & | Bitwise AND | Numeric | |

Comparison

| Function | Description | Output Type | Example | | -------- | ---------------------- | ----------- | ------------------------------------------ | | < | Less than | Boolean | | | > | Greater Than | Boolean | | | <= | Less than or equal | Boolean | | | >= | Greather than or equal | Boolean | | | <> | Not Equal | Boolean | | | != | Not Equal | Boolean | | | = | Equal | Boolean | |

Logic

| Function | Description | Output Type | Example | | ------------------------- | --------------------------------------------------- | ---------------------------------------- | --------------------------------------------------------- | | IF(v,if_true,if_false) | Return if_true if v is true, if_false otherwise | Depends on if_true or if_false types | =IF(true,"A","B") is "A", =IF(false,"A","B") is "B" | | AND(a,b) | Return true if both values are true | Boolean | |
| OR(a,b) | Return true if either value is true | Boolean | | | NOT(x) | Return the inverse of value | Boolean | =NOT(true) is false, =NOT(false) is true |

Selections: SWITCH, CASE (syntax see spec)

Numeric

| Function | Description | Output Type | Example | | -------------- | ---------------------- | ----------- | ------------------------------------------ | | MIN(a,b,...) | | | MAX(a,b,...) | | | SUM(a,b,...) | | | AVG(a,b,...) | | | COUNT | | ROUND(x) | | ROUNDDOWN(x) | | ROUNDUP(x) |

String

| Function | Description | Output Type | Example | | ------------------------------- | --------------------------------------- | ----------- | ------------------------------------------------------------------------ | | LEFT(s, n) | Takes leftmost characters | String | =LEFT("abcd", 2) evaluates to "ab" | | RIGHT(s, n) | Takes rightmost characters | String | =RIGHT("abcd", 2) evaluates to "cd" | | MID(s,start,count) | Takes characters from middle | String | =MID("abcd", 1, 2) evaluates to "bc" | | LEN(s) | Length of string | Integer | =LENGTH("abcdef") evaluates to 6 | | FIND(substring,s) | Find position in string for a substring | Integer | =FIND("ab", "xabc") evaluates to 1 | | SUBSTITUTE(s,old,new) | Replaces old with new in string | String | =SUBSTITUTE("abcdef", "cd", "11") evaluates to ab11ef | | CONCAT(s1,s2) | Joins two strings | String | =CONCAT("ab", "cd") evaluates to "abcd" | | CONTAINS(s, substring) | Finds if string contains substring | Boolean | =CONTAINS("abcdef", "b") evaluates to true | | LOWER(s) | Convert string to lowercase | String | =LOWER("ABCeFF") evaluates to "abdeff" | | UPPER(s) | Convert string to uppercase | String | =UPPER("abcEEff") evaluates to ABCEEFF | | GSUB(s,old,new) | Replaces old with new in string | String | =GSUB("abcdef", "cd", "11") evaluates to ab11ef | | IS_BLANK(s) | Checks if string is blank | Boolean | =IS_BLANK("") is true, =IS_BLANK("xxx") is false | | RESOLVE_COUNTRY_CODE(s) | Converts country into Alpha2 code | String | =RESOLVE_COUNTRY_CODE("Australia") evaluates to 'AU' | | RESOLVE_REGION_CODE(s, s) | Converts region into area code | String | =RESOLVE_REGION_CODE("Australia", "Queensland") evaluates to 'QLD' | | REMOVE_SCIENTIFIC_NOTATION(s) | Converts scientific notation to number | String | =REMOVE_SCIENTIFIC_NOTATION("9.19e+11") evaluates to '919000000000' |

Dates

| Function | Description | Output Type | Example | | ------------------------- | ----------------------------- | ----------- | ---------------------------------------------------------------- | | DAY(d) | Extract the day from a date | Integer | =DAY("2020-05-03") evaluates to 3 | | MONTH(d) | Extract the month from a date | Integer | =DAY("2020-05-03") evaluates to 5 | | YEAR(d) | Extract the year from a date | Integer | =DAY("2020-05-03") evaluates to 2020 | | DATE(year,month,day) | Build a date from parts | Date | =DATE(2020, 4, 11) evaluates to a date 2020-04-11 | | ADD_DAYS(date,days) | Add days to a date | Date | =ADD_DAYS("2020-03-11", 4) evaluates to a date 2020-03-15 | | ADD_MONTHS(date,months) | Add months to a date | Date | =ADD_MONTHS("2020-03-11", 4) evaluates to a date 2020-07-11 | | ADD_YEARS(date,years) | Add years to a date | Date | =ADD_YEARS("2020-03-11", 4) evaluates to a date 2024-03-11 | | START_OF_MONTH(date) | Round date to start of month | Date | =START_OF_MONTH("2020-03-11") evaluates to a date 2020-03-01 | | START_OF_YEAR(date) | Round date to start of year | Date | =START_OF_YEAR("2020-03-11") evaluates to a date 2020-01-01 | | END_OF_MONTH(date) | Round date to end of month | Date | =END_OF_MONTH("2020-03-11") evaluates to a date 2020-03-31 | | END_OF_YEAR(date) | Round date to end of year | Date | =END_OF_YEAR("2020-03-11") evaluates to a date 2020-12-31 | | CURRENT_DATE() | Get today's date (organisation timezone) | Date | =CURRENT_DATE() evaluates to a date 2020-06-22 |

Arrays

| Function | Description | Output Type | Example | | -------------------------------------------------- | -------------------------------------------------------------- | ----------- | ----------------------------------------------------------- | | INCLUDES(arr,v) | Array includes value | Boolean | If x=["a", "b"], then =INCLUDES(x, "b") evaluates to true | | LENGTH(arr) | Array length | Integer | =LENGTH([1,2,5]) evaluates to 3 | | SELECT_WITH_PROPERTY_VALUE(arr,property,v1,...) | Filter array of objects where property matches value | Array | | | SUM_PROPERTY_VALUE(object,property) | Sum the value of the property extracted from array of objects | Numeric |

Data Lookup

| Function | Description | Output Type | Example | | ---------------------------------------------- | ------------------------------------------------------- | -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | LOOKUP_AGENT_FOR_BRANCH(branch_name_or_code) | Finds agent related to branch | Agent Profile | If B='Branch1', =lookup_agent_for_branch(B) evaluates to the agent owning Branch1 | | ALIGN_TO_SCHEDULE(date, schedule_name) | Finds the previous date in the targeted census schedule | Date | If D='15-01-2020' and E='Referral dates', =align_to_schedule(D) evaluates to the date before 15-01-2020 of the census schedule named Referral dates | | LOOKUP_COURSE(course_name_or_code) | Finds the course with the given name | Course | If C='Course1', then =lookup_course(C) evaluates to the course object called Course1 | | LOOKUP_INSTITUTION_FOR_COURSE(course_name_or_code) | Given a course name or code, finds the institution to which the course belongs | Institution | If C='Course1', then =lookup_institution_for_course(C) evaluates to the Institution object to which the course called Course1 belongs | | GET_TEMPLATE_ATTRIBUTE(object, attribute) | Retrieving a templating attribute from the given object | String | If C='Course1' and Course 1 has a custom data field 'blah' set to 'abc', then =GET_TEMPLATE_ATTRIBUTE(LOOKUP_COURSE(C), 'course_blah') evaluates to 'abc' | | BRANCH_EXISTS(agent_name_code, branch_name_code) | Test whether a branch exists under a specific agent, enabling branch to be used optionally | Boolean | If agent A1 has branch B1 only, then =IF(BRANCH_EXISTS('A1', 'B1'), 'B1', '') returns 'B1' and =IF(BRANCH_EXISTS('A1', 'B2'), 'B1', '') returns '' |