secsoso spl 語法說明

      網友投稿 865 2025-04-02

      數據分析一直是近幾年非常熱的一個話題,但如何進行數據分析目前業界還沒有一個統一答案,從抽象的角度來說,先要有數據,然后有目標,最后給個工具從數據中提取目標這個就是數據分析過程。但目前數據和目標都相對比較容易獲取,但工具一直沒有比較理想的工具。公司根據這種情況開發了一系列產品來緩解數據分析的過程,其中免費的命令行工具為secsoso。它們在搜索的時候都用了SPL (Search Processing Language)語言,本文就介紹SPL的搜索語法。


      快速參考

      面向SQL用戶的SPL

      以下內容不是 SQL 與 SPL搜索處理語? (SPL) 之間的精確映射, 但是, 如果您熟悉 SQL,這?快速對?可以幫助您快速熟悉搜索命令的使?。

      庫概念

      數據庫概念

      Spl概念

      注釋

      SQL 查詢

      SPL搜索

      SPL搜索是對數據進?檢索, 并且可以執?轉換和報告操作。 可以將搜索所獲得的結果通過管道符從?個命令傳遞或傳輸到另?個命令, 以對這些結果進?過濾、 修改、 重新排序和分組。

      表/視圖

      搜索結果

      對secsoso來說一個文件就是一個表的概念。

      row

      結果/事件

      SPL搜索中的結果是?個包含字段(即, 列) 值的列表, 對應于表格的?。事件是指具有時間戳和原始?本的結果。 通常, 事件是?志?件中的?條記錄,

      從 SQL 到SPL

      說明:

      完整語法為:file=(“/export/home/20190613/access.log”,” ”,“utf-8”)

      其中/export/home/20190613/access.log為文件路徑,“ ”為字段分割符。文件名可以是絕對路徑(/export/home/20190613/access.log) 也可以是相對路徑(access.log),其中file= 可以省略,默認分隔符為” ”,編碼為”utf-8” 如果是文件特點是默認值也可以省略。

      注意:

      如果需要文件編碼,則文件分割符不能省略

      其中文件默認的列名為(,,…) 注意索引是從1開始的,count()函數操作后的默認列名稱為count_

      SQL ?于搜索由列組成的關系數據庫表。 SPL設計?于搜索由字段組成的集合。

      對比表格:

      SQL

      SQL

      SPL

      SELECT *

      SELECT *

      FROM mytable

      file=(filename,” ”,”utf-8”)

      WHERE

      SELECT *

      FROM mytable

      WHERE mycolumn=5

      file=filename mycolumn=5

      SELECT

      SELECT mycolumn1, mycolumn2

      FROM mytable

      file=filename

      | FIELDS mycolumn1, mycolumn2

      AND/OR

      SELECT *

      FROM mytable

      WHERE (mycolumn1="true"

      OR mycolumn2="red")

      AND mycolumn3="blue"

      file=filename

      (mycolumn1="true"

      OR mycolumn2="red")

      AND mycolumn3="blue"

      注意:SPL 中隱含有 AND 運算符, 不需要

      指定。 對于此?例, 您還可以使?:

      file=filename

      (mycolumn1="true"

      OR mycolumn2="red")

      mycolumn3="blue"

      AS(別名)

      SELECT mycolumn AS column_alias

      FROM mytable

      file=filename

      | RENAME mycolumn as column_alias

      | FIELDS column_alias

      BETWEEN

      SELECT *

      FROM mytable

      WHERE mycolumn

      BETWEEN 1 AND 5

      file=filename

      mycolumn>=1 mycolumn<=5

      GROUP BY

      SELECT mycolumn, avg(mycolumn)

      FROM mytable

      WHERE mycolumn=value

      GROUP BY mycolumn

      file=filename ?mycolumn=value

      | STATS mycolumn, avg(mycolumn) BY mycolumn

      HAVING

      SELECT mycolumn, avg(mycolumn)

      FROM mytable

      WHERE mycolumn=value

      GROUP BY mycolumn

      HAVING avg(mycolumn)=value

      file=filename ?mycolumn=value

      | STATS mycolumn ,avg(mycolumn) BY mycolumn

      | SEARCH avg_mycolumn=value

      ORDER BY

      SELECT *

      FROM mytable

      ORDER BY mycolumn desc

      file=filename

      | SORT -mycolumn

      在 SPL 中, 您可在字段名稱前?使?負號 (- ) 進?降序排列,默認是升序排列。

      SELECT DISTINCT

      SELECT DISTINCT

      mycolumn1, mycolumn2

      FROM mytable

      file=filename

      | stats mycolumn1, mycolumn2 by mycolumn1, mycolumn2

      SELECT TOP

      SELECT TOP(5)

      mycolum1,

      mycolum2

      FROM mytable1

      WHERE mycolum3 = "bar"

      secsoso spl 語法說明

      ORDER BY mycolum1 mycolum2

      file=filename mycolum3="bar"

      | FIELDS mycolum1 mycolum2

      | SORT 5 mycolum1 mycolum2

      賽克藍德是一家數據分析公司,本著數據改變生活的理念,致力于提供方便好用的數據分析產品。

      Spl概念

      SPL主要有關鍵字,函數,管道組成。管道用來分割前后的邏輯。關鍵字可以放在管道后面執行,函數不能單獨執行,只能放在關鍵字的后面。

      Spl關鍵字

      SPL的語法結構為:關鍵字 參數 管道 關鍵字 參數 管道等等以此類推。管道用|,關鍵字和參數就詳見下面的章節,我們已搜索統計的一個需求為例,統計用戶登錄系統的數量:

      search source="index" AND eventType = "login"|stats count(userName) by userName

      其中search,stats就是關鍵字source="index" AND eventType = "login"就是search的參數,這個參數的意思是查詢索引名為index的索引,eventType等于login的所有事件,兩個條件是AND的關系,管道用|,count(userName) by username是stats的參數,含義是根據userName進行分組。

      search搜索

      搜索是在數據中找到數據的一個過程,產品支持兩種搜索,一個是在數據分析平臺中可以搜索elasticsearch(簡稱ES)中的數據,一個是用命令行secsoso可以搜索文檔中的數據。

      search [條件查詢]

      其中search是關鍵字,在搜索的時候可以省略, file是用命令行secsoso搜索文件中的數據,后面緊跟著是條件。

      條件查詢的語法為:

      (字段名稱 操作符 值)關系(字段名稱 操作符 值)…。

      注意:file本身也是一種條件。

      file的語法為:file=("文件名"," "),其中第二個參數是分隔符,默認分隔符為空格,通過分隔符來確定文件中的每一列,默認的列名為$1,$2,$3等等,用命令行secsoso工具,如果默認分隔符為空格可以直接簡化為:secsoso "文件名" 條件。

      字段名稱:

      對ES中,字段名稱就是ES的每一列,對于文件就是通過分隔符分割后的每一列。

      操作符:

      系統支持以下操作符語法:

      操作符

      語義

      =或者==

      等于

      != 或者<>或者<=>

      不等于

      <

      小于

      <=或者!>

      小于等于|不小于

      >

      大于

      >=或者!,

      大于等于|不小于

      In

      包括

      not in

      不包括

      查詢值支持以下幾種語法:

      精確查詢:輸入一個完整的值。

      ??? 模糊查詢:支持*?。* 可以匹配零個、單個或多個字符,? 可以匹配一個字符,*和?可以同時使用,且可以放在字段值的任意位置,*和?至少要保留一個才能進行模糊查詢,否則就是精確查詢。

      正則查詢:/regexp/,正則表達式前后必須加上正斜杠。

      關系:

      ??? 要使用多個條件查詢,需要指定條件之間的關系:AND、OR。多個條件查詢默認的關系是AND。關系運算符不區分大小寫。AND優先級高于OR。AND是與的關系OR是或的關系。

      ??? 也可使?括號對搜索字符串的各部分進?分組,括號里的條件優先。

      fields保留或刪除字段

      搜索結果中展示的都是全部字段,使用fields命令可以根據字段列表條件保留或刪除搜索結果中的字段。語法:

      fields [+|-] field1, field2, field3…

      +|-,如果指定了加號(+)則代表在結果中只保留field_list這些字段,反之指定了減號(-)則在結果中刪除field_list這些字段。默認值是+,可缺省。

      rename字段重命名

      rename 命令是修改搜索結果中的列名。語法為:

      rename field_name as field_name_other

      sort結果排序

      sort是對返回結果集的某一個或者多個字段進行排序。語法為:

      sort [limit] [+|-] field1, field2, field3…

      含義jiesh :sort [結果個數] [正序|逆序] 字段名,多個字段名用逗號分開。

      多個字段名用小寫的逗號隔開。默認為正序(+)

      eventcount獲取總數

      使? eventcount命令對數據進行計數。返回字段名為event_count ,值為總記錄數的一條記錄。語法為:

      …|eventcount

      eval增加字段

      eval在原有日志中添加一個新的field,新字段將根據已有字段進行邏輯運算生成,如通過算術運算、字符串運算等方式。如果您指定的字段名稱和搜索結果中已經存在的字段名稱匹配, eval 表達式中的結果會覆蓋該字段中的值。可在?個搜索中使?逗號將多個 eval 表達式鏈接起來, 以分隔后續表達式。 該搜索從左?右處理多個 Eval 表達式, 并允許您在后續表達式中引?之前已評估過的字段。

      語法:

      eval =["," =]...

      expression支持的函數包括比和條件函數、加密函數、日期和時間函數、數學函數、文本函數和三?函數和雙曲函數

      示例:

      在返回的結果中增加一列,得到小寫的用戶名,使? lower 函數。

      ... | eval lowuser = lower(username)

      stats統計

      stats用于對計算結果集進行聚合統計, 如平均數、 計數和總和。 類似于 SQL 聚合。 如果 stats 命令在沒有 BY ?句的情況下使?,將只返回??, 也就是整個進來的結果集的聚合。 如果使?了 BY ?句, 將為 BY ?句中指定的每個唯?值返回??。語法為:

      stats (stats-function(field) [AS field])...[BY field-list]

      stats-function支持的函數主要是統計函數。

      Stats 和 Eval 命令的區別

      stats 命令根據事件中的字段計算統計信息。 eval 命令使?現有字段和任意表達式在您的事件中新建字段。

      示例

      列出文件中訪問次數最多的10個IP

      secsoso 'file=("/export/home/20190613/access.log"," ")|stats? count($1) by $1|sort 10 -count_$1'

      說明:完整語法為:file=(“文件名”,分割符,“編碼”)

      其中分割符默認為“ ” 編碼默認為utf-8

      其中file= 可以省略,如果是文件特點是默認值也可以省略

      其中文件默認的列名為($1,$2,$3…) 注意索引是從1開始的

      也可以給字段重命名以友好方式顯示,這個是簡化語法:結果同上。

      secsoso ‘access.log|rename $1 as ip |stats? count(ip) by ip|sort 10 -count_ip’

      從中間件文件中找到密碼猜測的ip,密碼猜測條件是5分鐘登錄失敗10次以上的

      secsoso 'access.log $6="*POST" $7="*/login"? $9="200"| eval date=$4.to_date("[dd/MMM/yyyy:HH:mm:ss")|stats count($1) as count by tspan(date,"5m"),$1| search count>10|stats sum(count) by $1'

      人工智能 EI企業智能 AI

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:制作Excel條形圖的方法?
      下一篇:在WPS表格中不顯示零值的方法有哪些?(wps表里怎么不顯示零)
      相關文章
      亚洲精品无码高潮喷水A片软| 国产成人精品日本亚洲专区 | 亚洲综合色在线观看亚洲| 亚洲AV成人精品日韩一区 | 亚洲综合网站色欲色欲| 亚洲精品在线视频| 久久精品国产亚洲5555| 亚洲日韩欧洲乱码AV夜夜摸| 77777亚洲午夜久久多人| 亚洲无线码一区二区三区| 亚洲精品自在在线观看| 亚洲成AV人片在线观看无 | 亚洲av无一区二区三区| 亚洲av无码日韩av无码网站冲| 亚洲AV无码男人的天堂| 国产成人 亚洲欧洲| 亚洲成a人一区二区三区| 亚洲中文字幕无码av永久| 国产成人亚洲综合网站不卡| 亚洲第一男人天堂| 亚洲国产午夜精品理论片在线播放 | 国产午夜亚洲不卡| 九月丁香婷婷亚洲综合色| 亚洲卡一卡2卡三卡4卡无卡三| 亚洲四虎永久在线播放| 亚洲精品第五页中文字幕| 亚洲一线产区二线产区精华| 久久国产亚洲精品| 青青青亚洲精品国产| 久久久久亚洲AV综合波多野结衣 | 亚洲欧美日韩中文字幕一区二区三区 | 亚洲AⅤ永久无码精品AA| 国产福利电影一区二区三区,亚洲国模精品一区 | 国产综合精品久久亚洲| 亚洲av无码成人黄网站在线观看| 久久久久亚洲AV成人片| 亚洲avav天堂av在线网爱情| 亚洲av无码专区亚洲av不卡| 亚洲精品麻豆av| 亚洲av永久无码精品国产精品| 亚洲色欲www综合网|