有奖捉虫:办公协同&微信生态&物联网文档专题 HOT
日志服务(Cloud Log Service,CLS)数据加工函数可以自由组合,来完成日志的清洗、结构化、过滤、分发、脱敏等场景。 如下图是一条含有 JSON 的日志,经过数据加工处理之后,变成结构化数据、然后对某个字段值进行脱敏、最后分发的流程。
?
?
如下是数据加工函数的总览:
键值提取函数类:从日志文本中提取字段/字段值。
函数名称
函数功能
函数语法描述
返回值类型
基于分隔符提取字段值内容
ext_sep("源字段名", "目标字段1,目标字段2,目标字段...", sep="分隔符", quote="不参与分割的部分", restrict=False, mode="overwrite")
返回提取后的日志(LOG)
基于指定字符(串)提取字段值内容
ext_sepstr("源字段名","目标字段1,目标字段2,目标字段...", sep="abc", restrict=False, mode="overwrite")
返回提取后的日志(LOG)
提取 JSON 字符串格式的字段值
返回提取后的日志(LOG) ext_json("源字段名",prefix="",suffix="",format="full",exclude_node="不平铺的JSON节点")
返回提取后的日志(LOG)
使用 Jmes 表达式提取字段值
ext_json_jmes(“源字段名”, jmes= "提取JSON的公示", output="目标字段", ignore_null=True, mode="overwrite")
返回提取后的日志(LOG)
基于两级分割符提取字段值
ext_kv("源字段名", pair_sep=r"\\s", kv_sep="=", prefix="", suffix="", mode="fill-auto")
返回提取后的日志(LOG)
基于正则表达式提取字段值
ext_regex(“源字段名”, regex="正则表达式", output=“目标字段1,目标字段2,目标字段.......”, mode="overwrite")
返回提取后的日志(LOG)
返回参数中第一个非 null 且非空字符的结果值
ext_first_notnull(值1, 值2, ...)
返回参数中第一个非 null 结果值
基于 grok 语法提取匹配结果值
ext_grok(字段值, grok="", extend="")
返回提取后的日志(LOG)
富化函数类:在已有字段的基础上,根据规则新增字段。
函数名称
函数功能
函数语法描述
返回值类型
使用 csv 结构数据对日志中的字段进行匹配。当值相同时,可以将 csv 中的其他字段和值,添加到源日志中
enrich_table(“csv 源数据”, “csv 富化字段”, output=“目标字段1,目标字段2,目标字段....”, mode="overwrite")
返回映射后的日志(LOG)
使用 Dict 结构对日志中的字段值进行匹配。当指定的字段的值和 Dict 中的 Key 相同时,将此 Key 对应的 Value 赋值给日志中的另一字段
enrich_dict(“JSON 字典”, "源字段名", output=目标字段, mode="overwrite")
返回映射后的日志(LOG)
流程控制函数类:条件判断。
函数名称
函数功能
函数语法描述
返回值类型
组合操作函数,类似于分支代码块的组合能力,可以组合多个操作函数,并按顺序执行,可以结合分支、输出函数使用
compose("函数1","函数2", ...)
返回日志(LOG)
对符合条件的日志,进行相应的函数处理,否则不进行任何处理
t_if("条件", 函数)
返回日志(LOG)
对不符合条件的日志,进行相应的函数处理,否则不进行任何处理
t_if_not("条件",函数)
返回日志(LOG)
基于条件判断,分别进行不同的函数处理
t_if_else("条件", 函数1, 函数2)
返回日志(LOG)
基于多分支条件,分别进行不同的函数处理,如果存在不符合所有条件的数据,将被丢弃
t_switch("条件1", 函数1, "条件2", 函数2, ...)
返回日志(LOG)
行处理函数类:日志的分发、丢弃、拆分。
函数名称
函数功能
函数语法描述
返回值类型
输出到指定的目标主题。可以配合分支条件使用,也可以单独使用
log_output(日志主题别名),该参数在新建数据加工任务时,目标日志主题别名处配置
无返回,对目前的数据流进行输出
将日志输出到动态的目标主题。例如您需要根据日志字段"pd"的值,动态创建多个目标日志主题,并将对应的日志分发至目标日志主题。
log_auto_output(topic_name="", logset_name="", index_options="", period=3,storage_type=" ",hot_period=0)
无返回,对目前的数据流进行输出
使用分隔符结合 Jmes 表达式,对特定字段进行拆分,拆分结果分裂为多行日志
log_split(字段名, sep=",", quote="\\", jmes="", output="")
返回日志(LOG)
丢弃符合条件的日志
log_drop(条件1)
返回日志(LOG)
保留符合条件的日志
log_keep(条件1)
返回日志(LOG)
将日志根据 Jmes 语法将 JSON 数组拆分和展开
log_split_jsonarray_jmes("field", jmes="items", prefix="")
返回日志(LOG)
字段处理函数:字段的增删改查、重命名。
函数名称
函数功能
函数语法描述
返回值类型
为动态生成的主题打标签。从日志字段中提取标签值,并将这些标签值作为动态生成主题的标签
extract_tag(标签名1,标签值1,标签名2,标签值2....)
返回日志(LOG)
根据字段名进行匹配,丢弃匹配到的字段
fields_drop(字段名1, 字段名2, ..., regex=False,nest=False)
返回日志(LOG)
根据字段名进行匹配,保留匹配到的字段
fields_keep(字段名1, 字段名2, ..., regex=False)
返回日志(LOG)
根据正则表达式来匹配字段名,并将匹配到的字段打包到新的字段,新字段值使用 JSON 格式进行组织
fields_pack(目标字段名, include=".*", exclude="", drop_packed=False)
返回日志(LOG)
用来设置字段值,或者增加新字段
fields_set(字段名1, 字段值1, 字段名2, 字段值2, mode="overwrite")
返回日志(LOG)
字段重命名
fields_rename(字段名1, 新字段名1, 字段名2, 新字段名2, regex=False)
返回日志(LOG)
字段存在时,返回 True,否则返回 False
has_field(字段名)
返回条件值(BOOL)
字段不存在时,返回 True,否则返回 False
not_has_field(字段名)
返回条件值(BOOL)
?v?
获取字段值,返回对应字符串
v(字段名)
返回值字符串类型(STRING)
值结构化处理函数类:JSON 数据的处理。
函数名称
函数功能
函数语法描述
返回值类型
获取数组的值
array_get(数组,下标位置)
返回值字符串类型(STRING)
通过 Jmes 表达式,提取 JSON 字段值,并返回 Jmes 提取结果的 JSON 字符串
json_select(v(字段名), jmes="")
返回值字符串类型(STRING)
解析 XML 值并转换为 JSON 字符串,输入值必须为 XML 字符串结构,否则会导致转换异常
xml_to_json(字段值)
返回值字符串类型(STRING)
解析 JSON 字符串值并转换为 XML 字符串
json_to_xml(字段值)
返回值字符串类型(STRING)
判断是否为 JSON 字符串
if_json(字段值)
返回条件值(BOOL)
正则处理函数类:使用正则公式对文本中的字符进行匹配、替换。
函数名称
函数功能
函数语法描述
返回值类型
基于正则对数据进行匹配,返回是否匹配成功,可以选择全匹配还是部分匹配
regex_match(字段值, regex="", full=True)
返回条件值(BOOL)
基于正则对数据进行匹配,返回相应的部分匹配结果,可以指定匹配结果的第几个表达式,以及第几个分组(部分匹配+指定捕获组序号),如果最终没有匹配结果,则返回空字符串
regex_select(字段值, regex="", index=1, group=1)
返回值字符串类型(STRING)
基于正则对数据进行分割,返回 JSON Array 字符串(部分匹配)
regex_split(字段值, regex=\\"\\", limit=100)
返回值字符串类型(STRING)
基于正则匹配并替换(部分匹配)
regex_replace(字段值, regex="", replace="", count=0)
返回值字符串类型(STRING)
基于正则进行匹配,并将匹配结果添加到 JSON 数组中,并返回 Array 字符串(部分匹配)
regex_findall(字段值, regex="")
返回值字符串类型(STRING)
日期处理类
函数名称
函数功能
函数语法描述
返回值类型
将时间类的字段值(特定格式的日期字符串或者时间戳),转换为指定时区、格式的目标日期字符串
dt_str(值, format="格式化字符串", zone="")
返回值字符串类型(STRING)
将时间类的字段值(特定格式的日期字符串),同时指定字段对应的时区,转换为 UTC 时间戳
dt_to_timestamp(值, zone="")
返回值字符串类型(STRING)
将时间类的时间戳字段,指定目标时区后,转换为时间字符串
dt_from_timestamp(值, zone="")
返回值字符串类型(STRING)
获取加工计算时的本地时间
dt_now(format="格式化字符串", zone="")
返回值字符串类型(STRING)
字符串处理类
函数名称
函数功能
函数语法描述
返回值类型
在值中指定范围内查找子串,返回子串出现的次数
str_count(值, sub="", start=0, end=-1)
返回子串次数(INT)
返回字符串长度
str_len(值)
返回字符串长度(INT)
返回大写字符串
str_uppercase(值)
返回值字符串类型(STRING)
返回小写字符串
str_lowercase(值)
返回值字符串类型(STRING)
使用拼接字符串,拼接多值
str_join(拼接字符串1, 值1, 值2, ...)
返回值字符串类型(STRING)
替换字符串,返回替换结果字符串
str_replace(值, old="", new="", count=0)
返回值字符串类型(STRING)
格式化字符串,返回格式化结果
str_format(格式化字符串, 值1, 值2, ...)
返回值字符串类型(STRING)
剔除用户指定的字符序列中的字符,从字符串开头和结尾同时剔除,返回剔除后的结果
str_strip(值, chars="\\t\\r\\n")
返回值字符串类型(STRING)
剔除用户指定的字符序列中的字符,从字符串左侧开头剔除,返回剔除后的结果
str_strip(值, chars="\\t\\r\\n")
返回值字符串类型(STRING)
剔除用户指定的字符序列中的字符,从字符串右侧结尾部分剔除,返回剔除后的结果
str_strip(值, chars="\\t\\r\\n")
返回值字符串类型(STRING)
在值中查找子串,并返回子串出现的位置
str_find(值, sub="", start=0, end=-1)
返回指定第一次出现在值中的子字符串的位置(INT)
判断字符串是否以指定字符串开头
str_start_with(值, sub="", start=0, end=-1)
返回是否匹配的结果(BOOL)
判断字符串是否以指定字符串结尾
str_end_with(值, sub="", start=0, end=-1)
返回是否匹配的结果(BOOL)
逻辑表达式函数类
函数名称
函数功能
函数语法描述
返回值类型
根据条件判断,返回相应的值
op_if(条件1, 值1, 值2)
条件为 True 时,返回值1,否则返回值2
对值进行 and 运算,均为 True 时,返回 True,否则返回 False
op_and(值1, 值2, ...)
返回计算的结果(BOOL)
对值进行 or 运算,若存在参数值为 False 则返回 False,否则返回 True
op_or(值1, 值2, ...)
返回计算的结果(BOOL)
对值进行 not 运算
op_not(值)
返回计算的结果(BOOL)
对值进行比较,相等则返回 True
op_eq(值1, 值2)
返回比较的结果(BOOL)
对值进行比较,值1大于或等于值2时返回 True
op_ge(值1, 值2)
返回比较的结果(BOOL)
对值进行比较,值1大于值2时返回 True
op_gt(值1, 值2)
返回比较的结果(BOOL)
对值进行比较,值1小于或等于值2时返回 True
op_le(值1, 值2)
返回比较的结果(BOOL)
对值进行比较,值1小于值2时返回 True
op_lt(值1, 值2)
返回比较的结果(BOOL)
对值进行求和运算
op_add(值1, 值2)
返回求值结果
对值进行求差运算
op_sub(值1, 值2)
返回求值结果
对值进行乘积运算
op_mul(值1, 值2)
返回求值结果
对值进行除法运算
op_div(值1, 值2)
返回求值结果
对多值累加求和
op_sum(值1, 值2, ...)
返回求值结果
对值进行模计算
op_mod(值1, 值2)
返回求值结果
对值进行是否为 null 判断,是则返回 True,否则返回 False
op_null(值)
返回计算的结果(BOOL)
对值进行是否为非 null 判断,是则返回 True,否则返回 False
op_notnull(值)
返回计算的结果(BOOL)
对字符串值进行比较,相等则返回 True
op_str_eq(值1, 值2, ignore_upper=False)
返回计算的结果(BOOL)
生成随机数(两个参数之间的一个随机数),左闭右闭
random(值1, 值2)
返回求值结果
判断是否存在子串
str_exist(值1, 值2, ignore_upper=False)
返回计算的结果(BOOL)
类型转换函数类
函数名称
函数功能
函数语法描述
返回值类型
对值进行整型转换,可指定原值的进制,转为十进制数值
ct_int(值1, base=10)
返回求值结果
将值转换为浮点型数值
ct_float(值)
返回求值结果
将值转换为字符串
ct_str(值)
返回求值结果
将值转换为布尔值
ct_bool(值)
返回求值结果
编解码函数类
函数名称
函数功能
函数语法描述
返回值类型
将编码 URL 进行解码
decode_url(值)
返回值字符串类型(STRING)
计算并返回 MD5 值
md5_encoding(值)
计算并返回 MD5 值
生成 universally unique identifier (UUID) ,即唯一识别码
uuid()
计算并返回 UUID 值
对字符串进行指定格式的编码
str_encode(值)
返回值字符串类型(STRING)
对字符串进行指定格式的解码
str_decode(值)
返回值字符串类型(STRING)
将字符串进行 base64 编码
base64_encode(值, format="RFC3548")
返回base64字符串类型(STRING)
将字符串进行 base64 解码
base64_decode(值, format="RFC3548")
返回值字符串类型(STRING)
IP 解析函数类
函数名称
函数功能
函数语法描述
返回值类型
解析出函数的地理位置
geo_parse(字段值, keep=("country","province","city"), ip_sep=",")
返回 JSON 字符串
判断 IP 是否在该网段内, 支持多个网段
is_subnet_of (网段列表, ip)
返回计算的结果(BOOL)


http://www.vxiaotou.com