0 / 0
Go back to the English version of the documentation
编排管道的表达式构建器中使用的函数
Last updated: 2024年5月31日
编排管道的表达式构建器中使用的函数

例如,在管道代码编辑器中使用这些函数来定义用户变量或构建高级条件。

要查看从 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中不可用)

父主题: 向管道添加条件

Generative AI search and answer
These answers are generated by a large language model in watsonx.ai based on content from the product documentation. Learn more