活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 驭马迎春·福礼抢先领 5.5折无门槛折扣券+开箱即用方案双加持,节后上云快人一步!
  • 云上钜惠 爆款云主机全场特惠,2核4G只要1.8折起!
  • 中小企业服务商合作专区 国家云助力中小企业腾飞,高额上云补贴重磅上线
  • 出海产品促销专区 NEW 爆款云主机低至2折,高性价比,不限新老速来抢购!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

息壤智算

领先开放的智算服务平台,提供算力、平台、数据、模型、应用“五位一体”智算服务体系,构建全流程的AI基础设施能力
AI Store
  • 算力市场
  • 模型市场
  • 应用市场
  • MCP市场
算力互联调度平台
  • 裸金属
  • 定制裸金属
训推服务
  • 模型开发
  • 训练任务
  • 服务部署
模型推理服务
  • 模型广场
  • 体验中心
  • 服务接入
应用托管
  • 应用实例
科研助手
  • 科研智能体
  • 科研服务
  • 开发机
  • 并行计算
大模型
  • DeepSeek-V3.1
  • DeepSeek-R1-0528
  • DeepSeek-V3-0324
  • Qwen3-235B-A22B
  • Qwen3-32B
智算一体机
  • 智算一体机
模型适配专家服务
  • 模型适配专家服务
算力服务商
  • 入驻算力服务商

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场进入AI Store创新解决方案公有云生态专区智云上海应用生态专区
建站工具
  • 新域名服务
  • SSL证书
  • 翼建站
企业办公
  • 安全邮箱
  • WPS 365 天翼云版
  • 天翼企业云盘(标准服务版)
灾备迁移
  • 云管家2.0
  • 翼备份(SaaS版)

定价

协助您快速了解云产品计费模式、价格详情,轻松预估上云成本
价格计算器
  • 动态测算产品价格
定价策略
  • 快速了解计费模式

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼信创云专区
  • 信创云专区
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
培训与认证
  • 天翼云学堂
  • 天翼云认证
开源社区
  • 魔乐社区
  • OpenTeleDB

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 服务保障
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家
我要反馈
  • 建议与反馈
  • 用户体验官
信息公告
  • 客户公告

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 息壤智算
  • 产品
  • 解决方案
  • 应用商城
  • 定价
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心
      文档中心

      云日志服务

      云日志服务

      • 云日志服务

      无数据

        • 产品动态
        • 产品介绍
        • 产品定义
        • 功能特性
        • 产品优势
        • 应用场景
        • 术语解释
        • 使用限制
        • 基础资源
        • 数据读写
        • 日志采集器
        • 查询与分析
        • 与其他服务关系
        • 计费说明
        • 计费概述
        • 计费模式
        • 按需计费
        • 资源包
        • 计费项
        • 计费样例
        • 欠费说明
        • 停止计费与退订
        • 计费FAQ
        • 快速入门
        • 入门概览
        • 开通云日志服务
        • 创建日志项目与日志单元
        • 日志接入
        • 查询与分析
        • 用户指南
        • 日志管理
        • 日志管理概述
        • 资源统计
        • 管理日志项目
        • 管理日志单元
        • 超额采集配置
        • 标签管理
        • 日志接入
        • 主机管理
        • 主机组管理
        • 采集器安装
        • 采集器管理
        • 采集常见错误类型
        • 概述
        • 接入云主机-文本日志
        • 接入云容器引擎-应用日志
        • 日志结构化解析
        • 单行全文模式
        • 多行全文模式
        • 单行分隔符模式
        • 单行正则模式
        • 多行正则模式
        • JSON模式
        • Nginx分词
        • 日志主题
        • 自定义日志时间
        • API接入
        • API接入概述
        • 访问地址(Endpoint)
        • 上报日志
        • SDK接入
        • SDK接入概述
        • 云日志服务Go SDK
        • 云日志服务Java SDK
        • 云日志服务Python SDK
        • 云日志服务C++ SDK
        • 云日志服务Log4j2 SDK
        • 云日志服务Logback SDK
        • 云日志服务Logging handler SDK
        • 云日志服务C SDK
        • 云日志服务.NET SDK
        • 云日志服务PHP SDK
        • 云日志服务 node.js SDK
        • 错误码
        • 其他接入方式
        • Systemd Journal日志采集
        • 使用Syslog协议(采集器)上传日志
        • 通过对象存储导入日志
        • 通过kafka导入日志
        • Windows事件日志采集
        • Nginx日志采集
        • 日志模拟接入
        • 云服务日志接入
        • 接入概览
        • 云服务操作日志
        • 对象存储访问日志
        • 分布式缓存服务Redis
        • 关系数据库MySQL
        • 关系数据库PostgreSQL版
        • 分布式容器云平台CCEONE
        • 微服务引擎-云原生网关
        • NAT网关
        • 云搜索
        • 翼MR
        • 关系数据库SQL Server版
        • 应用服务网格
        • 文档数据库服务
        • 分布式消息服务Kafka
        • 弹性负载均衡访问日志
        • 查询与分析
        • 日志查询
        • 日志查询
        • 上下文查询
        • 快速分析
        • 保存快速查询日志条件
        • 查询语法
        • SQL统计分析
        • 概述
        • SQL语法
        • SQL函数
        • 函数概览
        • 聚合函数
        • 字符串函数
        • 日期和时间函数
        • JSON函数
        • 正则式函数
        • 数组函数
        • Map映射函数
        • 数学计算
        • 数学统计
        • 估算函数
        • 二进制函数
        • 位运算函数
        • 地理函数
        • HyperLogLog函数
        • 比较运算符
        • 条件表达式
        • IP地址转换函数
        • URL函数
        • 手机号码函数
        • 机器学习函数
        • 单位转换函数
        • 类型转换函数
        • 经典分析样例
        • 索引配置
        • 内置保留字段
        • 日志聚类
        • 日志可视化
        • 可视化概述
        • 统计图表
        • 概述
        • 表格
        • 柱状图
        • 时序图
        • 饼图
        • 流图
        • 数值图
        • 散点图
        • 词云图
        • 漏斗图
        • 雷达图
        • 拓扑图
        • 仪表盘
        • 创建仪表盘
        • 添加过滤器
        • 添加可视化图表
        • 仪表盘导入
        • 权限管理
        • 数据加工
        • 数据加工概述
        • 基本概念
        • 创建数据加工任务
        • 管理数据加工任务
        • 观测与监控数据加工任务
        • 数据加工语法
        • 概述
        • 流程控制函数
        • 事件操作函数
        • 字段操作函数
        • 事件操作函数
        • 操作符函数
        • 事件检查函数
        • 转换函数
        • 算术函数
        • 字符串函数
        • 日期时间函数
        • 正则表达式函数
        • 特定结构化数据函数
        • 编码解码函数
        • URL函数
        • SPL加工
        • 日志转储
        • 概述
        • 转储至分布式消息服务Kafka
        • 转储至对象存储ZOS
        • 日志告警
        • 概述
        • 通知组管理
        • 通知策略管理
        • 告警规则
        • 告警历史
        • 告警事件历史
        • 告警发送历史
        • 静默策略
        • 云审计服务支持的关键操作
        • 最佳实践
        • 将本地日志迁移到云日志服务
        • 优化查询性能
        • 查询Log4j日志
        • 查询分析Nginx访问日志
        • 数据加工-日志过滤
        • 数据加工-为日志空缺字段赋值
        • 数据加工-为日志不存在的字段填充默认值
        • 告警-出现关键字即触发告警
        • 告警-根据关键字出现的次数设置告警
        • 基于业务日志的运维分析
        • 导入第三方云厂商日志服务数据
        • API参考
        • API使用说明
        • API
        • 2024-04-25
        • 服务开通
        • 检查实例License
        • 采集配置
        • 仪表盘
        • 日志单元
        • 日志服务CLI
        • CLI概述
        • 安装CLI
        • 全局配置
        • CLI使用
        • 常见问题
        • 售前常见问题
        • 日志管理
        • 云日志服务使用建议
        • 云日志服务LTS对比自建ELK,应该如何选择?
        • 如何从第三方云厂商将日志搬迁到天翼云?
        • 数据采集
        • 常见问题
        • 如何查看日志采集器的运行状态?
        • 云日志服务可以采集哪类日志?支持采集哪些文件类型?
        • 云主机采集器无法连通如何处理?
        • 采集器安装失败如何处理?
        • 如何创建云日志服务终端节点?
        • 主机接入配置完成后未采集到日志如何处理?
        • 如何查看与升级插件版本?
        • 主机组中新增云主机后,如何启动日志采集?
        • 如何获取访问密钥(AK/SK)?
        • 数据存储
        • 查询与分析
        • 常见问题
        • 为什么检索不到日志?
        • 查询语法相关问题
        • 数据加工
        • 日志转储
        • 日志告警
        • 常见问题
        • 为什么出现漏告警或者误告警?
        • 触发告警成功,但是通知失败,如何处理?
        • 相关协议
        • 产品服务协议
        • 产品服务等级协议
          无相关产品

          本页目录

          帮助中心云日志服务用户指南数据加工SPL加工
          SPL加工
          更新时间 2026-02-11 11:29:57
          • 新浪微博
          • 微信
            扫码分享
          • 复制链接
          最近更新时间: 2026-02-11 11:29:57
          分享文章
          • 新浪微博
          • 微信
            扫码分享
          • 复制链接

          SPL概述

          云日志服务提供SPL语句(Semi-structured Processing Language),对半结构化的日志数据做结构化处理,比如信息提取、字段操作、数据过滤等操作。SPL提供类Linux Shell脚本的管道级联功能,其中第一级管道前的表达式是数据源(可以是索引过滤条件或其他SPL语句的命名引用),后面的多级管道前后都是SPL命令表达式。

          SPL语法说明

          一个SPL语句由多个表达式组成,各表达式之间通过英文管道符 (|) 连接;一个SPL语句以英文分号 (;) 作为语句结束符。SPL语法结构如下:

          语法

          source-expr | cmd-expr | cmd-expr;

          参数说明

          参数说明示例
          source-expr数据源。包括日志单元数据和SPL命名引用· *
          · $src
          |管道符:与Linux Shell中管道符作用类似,即管道前的指令的输出会作为管道后的指令的输入 
          cmd-expr指令表达式,即SPL处理日志数据的各种表达式。
          详情参考指令表达式语法。
          parse -type=csv __raw__ as time,ip,level,msg

          数据源

          分类场景数据来源说明
          非命名引用采集采集器采集数据使用星号(*)表示将采集器采集的全部原始数据作为输入
          数据加工日志单元数据使用索引过滤结果作为输入。
          · 目前索引过滤条件仅支持*
          命名引用SPL通过let指令定义的命名引用前提:其他SPL表达式已通过let指令定义了命名引用;
          通过$+命名引用名称,即可解引用并将其当作数据源

          指令表达式语法

          语法

          cmd -option=<option> -option ... <expression>, ... as <output>, ...

          参数说明

          参数说明
          cmd指令名称;已支持的指令请参考 SPL指令列表
          option指令执行参数。参数名以中划线(-)开头,参数顺序无要求
          支持如下2种参数类别:
          · 键值参数-option=<option>,使用时以键值对的形式输入
          · 开关参数-option,默认均为关闭状态,添加该参数即表示打开开关
          expression对数据源执行处理的表达式参数(列表);如有多个表达式则以逗号(,)分隔,参数顺序必须与指令的定义保持一致
          表达式类型:
          · 字段名:比如"topic#1"
          · 字符串表达式:比如'__tag__*'
          · 键值表达式:比如,对字段赋值 topic='process';计算SQL表达式并赋值给字段 host=regexp_extract("data#refer", '\w+.\w+')
          · SQL表达式:如 cast(status as integer)!=200
          output输出字段名(列表);如有多个字段则以逗号(,)分隔

          数据类型

          类别类型名称说明
          基础数据类型boolean布尔类型, true或false
          tinyint8位整数类型
          smallint16位整数类型
          integer32位整数类型
          bigint64位整数类型
          float32位浮点类型
          double64位浮点类型
          timestampUNIX时间戳类型
          date日期数据类型,格式为YYYY-MM-DD
          datetime日期时间数据类型,格式为YYYY-MM-DD HH:MM:SS.SSS
          varchar可变长度字符数据类型

          参数类型说明

          参数类型说明
          bool布尔类型参数;SPL指令中为选项开关参数,通常表现形式是选项存在为true,不存在为false
          charASCII字符类型参数,需使用单引号('')包裹;比如','表示英文逗号,'\t'表示制表符
          integer整数类型参数
          string字符串类型参数,需使用单引号('')包裹;比如'this is an expression option'
          Regexp正则表达式类型参数,需使用单引号('')包裹,比如 '\w+'
          JSONPathJSON路径类型参数,需使用单引号('')包裹,比如 '$.response.docs[0]'
          Field字段名类型参数,比如* \| rename status="data#status":
          · 如果字段名以ASCII字母或下划线(_)开头,后续跟随ASCII字母、数字或下划线,则不需要用引号包裹;
          · 如果字段名中包含ASCII字母、数字、下划线以外的特殊字符,需使用双引号("")或反引号(``)包裹;
          Pattern字段名和通配符组合的字符串或字段名类型参数。通配符号*,表示匹配0个或多个任意字符。需使用单引号('')包裹,如fields -drop -wildcard '__tag__*'
          SQLExprSQL表达式类型参数
          SPLExprSPL表达式类型参数
          NameRef命名数据的名称,包含ASCII字母、数字和下划线,并且以字母开头,区分大小写

          SPL指令列表

          指令类别指令名称说明采集场景加工场景
          字段操作fields保留或排除指定模式相匹配的字段✓

          ✓

          rename重命名指定字段,并保留其他所有字段原样✓

          ✓

          expand展开指定字段的第一层JSON对象,生成多条结果×

          ✓

          SQL计算eval通过SQL表达式计算结果产生新字段✓

          ✓

          where根据SQL表达式过滤数据,保留满足SQL表达式的数据条目✓

          ✓

          数据解析提取parse解析并提取指定字段中的信息;支持正则/CSV/JSON/键值对 格式✓

          ✓

          数据加工pack打包多个日志字段,并以JSON序列化输出到新字段×

          ✓

          其他let将本SPL语句结果定义为命名数据,以提供给其他SPL语句作为源来引用×

          ✓

          fields指令

          用于保留或排除指定模式相匹配的字段。

          语法

          • 保留字段

          fields -wildcard -mode='overwrite' <pattern>, ... , <field>, ... , <output>=<field>
          • 排除字段

          fields -wildcard -drop <pattern>, ... , <field>, ...

          参数说明

          • 保留字段

          参数类型是否必填说明
          wildcardbool否是否开启通配模式。默认为字段精确匹配。若要开启通配模式,则需添加该参数
          modestring否重命名时,名字冲突的结果取值策略,详情参考新旧值保留与覆盖
          patternPattern否需要保留的字段和通配符组合(将处理匹配到的所有字段)
          使用此参数时,比如带上wildcard参数
          fieldField否需要保留的字段,或待重命名的原字段(即=右边)。对于重命名的原字段:
          1. 若该字段在输入数据中不存在,则不执行重命名。
          2. 不支持同一字段被多次重命名。
          outputField否重命名后的新字段名称,不支持多次重命名至相同的目标字段
          字段名冲突时,由mode参数决定取值策略
          • 排除字段

          参数类型是否必填说明
          dropbool否是否为排除模式。此选项出现时,表示执行丢弃字段操作;默认此选项关闭,即执行保留字段操作
          wildcardbool否是否开启通配模式。默认为字段精确匹配。若要开启通配模式,则需添加该参数
          patternPattern否需要排除的字段和通配符组合(将处理匹配到的所有字段)
          使用此参数时,比如带上wildcard参数
          fieldField否需要排除的字段

          注:

          • 保留字段时:

            • <pattern>、<field>、<output>=<field>三类参数至少有一个

            • 可在同一条指令中重命名字段;指令执行过程中,会先进行字段保留,再进行字段重命名。

          • 排除字段时:

            • <pattern>、<field>此两类参数至少有一个

            • 排除字段时,不可在同一条指令中同时进行字段重命名;

          • 时间字段(__ts__)不可排除、重命名与覆盖。详情请参见时间字段

          示例

          • 示例1:保留特定字段

          * | fields level, msg
          • 示例2:丢弃符合指定前缀的字段

          * | fields -drop -wildcard '__tag__*'
          • 示例3:重命名字段

          * | fields ip=__tag__hostip, msg

          rename指令

          重命名指定字段,并原样保留其他字段。

          语法

          rename -mode='overwrite' <output>=<field>

          参数说明

          参数类型是否必填说明
          modestring否重命名时,名字冲突的结果取值策略,详情参考新旧值保留与覆盖
          fieldField否待重命名的原字段。
          1. 若该字段在输入数据中不存在,则不执行重命名。
          2. 不支持同一字段被多次重命名。
          outputField否重命名后的新字段名称,不支持多次重命名至相同的目标字段
          字段名冲突时,由mode参数决定取值策略

          注:时间字段(__ts__)不可重命名与覆盖。详情请参见时间字段。

          示例

          • 重命名指定字段

          * | rename ip=__tag__hostip, pod=__tag__podname

          expand指令

          展开指定字段的第一层JSON对象,生成多条结果。

          语法

          expand -mode='overwrite' -path=<path> -limit=<limit> -keep <field> as <output>

          参数说明

          参数类型是否必填说明
          modestring否名字冲突的结果取值策略,详情参考新旧值保留与覆盖
          pathJSONPath否指定字段内容中的JSON路径,用于定位需要展开的内容位置。默认值为空,表示直接展开指定字段的完整内容
          limitinteger否每条原始数据可展开的最大条目数,值为1至10之间的整数。默认值为10
          keepbool否展开后是否保留原字段。默认不保留,需要保留时,打开此开关
          fieldField否需要展开的原字段名称,支持字段值的类型为varchar。如果指定字段不存在,则不执行展开操作
          outputField否展开的目标字段名称。如果不指定,则默认输出结果至输入字段。
          针对原始内容的展开逻辑为:
          1. JSON数组:根据数组的元素逐个展开。
          2. JSON字典:根据字典键值对逐个展开。
          3. 其他JSON类型:返回原值。
          4. 非法JSON:返回null

          注:

          • 时间字段(__ts__)不可重命名与覆盖。详情请参见时间字段。

          • 展开结果的数据类型为varchar

          示例

          • 示例1:展开数组,输出多条结果数据

            • SPL语句

            * |  expand fruits
            • 输入数据

            owner: 'Alice'
            fruits: '["apple", "pear", "banana"]'
            • 输出结果

            # 数据1
            owner: 'Alice'
            fruits: 'apple'
            
            # 数据2
            owner: 'Alice'
            fruits: 'pear'
            
            # 数据3
            owner: 'Alice'
            fruits: 'banana'
          • 示例2:按JSONPath展开指定内容,输出至新字段

            • SPL语句

            * |  expand -path='$.data' -keep http_body as rsp
            • 输入数据

            http_body: '{"data": {"alice":1, "bob":0}}'
            • 输出结果

            # 数据1
            http_body: '{"data": {"alice":1, "bob":0}}'
            rsp: '{"alice":1}'
            
            # 数据2
            http_body: '{"data": {"alice":1, "bob":0}}'
            rsp: '{"bob":0}'

          eval指令

          通过SQL表达式计算结果产生新字段。

          语法

          eval <output>=<sql-expr>, ...

          参数说明

          参数类型是否必填说明
          outputField是添加的目标字段名称。不支持多个表达式结果输出至相同的目标字段
          sql-exprSQLExpr是数据处理表达式

          示例

          • 示例1:使用数值运算表达式,将计算结果赋值给新字段

          * | eval result=a*b+c*d
          • 示例2:使用正则表达式提取值给新字段

          * | eval tid=regexp_extract(msg, '\w+-\w+')

          where指令

          根据SQL表达式过滤数据(只保留满足SQL表达式的数据)。

          语法

          where <sql-expr>

          参数说明

          参数类型是否必填说明
          sql-exprSQLExpr是SQL表达式(类似SQL中紧随where关键字的布尔表达式)

          示例

          • 示例1:根据字段内容过滤数据

          * | where level='ERROR'
          • 示例2:提取字段内的数字并转换类型后,比较数值并过滤数据

          * | where cast(regexp_extract(http_code, '\d+') as integer)>=300

          parse指令

          用指定解析器解析并提取指定字段中的信息。

          语法

          • 正则提取

          parse -type=regexp -mode=<mode> -pattern=<pattern> <field> as <output>, ...
          • CSV提取

          parse -type=csv -mode=<mode> -delim=<delim> -quote=<quote> -strict <field> as <output>, ...
          • JSON提取

          parse -type=json -mode=<mode> -path=<path> -prefix=<prefix> <field>
          • 键值分隔符提取

          parse -type=regexp -mode=<mode> -prefix=<prefix> -greedy -delim=<delim> -kv-sep=<kv-sep> <field>
          • 键值正则提取

          parse -type=kv_reg -mode=<mode> -prefix=<prefix> -pattern=<pattern> <field>

          参数说明

          • 正则提取

          参数类型是否必填说明
          typestring是提取器类型,正则提取为regexp
          modestring否名字冲突的结果取值策略,详情参考新旧值保留与覆盖
          patternRegexp是正则表达式
          fieldField是需要提取信息的原字段名称。
          输入数据中要包含该字段,类型为varchar,且其值为非null。否则,不执行提取操作。
          outputField否用于存储提取结果的字段名称
          • CSV提取

          参数类型是否必填说明
          typestring是提取器类型,CSV提取为csv
          modestring否名字冲突的结果取值策略,详情参考新旧值保留与覆盖
          delimstring否CSV分隔符。
          允许1至3个有效ASCII字符。可使用转义符表示特殊字符,比如\t表示制表符
          默认值为英文逗号(,)
          quotechar否CSV引用符。
          允许1个有效ASCII字符,比如双引号(")、单引号(')等
          默认不使用引用符。
          该参数仅在delim参数为单个字符时生效,且取值不能与delim相同。
          strictbool否当输入数据中,值的数量与output中指定字段不一致时,是否开启严格配对:
          · false:非严格配对,当值的数量多于字段时,多余值不输出;当字段数多于值时,多余字段输出为空字符串
          · true:严格配对,值与字段数量不一致时,不输出任何字段
          fieldField是需要提取信息的原字段名称。
          输入数据中要包含该字段,类型为varchar,且其值为非null。否则,不执行提取操作。
          outputField是用于存储提取结果的字段名称
          • JSON提取

          参数类型是否必填说明
          typestring是提取器类型,JSON提取为json
          modestring否名字冲突的结果取值策略,详情参考新旧值保留与覆盖
          pathJSONPath是指定字段内容中的JSON路径,用于定位需要提取的内容位置。默认值为空,表示直接展开指定字段的完整内容
          prefixstring否JSON结构展开的结果字段前缀,默认为空字符串
          fieldField是需要提取信息的原字段名称。
          输入数据中要包含该字段,类型为varchar,且其值为非null,且为合法JSON字符串。否则,不执行提取操作。
          • 分隔符键值提取

          参数类型是否必填说明
          typestring是提取器类型,键值分隔符提取为kv
          modestring否如果提取目标字段已存在于原数据中,可选择数据覆盖模式,默认值为overwrite。
          详情参考字段提取与覆盖模式
          prefixstring否提取结果输出字段名前缀,默认为空字符串。
          greedybool否是否开启贪婪匹配字段值:
          false:遇到delim即停止匹配字段值
          true:完整匹配下一个键值对前的内容作为字段值
          delimstring是多个键值对之间的分隔符。允许1至5个有效ASCII字符。
          不支持指定kv-sep的子字符串。
          kv-sepstring是键值对内部,键与值之间的分隔符。允许1至5个有效ASCII字符。
          不支持指定delim的子字符串。
          fieldField是需要提取信息的原字段名称。
          1. 如果输入数据中不包含该字段,或类型不为varchar,或值为null,则不执行提取操作。
          2. 如果数据内容未匹配到任何键值对,则不对该条目做任何处理
          • 正则键值提取

          参数类型是否必填说明
          typestring是提取器类型,正则分隔符提取为kv_reg
          modestring否如果提取目标字段已存在于原数据中,可选择数据覆盖模式,默认值为overwrite。
          详情参考字段提取与覆盖模式
          prefixstring否提取结果输出字段名前缀,默认为空字符串。
          patternRegexp是包含2个正则捕获组的正则表达式,第1个捕获组提取字段名,第2个捕获组提取字段值。
          fieldField是需要提取信息的原字段名称。
          输入数据中要包含该字段,类型为varchar,且其值为非null。否则,不执行提取操作。

          示例

          • 示例1:正则分组提取

            • SPL语句

            * | parse -type=regexp -pattern='(\S+)\s+\w+\s+(\S+)' msg as ip, uri
            • 输入数据

            msg: '192.168.0.1 POST /v1/content/fetch 32 0.128'
            • 输出结果

            msg: '192.168.0.1 POST /v1/content/fetch 32 0.128'
            ip: '192.168.0.1'
            uri: '/v1/content/fetch'
          • 示例2:CSV提取

            • SPL语句

            * | parse -type=csv msg as a,b,c
            • 输入数据

            msg: 'alice,bob,carol'
            • 输出结果

            msg: 'alice,bob,carol'
            a: 'alice'
            b: 'bob'
            c: 'carol'
          • 示例3:JSON提取

            • SPL语句

            * | parse -type=json -path='$.data' msg
            • 输入数据

            msg: '{"data": {"alice":1, "bob":0}}'
            • 输出结果

            msg: '{"data": {"alice":1, "bob":0}}'
            alice: 1
            bob: 0
          • 示例4:分隔符键值提取

            • SPL语句

            * | parse -type=kv -delim='&' -kv-sep='=' msg
            • 输入数据

            msg: 'thread=23921715548&rule=cable_1&dancer=alice'
            • 输出结果

            msg: 'thread=23921715548&rule=cable_1&dancer=alice'
            thread: '23921715548'
            rule: 'cable_1'
            dancer: 'alice'

          pack指令

          打包多个日志字段,并以JSON序列化输出到新字段

          语法

          pack -include=<include> -exclude=<exclude> -keep -ltrim as <output>

          参数说明

          参数类型是否必填说明
          includeRegexp否白名单配置,符合正则表达式的字段会被打包。默认为".*" ,表示全部匹配
          excludeRegexp否黑名单配置(优先于白名单),符合正则表达式的字段不会被打包。默认为空,表示不进行匹配判断
          keepbool否打包数据后是否保留被打包的原数据,默认为false:
          true:输出结果中保留被打包的原数据
          false:输出结果中不保留被打包的原数据
          ltrimstring否在输出字段名称中,去掉指定前缀
          outputField是指定打包后输出的字段名称。字段值格式为JSON字符串

          示例

          • 示例1:打包k1和k2字段到msg字段,不删除被打包的原始字段

            • SPL语句

            * | pack -keep -include='^\w+$' as msg
            • 输入数据

            key#val:'test'
            k1: 'v1'
            k2: 123
            • 输出结果

            key#val:'test'
            k1: 'v1'
            k2: 123
            msg: '{"k1":"v1", "k2":123}'

          let指令

          定义数据引用,作为后续SPL表达式的数据源。

          没有被引用到的命名引用定义将会被忽略

          语法

          • 定义数据引用

          let <name>=<spl-expr>
          • 解引用

          $<name>;        -- 直接输出
          $<name> | ...;  -- 作为其他SPL语句的数据源

          参数说明

          参数类型是否必填说明
          nameNameRef是数据引用的名称,包含ASCII字母、数字和下划线,并且以字母开头,区分大小写
          spl-exprSPLExpr是被命名引用的SPL表达式

          示例

          将访问日志基于状态码进行过滤和分类处理,然后将其输出

          • SPL语句

          -- 转换字段格式后,定义数据引用,名称为src
          let src=* | eval status=cast(status as integer);
          
          -- 通过$+引用名称,解引用,并分别对不同范围的状态码增加错误详情并输出
          $src | where status>=200 and status<300 | eval msg='success';
          $src | where status>=400 and status<500 | eval msg='request error';
          $src | where status>=500 | eval msg='server error';
          • 输入数据

          # 数据1
          status: '200'
          data: 'test ok'
          
          # 数据2
          status: '404'
          data: 'page not found'
          
          # 数据3
          status: '504'
          data: 'gateway timeout'
          • 输出结果

          # 结果1
          status: 200
          data: 'test ok'
          msg: 'success'
          
          # 结果2
          status: 404
          data: 'page not found'
          msg: 'request error'
          
          # 结果3
          status: 504
          data: 'gateway timeout'
          msg: 'server error'

          特殊字段处理

          时间字段

          在SPL执行过程中,云日志服务的日志时间字段(__ts__)类型始终保持为datetime。

          • 若要更新数据时间,需使用eval指令操作,且确保新值类型为datetime。

          • 其他指令均不可操作时间字段,其行为如下:

            • fields、rename:默认保留时间字段,不可将其重命名,也不可将其覆盖。

            • parse:如果提取结果包含时间字段,则将其忽略。

          字段提取与覆盖模式

          在SPL指令执行提取过程中,提取模式mode参数的取值说明如下

          参数值说明
          preserve提取出的字段名与现有字段重名时,保留现有字段
          overwrite覆盖目标字段

          新旧值保留与覆盖

          在SPL指令执行过程中,其输出的目标字段与输入数据中已有字段重名时,该字段的取值策略如下

          新旧值类型不一致

          直接保留输入字段原始值

          示例

          • SPL语句

          * | eval tmp=regexp_extract(msg, '\w+-\w+') -- 表达式计算结果为varchar类型,赋值给tmp
            | rename tid=tmp                          -- tid旧值integer类型,tmp为varchar类型;tid保留旧值
          • 输入数据

          msg: '127.0.0.1 ed06b28a-9de1006f INFO unknown method, discard request'
          tid: 3817568
          • 输出结果

          msg: '127.0.0.1 ed06b28a-9de1006f INFO unknown method, discard request'
          tmp: 'ed06b28a-9de1006f'
          tid: 3817568

          新旧值类型一致

          由指令中指定的mode参数确定。如果指令没有定义mode参数,则其默认值为overwrite

          模式说明
          overwrite使用新值覆盖旧值作为字段值
          preserve保留旧值作为字段值,舍弃新值

          示例

          • SPL语句

          * | eval tmp=regexp_extract(msg, '\w+-\w+') -- 表达式计算结果为varchar类型,赋值给tmp
            | rename -mode='overwrite' code=tmp       -- code旧值varchar类型,tmp为varchar类型;tid被新值覆盖
          • 输入数据

          msg: '127.0.0.1 ed06b28a-9de1006f INFO unknown method, discard request'
          code: '405 Method Not Allowed'
          • 输出结果

          msg: '127.0.0.1 ed06b28a-9de1006f INFO unknown method, discard request'
          code: 'ed06b28a-9de1006f'

           

           


           

          文档反馈

          建议您登录后反馈,可在建议与反馈里查看问题处理进度

          鼠标选中文档,精准反馈问题

          选中存在疑惑的内容,即可快速反馈问题,我们会跟进处理

          知道了

          上一篇 :  URL函数
          下一篇 :  日志转储
          搜索 关闭
          ©2026 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
          公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
          备案 京公网安备11010802043424号 京ICP备 2021034386号
          ©2026天翼云科技有限公司版权所有
          京ICP备 2021034386号
          备案 京公网安备11010802043424号
          增值电信业务经营许可证A2.B1.B2-20090001
          用户协议 隐私政策 法律声明