本文介绍数据加工语法相关的数据结构及其说明。
基本数据结构
基本数据结构的不同类型和说明如下表所示:
类型 | 说明 |
---|---|
整数 | 用于设置字段值或者函数的参数传递。
例如 |
浮点 | 用于设置字段值或者函数的参数传递。
例如 |
字符串(String) | 字符串说明如下:
说明 搜索值只能使用半角双引号(””)包裹。您可以使用单引号(”)包裹外层字符串,使用半角双引号(””)包裹里层搜索值,例如: |
字节 | b'abc' 不同于字符串的内存编码形式,作为某些特殊函数接收或者返回类型。 |
空 | None 或null 表示无。部分函数的命名参数的默认值是None ,表示特定的默认行为。 说明 空字符串与None、null的数据类型不同。 |
列表(List) | 数组,例如[1,2,3,4]。
|
元组(tuple) | 元组,与列表功能相同。例如(1,2,3,4) 。 |
字典(Dict) | 形式为{"key": "value", "k2": "v2", ...} 的键值对组合。关键字一般是字符串,且不能重复,值可以为上述各种类型。以哈希方式存储, 查找时无序。
|
布尔(Bool) | 例如True 、False 、true 、false 。 |
表格 | 多列的表格结构。您可以从外部资源中加载多行CSV格式内容构建表格,或者从RDS、Logstore中加载多列数据获取。主要用于映射富化或其他高级配置场景。 |
日期时间对象 | 表示日期时间的内存对象,可以转换为Unix字符串或者格式化的时间字符串,或者传递给其他dt_ 类函数进行进一步转换。 |
事件类型
相关事件类型和说明如下:
- 基本类型
数据加工将日志数据以字典结构进行加工处理,例如
{"__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")
。
- 如果源Logstore打开了记录外网IP功能,则会存在
- 赋值自动转换 事件的关键字和值都是字符串,因此对事件进行赋值或者设置新的字段值时,会自动对关键字和值进行字符串转换。例如:
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
- 样例1:
固定标识
数据加工预设了一些固定标识,以便简化代码或便于理解:
标识 | 类型 | 说明 |
---|---|---|
true | 布尔 | 真,等价于True 。 |
false | 布尔 | 假,等价于False 。 |
null | None | 无,等价于None 。 |
F_TAGS | 字符串 | TAG 字段正则表达式,等价于"__tag__:.+" 。 |
F_META | 字符串 | TAG ,__topic__ ,__source__ 字段的正则表达式表示,等价于__tag__:.+|__topic__|__source__ 。 |
F_TIME | 字符串 | __time__ 字段的名称,等价于__time__ 。 |
F_PACK_META | 字符串 | pack meta 字段的正则表达式表示形式,等价于"__pack_meta__|__tag__:__pack_id__" 。 |
F_RECEIVE_TIME | 字符串 | 服务器接收日志的时间的tag 字段,等价于"__tag__:__receive_time__" 。 |
C_JOB_REGION | 字符串 | 数据加工任务所在地域ID,例如cn-hangzhou 。例如e_set("job_region", C_JOB_REGION) 表示将数据加工任务所在地域ID赋值给job_region字段。 |
C_JOB_PROJECT | 字符串 | 数据加工任务所在Project名称,例如my-sls-project 。例如e_set("job_project", C_JOB_PROJECT) 表示将数据加工任务所属Project名称赋值给job_project字段。 |
C_JOB_NAME | 字符串 | 数据加工任务配置名称,例如etl-1649227848-642277 。例如e_set("job_name", C_JOB_NAME) 表示将数据加工任务配置名称赋值给job_name字段。 |
C_JOB_ID | 字符串 | 数据加工任务运行ID,例如73b96061b8c1c2101d558139bf641ea9 。例如e_set("job_id", C_JOB_ID) 表示将数据加工任务运行ID赋值给job_id字段。 |
JSON对象
JSON对象是指JSON表达式函数json_select
或者json_parse
解析提取后的对象,其由基本数据结构组成。输入字符串转换成对应JSON对象的形式如下表所示:
字符串 | JSON对象 | 实际类型 |
---|---|---|
1 |
1 |
整数 |
1.2 |
1.2 |
浮点 |
true |
True |
布尔 |
false |
False |
布尔 |
"abc" |
"abc" |
字符串 |
null |
None |
None |
["v1", "v2", "v3"] |
["v1", "v2", "v3"] |
列表 |
["v1", 3, 4.0] |
["v1", 3, 4.0] |
列表 |
{"v1": 100, "v2": "good"} |
{"v1": 100, "v2": "good"} |
字典 |
{"v1": {"v11": 100, "v2": 200}, "v3": "good"} |
{"v1": {"v11": 100, "v2": 200}, "v3": "good"} |
字典 |
内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家
阿里云企业补贴进行中: 马上申请
腾讯云限时活动1折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠
转转请注明出处:https://www.yunxiaoer.com/164354.html