使用对比!SLS 数据加工 SPL 与旧版 DSL 场景对照

作者:灵圣

概述

如前一篇《SLS 数据加工全面升级,集成 SPL 语法》所述,SLS 数据加工集成了 SLS 数据处理语法 SPL。与旧版本数据加工 DSL 相比,SPL 在处理非结构化数据的场景中,其语法简洁度上有很多提升,比如中间类型保持、字段引用、无缝兼容 SQL 函数等。

这里我们继续讨论在不同的数据处理需求中,新版数据加工 SPL 与旧版数据加工 DSL 的使用对照。对于数据同步的场景,即不需要做任何数据处理,新版 SPL 与旧版 DSL 均传入空逻辑即可,以下不再赘述。

场景一:数据过滤与清洗

在日常运维中,错误日志分析是发现、定位问题的关键步骤。这里我们就以服务日志为例,介绍如何应用数据加工完成数据清洗。

旧版数据加工中,使用 e_keep/e_drop 完成数据清洗,对应的新版数据加工 SPL 中则使用 where 指令。

精确匹配

需要筛选出错误日志,即级别 level 字段值为字符串 ERROR。

模糊匹配

由于不同服务模块的编码标准差异,如果 level 字段的值并非固定,可能是 ERROR、ERR 或者 E 等。这个场景下就需要进行字符串模糊匹配。

数值范围

除了文本日志的筛选,我们还需要数值范围的比对。比如访问日志中,我们需要筛选出用户使用错误,以便分析哪些操作可能存在设计不合理,即筛选出状态码字段 status 值在 4xx 范围的数据。

存在性检查

另一个运维场景中,如果服务运行错误则会写出 error 字段,否则 error 字段不存在。我们需要筛选出包含 error 的数据条目。

场景二:字段管理

新字段构造

SPL 使用 extend 指令完成字段赋值操作,相当于数据加工 DSL 中的 e_set。

筛选、排除、重命名

SPL 提供原地处理指定字段的能力,即不需要给定完整的数据 Schema(包括字段列表、及其类型),可以直接操作给定字段,且不影响其他不相关的字段。

条件表达式

条件表达式对于处理混杂在一起的不同类型的数据是关键需求。SPL 通过 SQL 表达式完成条件判断。

场景三:时间信息解析与格式化

在 SPL 执行过程中,SLS 日志时间字段类型始终保持为数值类型 INTEGER 或者 BIGINT。SLS 日志字段包括数据时间时间戳字段 time 和数据时间纳秒部分字段 time_ns_part。需要更新数据时间时,须使用 extend 指令操作。

场景四:非结构或半结构化数据提取

在机器数据处理场景中,从非结构化或半结构化数据中提取关键信息,是一个繁琐的过程。因为数据没有固定的模式,需考虑太多处理细节,但处理的效率要求又极高。SPL 提供指令实现不同的数据提取,比如正则、JSON、CSV 等。

正则文本提取

JSON 结构数据提取

CSV 格式数据提取

相关链接:

[1] JsonPath

https://github.com/json-path/JsonPath

[2] JMES 语法

https://help.aliyun.com/zh/sls/user-guide/jmespath-syntax

[3] CSV RFC 4180

https://www.loc.gov/preservation/digital/formats/fdd/fdd000323.shtml

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/784422.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jenkins与gitlab持续集成配置webhook报500错误

Hook execution failed: Failed to open TCP connection to localhost:8585 (Connection refused - connect(2) for "localhost" port 8585) 在点击push events进行测试Jenkins时,出现上图,是因为gitlab没有打开一项权限,做如下设置即可

在孩子成长路上,爱与智慧的陪伴是送给孩子最好的礼物

如今智能设备的普及、社交媒体的兴起和娱乐方式的碎片化,使我们时刻被各种信息和刺激包围,这种环境对正处于成长期的儿童影响尤为显著,他们更容易被快节奏、高刺激的内容吸引,导致专注力下降,从而影响学习和认知能力的发展。针对这一现实挑战,数业智能心大陆推出了AI儿童…

TXT 记录解析怎么做?

在当今数字化的时代,网络技术的应用越来越广泛,而域名系统(DNS)则是网络通信中至关重要的一部分。TXT 记录作为 DNS 中的一种记录类型,有着特定的用途和解析方法。 那么,TXT 记录解析究竟该怎么做呢? 一、了解 TXT 记录的概念 TXT 记录,即文本记录,是一种可以存储任意…

Kubernetes基础命令

Kubernetes 提供 kubectl 是使用 Kubernetes API 与 Kubernetes 集群的控制面进行通信的命令行工具。 这个工具叫做 kubectl。 针对配置信息,kubectl 在 $HOME/.kube 目录中查找一个名为 config 的配置文件。 你可以通过设置 KUBECONFIG 环境变量或设置 --kubeconfig 参数来指…

CRMEB多商户版前端页面安装依赖要点

CRMEB多商户版CRMEB_Mer_v2.3.2(20240710源码包).zip安装环境如下(很重要)平台管理-admin端安装依赖yarn install平台商户-mer端安装依赖yarn install平台客服-service端安装依赖npm install

打砖块小游戏html小游戏

这里提供一个打砖块小游戏html代码,有需要的小伙伴可以自己试试。body内容 点击查看代码 <select id="difficulty"><option value="easy">简单</option><option value="medium">中等</option><option value=&…

LLM应用实战: 产业治理多标签分类

本期的干货就是分享关于如何基于LLM实现数量多、层级多的多标签分类的实战经验,各位读者可以参考借鉴。1. 背景 许久未见,甚是想念~ 近期本qiang~换了工作,处于新业务适应期,因此文章有一段时间未更新,理解万岁! 现在正在着手的工作是产业治理方面,主要负责其中一个功能…

使用cilium开发ebpf程序

使用go开发ebpf程序最常见的一个框架就是cilium。开发前需要了解ebpf,了解go语言的基础知识。 在本地安装go之后下载bpf2go go get github.com/cilium/ebpf/cmd/bpf2go 从最简单的开发框架开始 下载示例源码 git clone https://github.com/cilium/ebpf.git 在ebpf/examples下是…

element ui 中日期选择器disabledDate的几种用法

现实开发中,遇到截止日期,跟着接口返回来确定的。需要用函数来实现disabledDate 这块知识,在手册文档写的也不详细。 这块实现基于element-ui 2.15.14https://blog.csdn.net/hellowang02/article/details/131575982相信坚持的力量,日复一日的习惯.

Paper Reading: SAFE: Scalable Automatic Feature Engineering Framework for Industrial Tasks

本文提出了一种可扩展自动特征工程方法 SAFE,它包括特征生成阶段和特征选择阶段,具备较高的计算效率、可扩展性,能满足实际业务问题的要求。不同于使用算子枚举所有的生成特征,本文的特征生成阶段专注于挖掘原始特征对,以更高的概率生成更有效的新特征。在特征选择阶段,本…

织梦模板引擎的代码样式有如下几种形式

1、织梦模板引擎的代码样式有如下几种形式:{dede:标记名称 属性=值/} {dede:标记名称 属性=值}{/dede:标记名称}{dede:标记名称 属性=值}自定义样式模板(InnerText){/dede:标记名称} 提示: 如果使用带底层模板的标记,必须严格用{dede:标记名称 属性=值}{/dede:标记名称} 这种…

Flannel VxLAN DR 模式

Flannel VxLAN DR 模式Flannel VxLAN DR 模式 一、环境信息主机 IPubuntu 172.16.94.141软件 版本docker 26.1.4helm v3.15.0-rc.2kind 0.18.0clab 0.54.2kubernetes 1.23.4ubuntu os Ubuntu 20.04.6 LTSkernel 5.11.5 内核升级文档二、安装服务 kind 配置文件信息 $ cat insta…