背景
- 在日常工作中,经常需要到阿里云上面查询日志。有时需要将日志数据处理加工。
- 但是阿里云的分析语法写起来特别难受。
- 它宣称sls的分析语法是类sql语言。但是根本写不了(没理解前)。
例如:
删除记录* and (1 or 2) | select substr(logDetail, 213) as record
删除记录* and (1 or 2) | where regexp_like(logDetail, 'deleteMobileList:\[.+\]')
- 如果是需要将两个语句结合起来呢,这时候不知道就不知道select应该写在哪里,where应该写在哪里。
解决
- 上面的两条语句,都可以改变一下。
- 其实阿里云的SLS分析语句,都有一个隐含的
from log
,表示查询的数据源,也就是前面的查询结果。
- 查询删除记录,并对结果进行切割
删除记录* and (1 or 2) | select substr(logDetail, 213) as record from log
删除记录* and (1 or 2) | select * from log where regexp_like(logDetail, 'deleteMobileList:\[.+\]')
删除记录* and (1 or 2) | select substr(logDetail, 213) as record from log where regexp_like(logDetail, 'deleteMobileList:\[.+\]')
删除记录* and (1 or 2) |
select * from (
select substr(logDetail, 213) as record from log where regexp_like(logDetail, 'deleteMobileList:\[.+\]')
) where length(record) > 10
总结
- 阿里云的SLS分析语句中有隐式的
from log
- 不知道分析语法怎么写时,先直接写出
| select * from log
, 后面就可以根据字段编写了。
吐槽
- 这个特性文档中是一点没提啊,导致我之前每次写分析语法都很难受。写着超级难受,查文档也没用。
参考链接