Placeholders

Overview

The following placeholders are supported to format strings, calculate dates, and download multiple files.

NameDescription
${ITEM}Current element in the Item List.
${PATH}URL path or the file's absolute path.
${FILE}File's name (1).
${DIRECTORY}File's parent directory.
${TIME()}Text output of the TIME function.
${DATE_ITEM()}Current element in the Date Item list.
  • (1) In the case of HTTP protocol, the placeholder ${FILE} returns part of the URL after the last slash and before query string. For example: http://examples.com/data/stats.csv?city=Denver -> ${FILE} = stats.csv

Usage

NameSupported FieldsSupported Protocols
${ITEM}Path, First Line Contains, Default Entity, Metric Prefix, Custom Tags, Success Directory, Error DirectoryAll
${PATH}First Line Contains, Default Entity, Metric PrefixAll
${FILE}First Line Contains, Default Entity, Metric PrefixAll
${DIRECTORY}First Line Contains, Default Entity, Metric PrefixFILE, FTP, SFTP, SCP
${TIME()}First Line Contains, Path, Success Directory, Error DirectoryAll
${DATE_ITEM()}PathAll
  • To URL-encode placeholder value, for example, if it may contain special characters and is included in the Path, apply the url function as follows: ${ITEM?url}.

Syntax

The placeholder is prefixed with $ and enclosed in curly brackets {}.

${PLACEHOLDER}

Examples:

${ITEM}

file:///opt/files/inbound/${TIME("previous_day", "yyyy-MM-dd")}/daily.csv

Functions

TIME Function

The TIME function calculates time based on the calendar expression. The syntax outputs its value in the specified time_format.

Syntax: ${TIME("end_time_syntax", "time_format")}

Example: ${TIME("previous_hour", "yyyy-MM-dd/HH")}

The time format can be specified using y, M, d, H, m, or s. See SimpleDateFormat for reference.

If the TIME function returns a number, it can be used in addition or subtraction expressions:

Example: ${TIME("2016-01-01","M") - 1} -- subtract 1 from month.

DATE_ITEM Function

The DATE_ITEM function returns an array of strings.

It creates an array of dates between start and end time arguments, and formats these dates into strings with the specified date format.

If the path contains the ${DATE_ITEM()} placeholder, it should execute a separate file request for each string in the array.

Syntax: ${DATE_ITEM(startDate, endDate, periodCount, periodUnit, timeFormat)}

startDate and endDate support calendar expressions.

Example: ${DATE_ITEM("current_day - 7 * DAY", "now", 1, "HOUR", "yyyy/MM/dd/HH")}

String Functions

Placeholder values can be further modified with built-in string functions.

${PLACEHOLDER?function(arguments)}

Example: ${FILE?keep_before("_")}

FunctionDescription
keep_afterRemoves part of the string before the first occurrence of the given substring.
keep_after_lastRemoves part of the string before the last occurrence of the given substring.
keep_beforeRemoves part of the string that starts with the first occurrence of the given substring.
keep_before_lastRemoves part of the string that starts with the last occurrence of the given substring.
replaceReplace all occurrences of the given string in the original string with another string.
remove_beginningRemoves the given substring from the beginning of the string.
remove_endingRemoves the given substring from the end of the string.

Multiple functions can be chained (executed from left to right):

${PLACEHOLDER?functionA(arguments)?functionB(arguments)}

Example: ${FILE?keep_before("_")?replace(".csv", "")}

Input: ftp.example.com/data/95014_Cupertino_20160625_DAILY.csv

ExpressionResult
${FILE}95014_Cupertino_20160625_DAILY.csv
${FILE?keep_before('_')}95014
${FILE?keep_after('_')?keep_before('_')}Cupertino
${FILE?split('_')[0]}95014
${FILE?split('_')[1]}Cupertino
${FILE?split('_')[n]}Nth token after split by underscore
${FILE?keep_after_last('_')?keep_before('.')}DAILY

String Function Examples

The following examples are based on the Path field. The Path field can be used to define Default Entity.

keep_after

  • file:///opt/files/cpu_busy.*
  • ${PATH?keep_after('.')}
Matching PathsOutput
/opt/files/cpu_busy.nurswgvml.106
/opt/files/cpu_busy.nurswgvml.107
nurswgvml.106
nurswgvml.107

keep_after_last

  • /2.2/tags/docker/info?key=privateKey((&site=${ITEM}
  • ${ITEM?keep_after_last("-")}
ITEM valueOutput
so-stackoverflowstackoverflow

keep_before

  • ftp://user:password@10.10.0.10:21/home/user/nurswgvml106_*
  • ${FILE?keep_before('_')}
Matching PathsOutput
/home/user/nurswgvml106_temperature.csvnurswgvml106

keep_before_last

  • file:///opt/files/*_busy.csv
  • ${FILE?keep_before_last('_')}
Matching PathsOutput
/opt/files/nurswgvml106_cpu_busy.csv
/opt/files/nurswgvml107_cpu_busy.csv
nurswgvml106_cpu
nurswgvml107_cpu

replace

  • file:///opt/files/*
  • ${FILE?replace(' ','.')}
Matching PathsOutput
/opt/files/nurswgvml106 cpu_busynurswgvml106.cpu_busy

remove_beginning

  • file:///opt/files/*
  • ${PATH?remove_beginning('/opt/files/')}
Matching PathsOutput
/opt/files/nurswgvml106
/opt/files/nurswgvml107
nurswgvml106
nurswgvml107

remove_ending

  • file:///opt/files/*.cpu_busy.csv
  • ${FILE?remove_ending('.cpu_busy.csv')}
Matching PathsOutput
/opt/files/nurswgvml106.cpu_busy.csv
/opt/files/nurswgvml107.cpu_busy.csv
nurswgvml106
nurswgvml107

LOOKUP function

The LOOKUP function provides key-to-value mapping in the specified Item List. It is available in JSON, JDBC, PI jobs to resolve entities.

  • Syntax

The LOOKUP function has several implementations.

LOOKUP(itemList, key, separator='=')

Treat Item List as a properties file. Key is a substring of item list row before the separator, value is a substring after the separator. If separator parameter is not specified, '=' will be used as a separator.

Parameter nameParameter typeDescription
itemListStringName of the Item List
keyStringLookup Key
separatorString (optional)Key/value separator

LOOKUP(itemList, key, keyColumnIndex, valueColumnIndex, separator=',')

Treat Item List as a CSV structure.

Parameter nameParameter typeDescription
itemListStringName of the Item List
keyStringLookup Key
keyColumnIndexIntegerIndex of column in a CSV row that will be used as the key column, starting with 1
valueColumnIndexIntegerIndex of column in a CSV row that will be used as the value column, starting with 1
separatorString (optional)CSV columns separator

LOOKUP Examples

Consider the Item List 'us-regions' with items:

1=New-England
2=Middle-Atlantic
3=East-North-Central
4=West-North-Central
5=South-Atlantic
6=East-South-Central
7=West-South-Central
8=Mountain
9=Pacific
${LOOKUP('us-regions', '9')} => Pacific
${LOOKUP('us-regions', '2', '=')} => Middle-Atlantic

Consider the Item List 'meteo-stations':

94274,QLD,IDQ60801
94341,QLD,IDQ60801
94683,SA,IDS60801
94677,SA,IDS60801
94141,NT,IDD60801
94131,NT,IDD60801
94461,WA,IDW60801
94319,WA,IDW60801
${LOOKUP('meteo-stations', '94461', 1, 2)} => WA
${LOOKUP('meteo-stations', '94683', 1, 3, ',')} => IDS60801
${LOOKUP('meteo-stations', '94141', ',')} => NT,IDD60801