转换语言
对于各种组件,需要以可插拔的方式转换消息并组合这些转换。为此,有一个简单的DSL,允许为公共转换定义函数,并将这些函数组合起来。
转换语言
目前支持的职能是:
TO_LOWER(string)
*将第一个参数转换为小写字符串TO_UPPER(string)
*将第一个参数转换为大写字符串TO_STRING(string)
*将第一个参数转换为字符串TO_INTEGER(x)
*将第一个参数转换为整数TO_DOUBLE(x)
*将第一个参数转换为双参数TRIM(string)
从字符串的两边修剪空格。JOIN(list, delim)
*用指定的分隔符连接列表的组件SPLIT(string, delim)
*将字符串拆分为分隔符。返回一个列表。GET_FIRST(list)
返回列表的第一个元素GET_LAST(list)
返回列表的最后一个元素GET(list, i)
:返回列表的I‘th元素(i基于0)。MAP_GET(key, map, default)
:返回与映射中的键关联的值。如果密钥不存在,则将返回默认值。如果默认值未指定,则返回NULL。DOMAIN_TO_TLD(domain)
:返回域的TLD。DOMAIN_REMOVE_TLD(domain)
*删除域的TLD。REMOVE_TLD(domain)
*从域中移除TLD。URL_TO_HOST(url)
:从URL返回主机URL_TO_PROTOCOL(url)
:从URL返回协议URL_TO_PORT(url)
:从URL返回端口URL_TO_PATH(url)
:从URL返回路径TO_EPOCH_TIMESTAMP(dateTime, format, timezone)
:返回dateTime
鉴于format
。如果格式没有时间戳,并且希望使用给定的时间戳,则可以指定timezone
可选的。
示例转换:
TO_EPOCH_TIMESTAMP(timestamp, 'yyyy-MM-dd HH:mm:ss', MAP_GET(dc, dc2tz, 'UTC'))
的消息。timestamp
和dc
字段中,我们希望将时间戳设置为给定时区的纪元时间戳,我们将在单独的地图中查找该时间戳,称为dc2tz
.
这将时间戳字段转换为基于
- 格式
yyyy-MM-dd HH:mm:ss
- 价值
dc2tz
与字段关联的值关联dc
,拖欠UTC