You need to enable JavaScript to run this app.
导航
字段处理算子语法介绍
最近更新时间:2024.08.02 17:59:37首次发布时间:2024.08.02 17:59:37

本文档介绍内容洞察数据流处理环节中,可支持的对数据处理的算子能力。

概述

内容洞察字段处理算子目前支持以下4种操作,具体的语法及使用示例见下文:

  • Assign: 赋值
  • Drop: 丢弃某个字段
  • Filter: 过滤整个消息体
  • Convert: 转换字段类型
Assign

将某个值赋值,只支持string, bool**,int,float四种类型**

assign a => "123" // 把常量赋值给a,只支持string,bool,int,float
assign a => false
assign a => 1.23
assign a => 123
assign c => $b // b字段的值赋值给c
assign a.b => "123" // a是嵌套结构,赋值a中的b字段为123
assign c.d => $a.b // 嵌套结构,将a.b的值赋值给c.d

说明

  • int类型只支持最大值: 2,147,483,647 (2^31 - 1)到最小值: -2,147,483,648 (-2^31)范围之间的取值,若超过范围会报错。float类型支持七位精度,超过精度范围也会报错。

  • 若最后落库mysql的字段类型是时间类型的(date,timestamp,time等)需要保障落库字段的类型为string的"YYYY-MM-DD hh:mm:ss"格式,或者是int的timestamp格式,否则会落库失败


Drop

将数据中某个字段丢弃

drop a // 丢弃a字段
drop a.b // a是嵌套结构,丢弃a结构中的b字段

drop a if a == "123" // if a == "123" drop a字段,只支持string,bool, int, float
drop a if b != "123" // if b != "123" drop a字段,只支持string,bool, int, float

Filter

过滤满足条件的数据

filter if a == "123" // if a == "123" drop a字段,只支持string, bool, int, float
filter if a.b == "123" // a是嵌套结构,若a中的b字段 == "123", 过滤

说明

  • filter 必须有条件否则不能过滤

Convert

转换数据类型 如int => bool,string => int,float => int

convert a => bool // 可以使用bool, int, string, float
convert b => int

说明

int类型只支持最大值: 2,147,483,647 (2^31 - 1)到最小值: -2,147,483,648 (-2^31)范围之间的取值,如果string转int后的大小超过范围会报错。float同理。


配置示例

配置文件如下:

assign a => 12.8
convert a => int
assign c => 2.87
convert c => bool
drop c
assign d.f => true
convert d.f => int if a != $b
assign e => $a if d.f == 1
drop d if b == "123"
// 初始msg
msg = {"a": "x", "b": 123}
// 运行结果by line
assign a => 12.8                           //输出 {a=12.8, b=123}       
convert a => int                           //输出 {a=12, b=123}  
assign c => 2.87                           //输出 {a=12, b=123, c=2.87}  
convert c => bool                          //输出 {a=12, b=123, c=2.87}  
drop c                                     //输出 {a=12, b=123}  
assign d.f => true                         //输出 {a=12, b=123, d={f=true}}  
convert d.f => int if a != $b              //输出 {a=12, b=123, d={f=1}} 
assign e => $a if d.f == 1                 //输出 {a=12, b=123, d={f=1}, e=12} 
drop d if b == "123"                       //输出 {a=12, b=123, d={f=1}, e=12}

// 最终输出:
msg = {a=12, b=123, d={f=1}, e=12}