本文档介绍流程控制函数的语法与格式、相关的场景示例等。
对符合条件的日志,进行相应的加工处理,否则不进行任何处理。
c_if(条件1, 操作1, 条件2, 操作2, ……)
参数说明如下:
参数 | 参数类型 | 是否必选 | 默认值 | 取值范围 | 说明 |
---|---|---|---|---|---|
条件 | 任意 | 是 | / | / | 表达式或其组合,如果不是布尔类型时,会转换为布尔类型再判断。 |
操作 | 全局操作函数 | 是 | / | / | 全局操作函数或其组合。 |
场景:原始日志中存在字段 phone
时新增字段 contact_type
。
加工规则:
c_if(f_has("phone"), f_set("contact_type", "telephone"))
日志样例:
[ { "user_name":"Smith", "phone":"135xxxx5678" }, { "user_name":"Paul", "city":"chengdu" } ]
加工结果:
[ { "user_name":"Smith", "phone":"135xxxx5678", "contact_type":"telephone" }, { "user_name":"Paul", "city":"chengdu" } ]
说明
第一条日志中存在字段 phone
,加工后增加了字段 contact_type
;第二条日志中没有字段 phone
,加工不新增字段 phone
。
基于条件判断,分别进行不同的逻辑处理。当条件为真时,执行操作 1,否则执行操作 2。
c_if_else(条件, 操作1, 操作2)
参数说明如下:
参数 | 参数类型 | 是否必选 | 默认值 | 取值范围 | 说明 |
---|---|---|---|---|---|
条件 | 任意 | 是 | / | / | 表达式或其组合,如果不是布尔类型时,会转换为布尔类型再判断。 |
操作 1 | 全局操作函数 | 是 | / | / | 全局操作函数或其组合。 |
操作 2 | 全局操作函数 | 是 | / | / | 全局操作函数或其组合。 |
场景:根据年龄字段 age
判断是否是成年人,并将判断结果输出到新增字段 is_adult
中。
加工规则:
c_if_else(op_ge(v("age"), 18), f_set("is_adult", True), f_set("is_adult", False))
日志样例:
[ { "name":"Agatha", "age":"20" }, { "name":"Elvin", "age":"17" } ]
加工结果:
[ { "name":"Agatha", "age":"20", "is_adult":true }, { "name":"Elvin", "age":"17", "is_adult":false } ]
基于条件判断,分别进行不同的逻辑处理。基于多分支条件,执行第一个为真的条件对应的操作。如果所有条件均不满足,则执行默认操作。
c_switch(条件1, 操作1, 条件2, 操作2, ..., default=默认操作)
参数说明如下:
参数 | 参数类型 | 是否必选 | 默认值 | 取值范围 | 说明 |
---|---|---|---|---|---|
条件 | 任意 | 是 | / | / | 表达式或其组合,如果不是布尔类型时,会转换为布尔类型再判断。 |
操作 | 全局操作函数 | 是 | / | / | 全局操作函数或其组合。 |
default | 全局操作函数 | 是 | / | / | 默认操作,全局操作函数或其组合。 |
场景:根据日志字段 city
判断所属地域。
加工规则:
c_switch(op_eq(v("city"), "chengdu"), f_set("region", "West"), op_eq(v("city"), "shanghai"), f_set("region", "East"))
日志样例:
[ { "name":"Agatha", "city":"chengdu" }, { "name":"Elvin", "city":"shanghai" } ]
加工结果:
[ { "name":"Agatha", "city":"chengdu", "region":"West" }, { "name":"Elvin", "city":"shanghai", "region":"East" } ]
用于组合多个操作,多个操作应均为全局操作函数。
c_compose(操作1, 操作2...)
参数说明如下:
参数 | 参数类型 | 是否必选 | 默认值 | 取值范围 | 说明 |
---|---|---|---|---|---|
操作 | 全局操作函数 | 是 | / | / | 多个全局操作函数或其组合。 |
场景:日志中包含 content
字段时,更新其值为 value1 并重命名为 content_modified
。
加工规则:
c_if(f_has("content"),c_compose(f_set("content","value1"),f_rename("content","content_modified")))
日志样例:
{ "content":"value" }
加工结果:
{ "content_modified":"value1" }