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

2024-08-21 09:44

本文主要是介绍使用对比!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

这篇关于使用对比!SLS 数据加工 SPL 与旧版 DSL 场景对照的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1092804

相关文章

详解Vue如何使用xlsx库导出Excel文件

《详解Vue如何使用xlsx库导出Excel文件》第三方库xlsx提供了强大的功能来处理Excel文件,它可以简化导出Excel文件这个过程,本文将为大家详细介绍一下它的具体使用,需要的小伙伴可以了解... 目录1. 安装依赖2. 创建vue组件3. 解释代码在Vue.js项目中导出Excel文件,使用第三

Linux alias的三种使用场景方式

《Linuxalias的三种使用场景方式》文章介绍了Linux中`alias`命令的三种使用场景:临时别名、用户级别别名和系统级别别名,临时别名仅在当前终端有效,用户级别别名在当前用户下所有终端有效... 目录linux alias三种使用场景一次性适用于当前用户全局生效,所有用户都可调用删除总结Linux

java图像识别工具类(ImageRecognitionUtils)使用实例详解

《java图像识别工具类(ImageRecognitionUtils)使用实例详解》:本文主要介绍如何在Java中使用OpenCV进行图像识别,包括图像加载、预处理、分类、人脸检测和特征提取等步骤... 目录前言1. 图像识别的背景与作用2. 设计目标3. 项目依赖4. 设计与实现 ImageRecogni

Python将大量遥感数据的值缩放指定倍数的方法(推荐)

《Python将大量遥感数据的值缩放指定倍数的方法(推荐)》本文介绍基于Python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处理,并将所得处理后数据保存为新的遥感影像... 本文介绍基于python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处

python管理工具之conda安装部署及使用详解

《python管理工具之conda安装部署及使用详解》这篇文章详细介绍了如何安装和使用conda来管理Python环境,它涵盖了从安装部署、镜像源配置到具体的conda使用方法,包括创建、激活、安装包... 目录pytpshheraerUhon管理工具:conda部署+使用一、安装部署1、 下载2、 安装3

Mysql虚拟列的使用场景

《Mysql虚拟列的使用场景》MySQL虚拟列是一种在查询时动态生成的特殊列,它不占用存储空间,可以提高查询效率和数据处理便利性,本文给大家介绍Mysql虚拟列的相关知识,感兴趣的朋友一起看看吧... 目录1. 介绍mysql虚拟列1.1 定义和作用1.2 虚拟列与普通列的区别2. MySQL虚拟列的类型2

使用MongoDB进行数据存储的操作流程

《使用MongoDB进行数据存储的操作流程》在现代应用开发中,数据存储是一个至关重要的部分,随着数据量的增大和复杂性的增加,传统的关系型数据库有时难以应对高并发和大数据量的处理需求,MongoDB作为... 目录什么是MongoDB?MongoDB的优势使用MongoDB进行数据存储1. 安装MongoDB

关于@MapperScan和@ComponentScan的使用问题

《关于@MapperScan和@ComponentScan的使用问题》文章介绍了在使用`@MapperScan`和`@ComponentScan`时可能会遇到的包扫描冲突问题,并提供了解决方法,同时,... 目录@MapperScan和@ComponentScan的使用问题报错如下原因解决办法课外拓展总结@

mysql数据库分区的使用

《mysql数据库分区的使用》MySQL分区技术通过将大表分割成多个较小片段,提高查询性能、管理效率和数据存储效率,本文就来介绍一下mysql数据库分区的使用,感兴趣的可以了解一下... 目录【一】分区的基本概念【1】物理存储与逻辑分割【2】查询性能提升【3】数据管理与维护【4】扩展性与并行处理【二】分区的

使用Python实现在Word中添加或删除超链接

《使用Python实现在Word中添加或删除超链接》在Word文档中,超链接是一种将文本或图像连接到其他文档、网页或同一文档中不同部分的功能,本文将为大家介绍一下Python如何实现在Word中添加或... 在Word文档中,超链接是一种将文本或图像连接到其他文档、网页或同一文档中不同部分的功能。通过添加超