活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 安全隔离版OpenClaw NEW OpenClaw云服务器专属“龙虾“套餐低至1.5折起
  • 聚力AI赋能 天翼云大模型专项 大模型特惠专区·Token Plan 轻享包低至9.9元起
  • 青云志云端助力计划 NEW 一站式科研助手,海外资源安全访问平台,助力青年翼展宏图,平步青云
  • 企业出海解决方案 NEW 助力您的业务扬帆出海,通达全球!
  • 天翼云信创专区 NEW “一云多芯、一云多态”,国产化软件全面适配,国产操作系统及硬件芯片支持丰富
  • 中小企业服务商合作专区 国家云助力中小企业腾飞,高额上云补贴重磅上线
  • 云上钜惠 爆款云主机全场特惠,2核4G只要1.8折起!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

息壤智算

领先开放的智算服务平台,提供算力、平台、数据、模型、应用“五位一体”智算服务体系,构建全流程的AI基础设施能力
AI Store
  • 算力市场
  • 模型市场
  • 应用市场
公共算力服务
  • 裸金属
  • 定制裸金属
训推服务
  • 模型开发
  • 训练任务
  • 服务部署
Token服务
  • 模型广场
  • 体验中心
  • 服务接入
应用托管
  • 应用实例
科研助手
  • 科研智能体
  • 科研服务
  • 开发机
  • 并行计算
大模型
  • DeepSeek-V4-Flash
  • GLM-5.1
  • Qwen3.5-122B-A10B
  • DeepSeek-V3.2(旗舰版)
  • GLM-5(正式版)
智算一体机
  • 智算一体机
智能体引擎
  • 智能体引擎
智算安全专区
  • 大模型安全评测
  • 大模型安全护栏
模型适配专家服务
  • 模型适配专家服务
算力服务商
  • 入驻算力服务商

应用商城

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

定价

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

合作伙伴

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

开发者

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

支持与服务

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

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2026智能云生态大会
  • 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日志采集
        • 日志模拟接入
        • 云服务日志接入
        • 接入概览
        • 关系数据库MySQL
        • 云服务操作日志
        • 对象存储访问日志
        • 应用服务网格
        • 文档数据库服务
        • 分布式消息服务Kafka
        • 关系数据库SQL Server版
        • 分布式缓存服务Redis
        • 翼MR
        • 云搜索
        • NAT网关
        • 微服务引擎-云原生网关
        • 分布式容器云平台CCEONE
        • 关系数据库PostgreSQL版
        • 弹性负载均衡访问日志
        • 查询与分析
        • 日志查询
        • 日志查询
        • 上下文查询
        • 快速分析
        • 保存快速查询日志条件
        • 查询语法
        • SQL统计分析
        • 概述
        • SQL语法
        • SQL函数
        • 函数概览
        • 聚合函数
        • 字符串函数
        • 日期和时间函数
        • JSON函数
        • 正则式函数
        • 数组函数
        • Map映射函数
        • 数学计算
        • 数学统计
        • 估算函数
        • 二进制函数
        • 位运算函数
        • 地理函数
        • HyperLogLog函数
        • 比较运算符
        • 条件表达式
        • IP地址转换函数
        • URL函数
        • 手机号码函数
        • 机器学习函数
        • 单位转换函数
        • 类型转换函数
        • 经典分析样例
        • 索引配置
        • 内置保留字段
        • 日志聚类
        • 日志可视化
        • 可视化概述
        • 统计图表
        • 概述
        • 表格
        • 柱状图
        • 时序图
        • 饼图
        • 流图
        • 数值图
        • 散点图
        • 词云图
        • 漏斗图
        • 雷达图
        • 拓扑图
        • 仪表盘
        • 创建仪表盘
        • 添加过滤器
        • 添加可视化图表
        • 仪表盘导入
        • 权限管理
        • 数据加工
        • 数据加工概述
        • 基本概念
        • 创建数据加工任务
        • 管理数据加工任务
        • 观测与监控数据加工任务
        • SPL加工
        • 日志转储
        • 概述
        • 转储至分布式消息服务Kafka
        • 转储至对象存储ZOS
        • 日志告警
        • 概述
        • 通知组管理
        • 通知策略管理
        • 告警规则
        • 告警历史
        • 告警事件历史
        • 告警发送历史
        • 静默策略
        • 云审计服务支持的关键操作
        • 最佳实践
        • 将本地日志迁移到云日志服务
        • 优化查询性能
        • 查询Log4j日志
        • 查询分析Nginx访问日志
        • 数据加工-日志过滤
        • 数据加工-为日志空缺字段赋值
        • 数据加工-为日志不存在的字段填充默认值
        • 告警-出现关键字即触发告警
        • 告警-根据关键字出现的次数设置告警
        • 基于业务日志的运维分析
        • 导入第三方云厂商日志服务数据
        • API参考
        • API使用说明
        • 日志服务CLI
        • CLI概述
        • 安装CLI
        • 全局配置
        • CLI使用
        • 常见问题
        • 售前常见问题
        • 日志管理
        • 云日志服务使用建议
        • 云日志服务LTS对比自建ELK,应该如何选择?
        • 如何从第三方云厂商将日志搬迁到天翼云?
        • 数据采集
        • 常见问题
        • 云日志服务可以采集哪类日志?支持采集哪些文件类型?
        • 如何查看日志采集器的运行状态?
        • 云主机采集器无法连通如何处理?
        • 采集器安装失败如何处理?
        • 如何创建云日志服务终端节点?
        • 主机接入配置完成后未采集到日志如何处理?
        • 如何查看与升级插件版本?
        • 主机组中新增云主机后,如何启动日志采集?
        • 如何获取访问密钥(AK/SK)?
        • 数据存储
        • 查询与分析
        • 常见问题
        • 为什么检索不到日志?
        • 查询语法相关问题
        • 数据加工
        • 日志转储
        • 日志告警
        • 常见问题
        • 为什么出现漏告警或者误告警?
        • 触发告警成功,但是通知失败,如何处理?
        • 相关协议
        • 产品服务协议
        • 产品服务等级协议
          无相关产品

          本页目录

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

          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表达式类型参数。详情参考SQL表达式
          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是

          数据处理表达式。

          详情参考SQL表达式

          示例

          • 示例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关键字的布尔表达式)

          详情参考SQL表达式

          示例

          • 示例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'

           

          SQL表达式与函数

          条件表达式

          函数/表达式语法说明
          coalesce 函数coalesce(expression1, expression2, expression3...)返回多个表达式中第一个非null的值
          if 函数if(condition, result1)如果condition为true,则返回result1,否则返回null
          if(condition, result1, result2)如果condition为true,则返回result1,否则返回result2
          nullif 函数nullif(expression1, expression2)比较两个表达式的值是否相等。如果相等,则返回null,否则返回第一个表达式的值
          case-when 表达式

          CASE WHEN condition1 THEN result1

          [WHEN condition2 THEN result2]

          [ELSE result3]

          END

          通过条件判断,对数据进行归类(相当于if ... else if ... else ...)

          CASE operand WHEN value1 THEN result1

          [WHEN value2 THEN result2]

          [ELSE result3]

          END

          通过分支判断,对数据进行归类(相当于switch case)
          is null表达式expression is null判断expression是否为null,如果是返回true,否则返回false
          between and 表达式expression between value1 and value2判断expression值是否在value1和value2之间(左右为闭区间)

          比较表达式

          >、>=、<、<=、=、!=

          expression1 > expression2

          expression1 >= expression2

          expression1 < expression2

          expression1 <= expression2

          expression1 = expression2

          expression1 != expression2

          与ANSI SQL比较表达式同义
          and 表达式expression1 and expression2与
          or 表达式expression1 and expression2或
          not 表达式not expression非

           

          字符串函数

          用法与示例详情参考 统计分析-SQL函数-字符串函数

          函数语法说明
          concatconcat(x, y...)将多个字符串拼接成一个字符串
          lcase/lowerlower(x)将字符串转换为小写形式。lcase函数是lower函数的别名
          leftleft(x, length)截取字符串x前length长度的子串
          lengthlength(x)计算字符串长度。以bytes数量计算
          lpadlpad(x, length, lpad_string)在字符串的开头填充指定字符,直到指定长度后返回结果字符串
          ltrimltrim(x)删除字符串开头的空格
          mid/substr/substringsubstr(x, start, length)返回字符串中指定位置的子串,并指定子串长度。mid、substring函数是substr函数的别名
          replacereplace(x, sub_string )删除字符串中匹配的字符
          replace(x, sub_string, replace_string)将字符串中所匹配的字符替换为其他指定字符
          reversereverse(x)返回反向顺序的字符串
          rtrimrtrim(x)删除字符串中结尾的空格
          rpadrpad(x, length, rpad_string)在字符串的尾部填充指定字符,直到指定长度后返回结果字符串
          trimtrim(x)删除字符串中开头和结尾的空格
          upper/ucaseupper(x)将字符串转化为大写形式
          rightright(x, length)截取字符串x后length长度的子串

           

          正则函数

          用法与示例详情参考 统计分析-SQL函数-正则式函数

          函数语法说明
          regexp_likeregexp_like(x, regular expression)判断目标字符串是否符合正则表达式
          regexp_extractregexp_extract(x, regular expression)提取并返回目标字符串中符合正则表达式的第一个子串
          regexp_extract(x, regular expression, n)提取目标字符串中符合正则表达式的子串,然后返回与目标捕获组匹配的第n个子串
          regexp_substrregexp_substr(x, regular expression)提取并返回目标字符串中符合正则表达式的第一个子串
          regexp_replaceregexp_replace(x, regular expression, replace_string)删除目标字符串中符合正则表达式的子串,返回未被删除的子串

           

          数学计算

          用法与示例详情参考 统计分析-SQL函数-数学计算

          函数/表达式语法说明

          四则运算

          +、-、*、/、%

          expression1 + expression2

          expression1 - expression2

          expression1 * expression2

          expression1 / expression2

          expression1 % expression2

          加、减、乘、除、取余
          absabs(x)计算x的绝对值
          acosacos(x)计算x的反余弦
          asinasin(x)计算x的反正弦
          atanatan(x)计算x的反正切
          atan2atan2(y, x)计算x和y相除的结果的反正切
          ceil/ceiling

          ceil(x)

          ceiling(x)

          对x进行向上取整数。

          ceiling函数是ceil函数的别名

          convconv(x,from_base,to_base)将x做进制转换,从from_base进制转换为to_base进制
          coscos(x)计算x的余弦
          cotcot(x)计算x的余切
          crc32crc32(expr)计算expr的crc32值
          degreesdegrees(x)将弧度转换为度
          expexp(x)计算自然底数e的x次幂
          floorfloor(x)对x进行向下取整数
          lnln(x)计算x的自然对数
          loglog(b,x)计算x以b为底的对数
          log2log2(x)计算x以2为底的对数
          log10log10(x)计算x以10为底的对数
          pipi()返回π值
          pow

          pow(x, y)

          power(x, y)

          计算x的y次幂。

          power函数是pow函数的别名

          radiansradians(x)将度转换为弧度
          randrand()返回随机数
          rand(seed)用seed做种子,生成随机数并返回
          roundround(x)对x进行四舍五入取整数
          round(x, n)对x进行四舍五入且保留n位小数
          signsign(x)返回x的符号,通过1、0、-1表示
          sinsin(x)计算x的正弦
          sqrtsqrt(x)计算x的平方根
          tantan(x)计算x的正切
          truncatetruncate(x, d)截断x的小数部分,d表示保留小数位数

           

          类型转换函数

          函数语法说明
          castcast(x as type)转换x的数据类型

           

          日期与时间函数

          用法与示例详情参考 统计分析-SQL函数-日期和时间函数

          函数语法说明
          date_add/adddatedate_add(x, interval n unit)在x上加上N个时间单位(unit)。adddate函数是date_add函数的别名
          current_date/curdatecurrent_date()返回当前日期。curdate函数是current_date函数的别名
          current_time/curtimecurrent_time()返回当前时间。curtime函数是current_time函数的别名
          current_timestampcurrent_timestamp()返回当前日期、时间和时区。
          nownow()返回当前日期、时间
          datedate(x)返回日期和时间表达式中的日期部分。
          date_formatdate_format(x, format)将timestamp类型的日期和时间表达式转化为指定格式的日期和时间表达式
          date_parsedate_parse(x, format)将日期和时间字符串转换为指定格式的timestamp类型的日期和时间表达式
          date_diffdate_diff(unit, x, y)返回两个时间表达式之间的时间差值,例如计算x和y之间相差几个时间单位(unit)
          extractextract(unit from x)提取日期和时间表达式x中的单位unit部分
          from_unixtimefrom_unixtime(x)将UNIX时间戳转化为无时区的timestamp类型的日期和时间表达式
          unix_timestampunix_timestamp(x)将timestamp类型的日期和时间表达式转化成UNIX时间戳
          secondsecond(x)提取日期和时间表达式中的秒数
          minuteminute(x)提取日期和时间表达式中的分钟数
          hourhour(x)提取日期和时间表达式中的小时数,按24小时制计算
          dayday(x)提取日期和时间表达式中的天数,按月计算。同dayofmonth函数
          dayofmonthdayofmonth(x)提取日期和时间表达式中的天数,按月计算。同day函数
          dayofweekdayofweek(x)返回日期和时间表达式的周索引。同weekday函数
          dayofyeardayofyear(x)提取日期和时间表达式中的天数,按年计算
          weekweek(x)计算目标日期是在一年中的第几周。同weekofyear函数
          weekdayweekday(x)返回日期和时间表达式的周索引。同dayofweek函数
          weekofyearweekofyear(x)计算目标日期是在一年中的第几周。同week函数
          monthmonth(x)提取日期和时间表达式中的月份
          quarterquarter(x)计算目标日期所属的季度
          yearyear(x)提取目标日期中的年份

          format说明

          占位符说明样例
          %b月份的英文缩写 (Jan-Dec)Sep
          %c月份 (01-12)09
          %d每月的第几天。1位数的前面补0 (01-31)01
          %e每月的第几天。前面不补0 (1-31)1
          %f微秒。取值范围为000000~999999999999
          %h小时,12小时制 (01-12)10
          %H小时,24小时制 (00-23)22
          %i分钟 (00-59)30
          %j每年的第几天 (001-366)003
          %k小时,24小时制 (00-23)22
          %l小时,12小时制 (01-12)10
          %m月份 (01-12)09
          %M月份的英文全称 (January-December)September
          %pAM/PMPM
          %r时间。12小时制,格式为hh:mm AM/PM。相当于%h:%i %p10:30 PM
          %s秒 (00-59)32
          %S秒 (00-59)32
          %T时间。ISO 8601格式(HH:MM:SS),相当于%H:%i:%S22:30:32
          %y年份后两位 (00-99)23
          %Y年份,4位数2023

           

           


           

          文档反馈

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

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

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

          知道了

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