DataZen Functions
DataZen Functions are available throughout DataZen Manager in most fields that display a function icon or show a function replacement window. DataZen Functions fall under the following categories, some of which may not be available depending on the context.
- Enzo Functions: a list of built-in functions that can be used inline
- Dataset Schema: a list of fields available from the data source or after being modified by a data pipeline to choose from
- Job Parameters: a list of job-specific parameters that can be used inline
- Dynamic Parameters: a list of parameters that are available for certain source systems
Enzo Functions can be used in multiple places throughout DataZen, including:
- Data Pipelines Dynamic Columns
- URL or payload of a job that uses an HTTP connection
- Custom SQL or HTTP Scripts in a target operation
- Target object names for database tables, no-sql tables, and file names
- Initialization and Finalization database scripts when using a DB Target
- Most data pipeline configuration settings
DataZen functions can be called using a chaining operation instead of nesting separate calls using a dot operation.
For example, #tohex64(#trim( this is a test )) can be rewritten as #trim( this is a test ).tohex64() or ##( this is a test ).trim().tohex64().
To apply the same logic on a field value during a pipeline transformation, use the {{field}} identifier: ##({{field}}).trim().tohex64()
Example: DataZen Functions in HTTP Payload
In this example, the HTTP Payload provided to a target system contains a DataZen Function and a field from the source data: - a random guid: #rndguid() - a field name replacement: {{ids}}
To insert a field or function, place the cursor at the desired insertion point, then double-click on the field or function to insert.
Certain fields display a DataZen Function icon to show a secondary screen with a similar layout.
Click on a DataZen function to see a description and example on how to use it.
You can nest or chain functions by adding them together in a call.
For example, the following operation gets the current time in UTC, returns
an ISO8601 compliant date format, and URL encodes the output so it can be
passed in a URL function:
#urlencode(#toiso8601(#utcnow()))
#urlencode(#utcnow(o))
#utcnow(o).urlencode()
List of Functions
Function | Description | Comments |
##(a) | The # operator identifies the content provided as input to the next chained operation. |
##({{field1}}).toiso8601() ##({{field1}}).trim().tolower().tohex64() |
#decrement(a) #decrement(a, b) |
Decrements a value by one, or by the amount specified. | #decrement({{field1}}, 1) |
#compress(a) #compressu(a) |
Compresses a string into a byte array returned as a Base64 encoded utf-8, or unicode (u), string using the zlib algorithm | The output of this operation is a Base64 encoded string. #compress({{fieldToCompress}}) |
#dateadd(date, timespan) #dateadd(date, timespan, format) #utcdateadd(date, timespan) #utcdateadd(date, timespan, format) |
Adds (or substracts) a timestamp to a date provided as a local datetime (or utc datetime) and returns the new date in the format specified as a local datetime (or utc datetime). The timestamp can contain the following characters: ymdhns, and start with - for a negative timestamp. Default format: s (sortable). | #dateadd(#now(), -5d30n, s) |
#doublequoted(a) | Surrounds the string with double quotes if needed, and it is not null. | #doublequoted(TEST) |
#format(a, b, …) | Uses the C# string.Format syntax to build a string with any number of parameters | The C# syntax uses {0} for the first parameter, {1} for the second, and so forth. #format('User {0} lives in {1}', {{userId}}, {{state}}) |
#fromhex64(a) | Converts a Hexadecimal string into a string representation. | #fromhex64(74657374) |
#formatdate(date, format) #utcformatdate(date, format) | Formats a string value into a date with a specific format (following the C# DateTime.ToString(format) notation) | #formatDate(11/01/2000T08:00:00.0000, 0:MM/dd/yy H:mm:ss) |
#fromepoch(a) #fromepoch(a,b) #fromepoch_sec(a) #fromepoch_sec(a,b) |
Converts an epoch number, provided as seconds, into a date/time. Parameter 'b' indicates the date formatting to use. If no date formatting is used, the format provided is unspecified and not guaranteed to remain the same over time. |
#fromepoch(1728440034, G) #fromepoch_sec(1728440034, o) |
#fromepoch_ms(a) #fromepoch_ms(a,b) |
Converts an epoch number, provided as milliseconds, into a date/time. Parameter 'b' indicates the date formatting to use. If no date formatting is used, the format provided is unspecified and not guaranteed to remain the same over time. |
#fromepoch_ms(1729540001453, G) #fromepoch_ms(1729540001453, o) |
#increment(a) #increment(a, b) | Increments a value by one, or by the amount specified. | #increment({{field1}}, 25) |
#http_get(…) #http_post(…) #http_put(…) #http_delete(…) (DEPRECATED) |
(DEPRECATED) Please use the Data Pipeline HTTP Endpoint function instead. Performs an HTTP/S call to an internet resource and returns a string as output. If the call to the HTTP resource is an image, the content is returned as an Hexadecimal representation of the bytes of the image. |
See the HTTP Functions section below for further information #http_get({{field_url}}) |
#isnotnull(a,b) | Returns value ‘b’ if value ‘a’ is not a NULL value | You can use this function to replace a non-NULL value with a constant, or the content of another field #isnotnull({{field1}}, 0) |
#isnotnullorempty(a,b) | Returns value ‘b’ if value ‘a’ is not a NULL value nor an empty string | You can use this function to replace a non-NULL value or non-empty value with a constant, or the content of another field #isnotnullorempty({{field1}}, 0) |
#isnull(a,b) | Returns value ‘b’ if value ‘a’ is a NULL value | You can use this function to replace a NULL value with a constant, or the content of another field #isnull({{field1}}, 0) |
#isnullorempty(a,b) | Returns value ‘b’ if value ‘a’ is a NULL value or an empty string | You can use this function to replace a NULL value with a constant, or the content of another field #isnullorempty({{field1}}, 0) |
#jsonformat(a) | Parses the JSON content (provided as a string) and applies JSON formatting settings specified by #setjsonsettings | #setjsonsettings(nullvaluehandling:ignore) #jsonformat({\"id\": 1, \"name\": null}) |
#parse(a, b, c) | Parses the content 'a' (provided as a string) as either a JSON, XML, or CSV content, using Path 'b' (may be null), and returns the value of node 'c' given its name or index | |
#parsedate(a, b, c) | Returns a date/time representation of the string provided as 'a', using 'b' as the date format to use for 'a', and 'c' as an optional output date format. | #parsedate(31 12 2018 23:50, dd MM yyyy HH:mm, G) |
#parsejson(a, b, c) | Parses the JSON content 'a' (provided as a string), using the JSON Path 'b' (may be null), and returns the attribute 'c' given its name or index | #parsejson({\"id\": 1, \"name\": \"john\" }, null, name) |
#parsexml(a, b, c) | Parses the XML content 'a' (provided as a string), using the XML Path 'b' (may be null), and returns the value of node 'c' given its name or index | #parsexml(<root><id>1</id><name>john<name></root>, null, name) |
#left(a, n) | Returns the left-most n characters of a string | #left(‘this is a test’, 5) |
#len(a) | Returns the length of a string | #len(‘this is a test’) |
#now() #now(a) |
Returns the current datetime in the local timezone of the server on which the agent is running with an optional date formatting parameter |
The following returns the current local date of the server running the agent using the ISO 8601 standard #now(o) |
#pick(a,b,c…) | Randomly selects a value from the list provided as parameters | Any number of parameters can be provided |
#replace(a, b, c) | Replaces all occurrences of b with c, in string a | #replace(‘this is a cat’, ‘cat’, ‘dog’) |
#rnddouble(a,b) | Generates a random double value between two numbers | Both the lower and upper bound values are required |
#rndguid() | Returns a new random GUID | |
#rndint(a,b) | Generates a random integer value (Int32) between two numbers | Both the lower and upper bound values are required |
#setjsonsettings(P1:V1,P2:V2...) | JSON formatting options to be used by the next JSON function; must be called immediately before the JSON function. Supports multiple options. | #setjsonsettings(nullvaluehandling:ignore,formatting:none,dateformatstring:MM/dd/yyy hh:mm:ss) #jsonformat({\"id\": 1, \"name\": null}) |
#skip(a,n) | Skips the first n characters from the string provided as the first parameter | #skip(my name, 3) |
#singleline(a) | Removes any line-feed and carriage return characters from the content within. This function is normally used when formatting string values in a JSON documents. | #singleline(This is a sample message that will be turned into a single line text) |
#singlequoted(a) | Surrounds the string with single quotes if needed, and it is not null. | #singlequoted(TEST) |
#toepoch(a) #toepoch(a,b) #toepoch_sec(a) #toepoch_sec(a,b) |
Converts a date/time value (parameter 'a') to an epoch number, in seconds. Parameter 'b' indicates whether the date provided is in UTC already (1 or true); this is useful if the date string does not contain timezone information. If the date string already contains timezone information, parameter 'b' is ignored. |
#toepoch('10/9/2024 2:13:54 AM', 1) #toepoch_sec('2024-09-10T02:13:54.000Z') |
#toepoch_ms(a) #toepoch_ms(a,b) |
Converts a date/time value (parameter 'a') to an epoch number, in millseconds. Parameter 'b' indicates whether the date provided is in UTC already (1 or true); this is useful if the date string does not contain timezone information. If the date string already contains timezone information, parameter 'b' is ignored. |
#toepoch_ms('10/9/2024 2:13:54 AM', 1) #toepoch_ms('2024-09-10T02:13:54.000Z') |
#tolower(a) | Converts a string into a lower-case representation | #tolower('TEST') |
#toupper(a) | Converts a string into an upper-case representation | #tolower('test') |
#tohex64(a) | Transforms a value into an Hex64 representation | #tohex64(‘this is a test’) |
#toiso8601(x) | Converts a datetime field into a ISO 8601 compliant format | This function converts a datetime field into a string in the ISO 8601 format assuming the date is in the current timezone |
#torfc1123(x) | Converts a datetime field into a RFC 1123 compliant format | |
#trim(x) | Removes leading and trailing spaces from the string provided | #trim(' this is a test ') |
#uncompress(a) #uncompressu(a) |
Decompresses a byte array of compressed utf-8 data, or unicode (u), into a string using the zlib algorithm |
The output of this operation is a string.
#uncompress({{fieldToUncompress}}) |
#unquote(a) | Removes surrounding quotes or double-quotes if any |
This example returns a string that can be interpreted as an integer #unquote('123456789') This will return the HEX representation of TEST without surrounding quotes #tohex64('TEST').unquote() |
#unzip(a) #unzipu(a) |
Decompresses a byte array of compressed utf-8 data, or unicode (u), into a string using the GZip algorithm | The output of this operation is a string. #unzip({{fieldToUnzip}}) |
#utcnow() #utcnow(o) |
Returns the current datetime in UTC format with an optional date formatting parameter |
The following returns the current UTC date using the ISO 8601 standard #utcnow(o) |
#utctoiso8601(x) | Converts a UTC datetime field into a ISO 8601 compliant format | This function converts a datetime field into a string in the ISO 8601 format assuming the date is in the UTC timezone |
#utctorfc1123(c) | Converts a UTC datetime field into a RFC 1123 compliant format | |
#urldecode(c) | Decodes a string from its escaped representation | |
#urlencode(c) | URL encodes the value provided so it is safe to pass as a URL parameter. | |
#zip(a) #zipu(a) |
Compresses a string into a byte array returned as a Base64 encoded utf-8, or unicode (u), string using the GZip algorithm | The output of this operation is a string. #zip({{fieldToUnzip}}) |