例如,在管道代码编辑器中使用这些函数来定义用户变量或构建高级条件。
要查看从 DataStage传输的管道函数,请参阅 DataStage 在管道表达式构建器中使用的函数。
"扩展构建器" 将类别用于编码函数:
转换函数
将一种数据元素格式转换为另一种数据元素格式。
基本数据类型转换表
类型 | 接受 | 返回 | 语法 |
---|---|---|---|
double |
int, uint, string |
double |
double(val) |
duration |
string |
duration |
duration(string) 持续时间必须以 "s" 结尾,这代表秒。 |
int |
int, uint, double, string, timestamp |
int |
int(val) |
timestamp |
string |
timestamp |
timestamp(string) 根据 RFC3339将字符串转换为时间戳记,即 "1972-01-01T10:00:20.021-05:00"。 |
uint |
int, double, string |
uint |
uint(val) |
示例
例如,要将值强制转换为类型 double
:
double(%val%)
将双精度类型转换为 int | uint
时,结果将向零舍入,如果结果超出范围,那么将发生错误。
标准函数
IBM Orchestration Pipeline 独有的功能。
下标
替换与位置偏移处开始的给定正则表达式匹配的字符串的子串。
语法
(string).sub(substring (string), replacement (string), [occurrence (int), [offset (int)]])
返回:更新了子字符串的字符串。
示例
'aaabbbcccbbb'.sub('[b]+','RE')
返回 "aaaREcccRE"。
格式
根据格式说明符对字符串或时间戳记进行格式化,并返回生成的字符串。
语法
format 作为字符串的方法
(string).format(parameter 1 (string or bool or number)... parameter 10 (string or bool or number))
返回: 包含格式化输入值的字符串。
format 作为时间戳记的方法
(timestamp).format(layout(string))
返回: 字符串格式的格式化时间戳记。
示例
'number=%d, text=%s'.format(1, 'str')
返回字符串 "number=1, text=str"。
timestamp('2020-07-24T09:07:29.000-00:00').format('%Y/%m/%d')
返回字符串 "2020/07/24"。
现为
返回当前时间戳记。
语法
now()
返回: 当前时间戳记。
parseTimestamp
以字符串格式返回当前时间戳记。
语法
parseTimestamp([timestamp_string(string)] [layout(string)])
返回: 当前时间戳记为字符串类型的字符串。
示例
parseTimestamp('2020-07-24T09:07:29Z')
返回 "2020-07-24T09:07:29.000-00:00"。
min
返回列表中的最小值。
语法
(list).min()
返回: 列表的最小值。
示例
[1,2,3].min()
返回整数 1。
max
返回列表中的最大值。
语法
(list).max()
返回: 列表的最大值。
示例
[1,2,3].max()
返回整数 3。
argMin
返回列表中最小值的索引。
语法
(list).argmin()
返回: 列表的最小值的索引。
示例
[1,2,3].argmin()
返回整数 0。
argMax
返回列表中最大值的索引。
语法
(list).argmax()
返回: 列表最大值的索引。
示例
[1,2,3].argmax()
返回整数 2。
总和
返回列表中值的总和。
语法
(list).sum()
返回: 列表最大值的索引。
示例
[1,2,3].argmax()
返回整数 2。
base64.decode
将 base64-encoded 字符串解码为字节。 如果字符串输入不是 base64-encoded,那么此函数会返回错误。
语法
base64.decode(base64_encoded_string(string))
返回: 以字节格式解码的 base64-encoded 字符串。
示例
base64.decode('aGVsbG8=')
以字节为单位返回 "hello"。
base64.encode
将字节编码为 base64-encoded 字符串。
语法
base64.encode(bytes_to_encode (bytes))
返回: 原始字节值的已编码 base64-encoded 字符串。
示例
base64.decode(b'hello')
返回 "aGVsbG8=" (以字节计)。
charAt
返回给定位置的字符。 如果位置为负数或大于字符串的长度,那么函数会产生错误。
语法
(string).charAt(index (int))
返回: 整数格式的指定位置的字符。
示例
'hello'.charAt(4)
返回字符 "o"。
indexOf
返回第一次出现的搜索字符串的整数索引。 如果找不到搜索字符串,那么此函数将返回 -1。
语法
(string).indexOf(search_string (string), [offset (int)])
返回: 偏移量之后出现的第一个字符的索引。
示例
'hello mellow'.indexOf('ello', 2)
返回整数 7。
lowerAscii
返回将 ASCII 字符转换为小写的新字符串。
语法
(string).lowerAscii()
返回: 新的小写字符串。
示例
'TacoCat'.lowerAscii()
返回字符串 "tacocat"。
替换
返回基于目标的新字符串,这会将出现的搜索字符串替换为替换字符串 (如果存在)。 此函数接受对要进行的子串替换数的可选限制。
语法
(string).replace(search_string (string), replacement (string), [offset (int)])
返回: 已替换出现搜索字符串的新字符串。
示例
'hello hello'.replace('he', 'we')
返回字符串 "wello wello"。
拆分
返回由分隔符从输入中拆分的字符串列表。 该函数接受可选参数,该参数指定对拆分生成的子串数的限制。
语法
(string).split(separator (string), [limit (int)])
返回: 拆分字符串作为字符串列表。
示例
'hello hello hello'.split(' ')
返回字符串列表 ['hello' , 'hello' , 'hello']。
子串
返回给定与字符位置对应的数字范围的子串。 (可选) 可以从字符位置省略子串的尾部范围,直到字符串结束。
语法
(string).substring(start (int), [end (int)])
返回: 字符串的指定索引处的子串。
示例
'tacocat'.substring(4)
返回字符串 "cat"。
修剪
返回新字符串,这将除去目标字符串中的前导空格和尾部空格。 修剪函数使用空格的 Unicode 定义,这不包括零宽度空格。
语法
(string).trim()
返回: 除去空格的新字符串。
示例
' \ttrim\n '.trim()
返回字符串 "trim"。
upperAscii
返回一个新字符串,其中所有 ASCII 字符都是大写的。
语法
(string).upperAscii()
返回: 将所有字符都转换为大写的新字符串。
示例
'TacoCat'.upperAscii()
返回字符串 "TACOCAT"。
规模
返回字符串,字节,列表或映射的长度。
语法
(string | bytes | list | map).size()
返回: 字符串,字节,列表或映射数组的长度。
示例
'hello'.size()
返回整数 5。
'hello'.size()
返回整数 5。
['a','b','c'].size()
返回整数 3。
{'key': 'value'}.size()
返回整数 1。
包含
测试字符串操作数是否包含子字符串。
语法
(string).contains(substring (string))
返回: 字符串操作数中是否存在子串的布尔值。
示例
'hello'.contains('ll')
返回 true。
endsWith
测试字符串操作数是否以指定后缀结束。
语法
(string).endsWith(suffix (string))
返回: 字符串操作数中是否以指定后缀结尾的布尔值。
示例
'hello'.endsWith('llo')
返回 true。
startsWith
测试字符串操作数是否以前缀自变量开头。
语法
(string).startsWith(prefix (string))
返回: 字符串操作数中是否以指定前缀开头的布尔值。
示例
'hello'.startsWith('he')
返回 true。
matches
测试字符串操作数是否与正则表达式匹配。
语法
(string).matches(prefix (string))
返回: 字符串是否与指定的正则表达式匹配的布尔值。
示例
'Hello'.matches('[Hh]ello')
返回 true。
getDate
从具有时区 (缺省全球标准时间) 的日期开始获取一个月中的第几天,基于 1 的索引。
语法
(timestamp).getDate([time_zone (string)])
返回: 具有基于 1 的索引的月份中的日期。
示例
timestamp('2020-07-24T09:07:29.000-00:00').getDate()
返回 24。
getDayOfMonth
获取从具有时区 (缺省全球标准时间) 的日期开始的日期 (基于 0 的索引)。
语法
(timestamp).getDayOfMonth([time_zone (string)])
返回: 具有基于零的索引的月份中的日期。
示例
timestamp('2020-07-24T09:07:29.000-00:00').getDayOfMonth()
返回 23。
getDayOfWeek
从具有时区 (缺省全球标准时间) 的日期开始获取一周中的第几天,基于 0 的索引,对于星期日为零。
语法
(timestamp).getDayOfWeek([time_zone (string)])
返回: 具有基于零的索引的星期几。
示例
timestamp('2020-07-24T09:07:29.000-00:00').getDayOfWeek()
返回 5。
getDayOfYear
从具有时区 (缺省全球标准时间) 的日期开始获取一年中的第几天,基于 0 的索引。
语法
(timestamp).getDayOfYear([time_zone (string)])
返回: 具有基于零的索引的一年中的第几天。
示例
timestamp('2020-07-24T09:07:29.000-00:00').getDayOfYear()
返回 205。
getFull年
获取具有时区的日期的年份 (缺省全球标准时间)。
语法
(timestamp).getFullYear([time_zone (string)])
返回: 从日期开始的年份。
示例
timestamp('2020-07-24T09:07:29.000-00:00').getFullYear()
返回 2020。
getMonth
获取时区为 0-11 的日期的月份。
语法
(timestamp).getMonth([time_zone (string)])
返回: 从日期开始的月份。
示例
timestamp('2020-07-24T09:07:29.000-00:00').getMonth()
返回 6。
getHours
从具有时区的日期 0 到 23 获取小时数。
语法
(timestamp).getHours([time_zone (string)])
返回: 从日期开始的小时。
示例
timestamp('2020-07-24T09:07:29.000-00:00').getHours()
返回 9。
getMinutes
从时区为 0-59 的日期开始获取分钟数。
语法
(timestamp).getMinutes([time_zone (string)])
返回: 从日期开始的分钟。
示例
timestamp('2020-07-24T09:07:29.000-00:00').getMinutes()
返回 7。
getSeconds
从时区为 0-59 的日期开始获取秒数。
语法
(timestamp).getSeconds([time_zone (string)])
返回: 从日期开始的第二个。
示例
timestamp('2020-07-24T09:07:29.000-00:00').getSeconds()
返回 29。
getMilliseconds
从时区为 0-999 的日期获取毫秒数。
语法
(timestamp).getMilliseconds([time_zone (string)])
返回: 从日期开始的毫秒。
示例
timestamp('2020-07-24T09:07:29.021-00:00').getMilliseconds()
返回 21。
访问高级全局对象
使用以下管道代码获取节点输出,用户变量和管道参数。
获取用户变量
获取用户变量的最新值。
语法
vars.<var name>
示例
示例 | 输出 |
---|---|
vars.my_user_var |
获取用户变量 my_user_var 的值 |
获取参数
获取流参数。
语法
params.<param name>
示例
示例 | 输出 |
---|---|
params.a |
获取参数 a 的值 |
获取参数集
获取流参数集。
语法
param_set.<param_set_name>.<param_name>
示例
示例 | 输出 |
---|---|
param_set.ps.a |
从参数集 ps 获取参数 a 的值 |
param_sets.config |
获取管道配置值 |
param_sets.config.deadline |
从配置参数集中获取日期对象 |
param_sets.ps["$PARAM"] |
从参数集 ps 获取参数 $PARAM 的值 |
获取任务结果
在管道任务完成运行后,从该管道任务获取其生成的输出和其他度量值。
语法
tasks.<node id>.<output name>
示例
示例 | 输出 |
---|---|
tasks.run_datastage_job |
获取作业输出的结果字典 |
tasks.run_datastage_job.results.score |
获取作业输出的值 score |
tasks.run_datastage_job.results.timestamp |
获取作业运行的结束时间戳记 |
tasks.run_datastage_job.results.error |
从作业运行获取错误数 |
tasks.loop_task.loop.counter |
获取作业运行的当前循环迭代计数器 |
tasks.loop_task.loop.item |
获取作业运行的当前循环迭代项 |
tasks.run_datastage_job.results.status |
获取作业运行的成功或失败状态 |
tasks.run_datastage_job.results.status_message |
获取作业运行的状态消息 |
tasks.run_datastage_job.results.job_name |
获取作业名 |
tasks.run_datastage_job.results.job |
获取作业的 Cloud Pak for Data 路径 |
tasks.run_datastage_job.results.job_run |
获取作业运行的 Cloud Pak for Data 运行路径 |
获取管道上下文对象
获取在作用域 (项目,空间和目录) 中运行的管道上下文中求值的值。
示例
示例 | 输出 |
---|---|
ctx.scope.id |
获取作用域标识 |
ctx.scope.type |
返回 "project" , "space" 或 "catalog" |
ctx.scope.name |
获取作用域名称 |
ctx.pipeline.id |
获取管道标识 |
ctx.pipeline.name |
获取管道名称 |
ctx.job.id |
获取作业标识 |
ctx.run_datastage_job.id |
获取作业运行标识 |
ctx.run_datastage_job.started_at |
获取作业运行开始时间 |
ctx.user.id |
获取用户标识 |
获取错误状态
如果触发了异常处理程序,那么将创建错误对象,并且只能在异常处理程序中访问该对象。
示例
示例 | 输出 |
---|---|
error.status |
获取作业运行的成功或失败状态,通常失败 |
error.status_message |
获取错误状态消息 |
error.job |
获取作业的 Cloud Pak for Data 路径 |
error.run_datastage_job |
获取作业的 Cloud Pak for Data 运行路径 (在 watsonx中不可用) |
父主题: 向管道添加条件