本文介绍数据加工语法相关的数据结构及其说明。
基本数据结构
基本数据结构的不同类型和说明如下表所示:
| 类型 | 说明 | 
| 整数 | 用于设置字段值或者函数的参数传递。 例如 | 
| 浮点 | 用于设置字段值或者函数的参数传递。 例如 | 
| 字符串(String) | 字符串说明如下: 
 说明  搜索值只能使用半角双引号("")包裹。您可以使用单引号('')包裹外层字符串,使用半角双引号("")包裹里层搜索值,例如: | 
| 字节 | 
 | 
| 空 | 
 说明  空字符串与None、null的数据类型不同。 | 
| 列表(List) | 数组,例如[1,2,3,4]。 
 | 
| 元组(tuple) | 元组,与列表功能相同。例如 | 
| 字典(Dict) | 形式为 
 | 
| 布尔(Bool) | 例如 | 
| 表格 | 多列的表格结构。您可以从外部资源中加载多行CSV格式内容构建表格,或者从RDS、Logstore中加载多列数据获取。主要用于映射富化或其他高级配置场景。 | 
| 日期时间对象 | 表示日期时间的内存对象,可以转换为Unix字符串或者格式化的时间字符串,或者传递给其他 | 
事件类型
相关事件类型和说明如下:
- 基本类型 - 数据加工将日志数据以字典结构进行加工处理,例如 - {"__topic__": "access_log", "content": "....."}。- 字典的关键字和值,对应日志的字段和值。 说明- 事件的关键字和值都是字符串且关键字不能重复。 
- 元字段 - 元字段主要包含如下三部分: - 时间字段 - __time__:写入日志数据时指定的日志时间。数据类型为整数字符串,Unix标准时间格式。单位为秒,表示从1970-1-1 00:00:00 UTC计算起的秒数。
- 主题 - __topic__:日志库内的日志可以通过日志主题来划分。您可以在写入时指定日志主题,并在查询时指定查询的日志主题。
- 源 - __source__:日志的来源,例如产生该日志机器的IP地址。
 
- 时间字段修改 - 修改时间字段的值,就是修改日志的事件时间。可以用日期时间函数对其进行更多的操作。 说明- 如果删除了时间字段,在输出日志时,会取数据加工处理数据时的系统时间作为新的事件时间。 
- 标签 - 标签(tag)指日志存在标记,用于区分字段。标签会以 - __tag__:名称关键字的格式存在。- 如果源Logstore打开了记录外网IP功能,则会存在 - tag:__tag__:__receive_time__。
- 容器服务的日志会存在许多容器类的tag,例如 - __tag__:__container_name__。
- 可以添加、修改tag。例如添加一个tag名为type: - e_set("__tag__:type", "access_log")。
 
- 赋值自动转换 - 事件的关键字和值都是字符串,因此对事件进行赋值或者设置新的字段值时,会自动对关键字和值进行字符串转换。例如: - e_set("v1", 12.3) e_set("v2", True)- 将字段 - v1的值设置为字符串12.3,将字段- v2值设置为字符串true。- 如下为各数据类型转换为字符串示例: - 类型 - 样例 - 转换类型 - 转换样例 - 整数 - 1- 字符串 - "1"- 浮点 - 1.2- 字符串 - "1.2"- 布尔 - True- 字符串 - "true"- 字节 - b"123"- 使用UTF8解码为字符串 - "123"- 元组 - 样例1: - (1, 2, 3)
- 样例2: - ("a", 1)
 - 列表的字符串 - 样例1: - "[1, 2, 3]"
- 样例2: - "[\"a\", 1]"
 - 列表 - 样例1: - [1,2,3]
- 样例2: - ["a", 1]
 - 字符串 - 样例1: - "[1, 2, 3]"
- 样例2: - "[\"a\", 1]"
 - 字典 - {"1":2, "3":4}- 字符串 - "{\"1\": 2, \"3\": 4}"- 日期时间 - datetime(2018, 10, 10, 10, 10, 10)- ISO格式字符串 - 2018-10-10 10:10:10
固定标识
数据加工预设了一些固定标识,以便简化代码或便于理解:
| 标识 | 类型 | 说明 | 
| true | 布尔 | 真,等价于 | 
| false | 布尔 | 假,等价于 | 
| null | None | 无,等价于 | 
| F_TAGS | 字符串 | 
 | 
| F_META | 字符串 | 
 | 
| F_TIME | 字符串 | 
 | 
| F_PACK_META | 字符串 | 
 | 
| F_RECEIVE_TIME | 字符串 | 服务器接收日志的时间的 | 
| C_JOB_REGION | 字符串 | 数据加工任务所在地域ID,例如 | 
| C_JOB_PROJECT | 字符串 | 数据加工任务所在Project名称,例如 | 
| C_JOB_NAME | 字符串 | 数据加工任务配置名称,例如 | 
| C_JOB_ID | 字符串 | 数据加工任务运行ID,例如 | 
JSON对象
JSON对象是指JSON表达式函数json_select或者json_parse解析提取后的对象,其由基本数据结构组成。输入字符串转换成对应JSON对象的形式如下表所示:
| 字符串 | JSON对象 | 实际类型 | 
| 
 | 
 | 整数 | 
| 
 | 
 | 浮点 | 
| 
 | 
 | 布尔 | 
| 
 | 
 | 布尔 | 
| 
 | 
 | 字符串 | 
| 
 | 
 | None | 
| 
 | 
 | 列表 | 
| 
 | 
 | 列表 | 
| 
 | 
 | 字典 | 
| 
 | 
 | 字典 |