使用運算式產生器

支援的國家/地區:

您可以使用運算式產生器剖析及修改 JSON 結果,以供後續動作使用。運算式產生器會產生各種動態轉換函式,您可以將這些函式串連在一起、預覽及測試,以互動方式轉換及剖析原始動作結果。

在應對手冊動作中選取參數的預留位置後,您可以使用 JSON 結果。這些結果會提供動作傳回的完整資訊,您可以在後續的應對手冊動作和流程中使用。詳情請參閱「運算式建立工具使用案例」。

查看運算式製作工具

這個範例僅顯示可能的資料,不代表即時結果。實際資料可能有所不同,且可能包含更多或更少的欄位。如果分析師知道執行階段會傳回其他欄位,可以在「語法」欄位中輸入對應的索引鍵路徑。

函式

系統支援下列管道函式:

  • First (x):傳回陣列的前 X 個元素。
    範例:alerts | First(2) (如果 alerts[{"id": "A"}, {"id": "B"}, {"id": "C"}],則傳回 [{"id": "A"}, {"id": "B"}])
  • Last (x):傳回陣列的最後 X 個元素。
    範例:alerts | Last(1) (如果 alerts[{"id": "A"}, {"id": "B"}, {"id": "C"}],則傳回 [{"id": "C"}])
  • Min (KeyPath):從陣列中傳回具有最小值的項目。如果提供 keyPath 參數,則會傳回指定路徑中具有最小值的物件。
    示例:alerts | Min("score") (如果 alerts 包含具有 score 欄位的物件清單,則會傳回分數最低的物件)
  • Max (KeyPath):從陣列中傳回具有最大值的項目。如果提供 keyPath 參數,則會傳回指定路徑中具有最大值的物件。
    示例:alerts | Max("score") (如果 alerts 包含具有 score 欄位的物件清單,則會傳回分數最高的物件)
  • 篩選器 (ConditionKey、Operator、Value):篩選物件陣列,只傳回符合指定欄位條件的物件。
    • ConditionKey:每個物件中要根據條件評估的欄位。
    • 運算子:用於條件的運算子。
      • 字串輸入:=!=innot in
      • 數字/日期輸入:=!=>>= < <=
  • :要在條件中檢查的值。
    範例:alerts | Filter("severity", "=", "HIGH") (傳回「HIGH」severity 欄位的所有快訊)
  • DateFormat ("pattern") - 將指定模式 (模式指定為參數) 的日期格式化為 YYYY-MM-DDThh:mm:ssZ
    示例:timestamp_field | DateFormat("yyyy/MM/ddTHH:mm:ss") (如果 timestamp_field 為「2024/07/20T10:00:00Z」,則傳回「2024-07-20 10:00:00」)
  • Count ():傳回輸入陣列中的項目數量。
    範例:alerts | Count() (如果 alerts 是含有 4 個元素的陣列,則會傳回 4)
  • OrderBy ("keyPath", "direction"):根據指定鍵路徑的值,排序物件陣列。
    範例:alerts | OrderBy("score", "DESC") (依遞減順序排序 alerts 陣列中的 score)
  • toLower ():將輸入內容轉換為小寫字元。
    範例:status_field | toLower() (如果 status_field 為「OPEN」,則傳回「open」)
  • toUpper ():將輸入內容轉換為大寫字元。
    範例:severity_field | toUpper() (如果 severity_field 是「high」,則傳回「HIGH」)
  • 取代 ("x", "y"):將字串中的子字串取代為另一個字串。
    範例:message_field | Replace("World", "Universe") (如果 message_field 是「Hello World」,則會傳回「Hello Universe」)
  • Distinct ():從陣列中移除重複的值。如果是物件陣列,則會執行深層比較,找出重複的物件。
    範例:[10, 20, 30, 20, 40] | Distinct() (傳回 [10, 20, 30, 40])
  • getByIndex ("index"):依指定索引或索引清單取得陣列項目。
    示例:alerts | getByIndex("0") (傳回 alerts 陣列的第一個元素)
    示例:alerts | getByIndex("0,2") (傳回 alerts 陣列的第一個和第三個元素)
  • split ("delimiter"):使用指定的分隔符號,將字串分割成子字串陣列。
    範例:"tag1,tag2,tag3" | split(",") (傳回 ["tag1", "tag2", "tag3"])
  • join ("delimiter"):使用指定的分隔符,將字串陣列連結成單一字串。
    示例:["malware", "critical"] | join(" & ") (傳回「malware & critical」)
  • trim ():移除字串的前置及後置空格。
    範例:" hello world " | trim() (傳回「hello world」)
  • trimChars ("characters"):從字串開頭和結尾移除指定字元。即使未明確指定,系統一律會移除開頭和結尾的空白字元。
    範例:"--TEST--ABC--" | trimChars("-") (傳回「TEST--ABC」)
  • substring (start, end):從字串中擷取子字串,使用指定的開始索引和選用的結束索引。
    範例:"Hello World" | substring(0, 5) (傳回「Hello」)
    範例:"Hello World" | substring(6) (傳回「World」)
  • incrementValue (value):將數值增加指定量。如未指定金額,值會遞增 1。
    示例:score_field | incrementValue(5) (如果 score_field 為 90,則傳回 95)
    示例:counter_field | incrementValue() (如果 counter_field 為 10,則傳回 11)
  • setIfEmpty ("defaultValue"):如果輸入值為空,則傳回提供的預設值。
    範例:optional_field | setIfEmpty("N/A") (如果 optional_field 為空,則傳回「不適用」;否則傳回 optional_field 的值)
  • toUnixtime ():將人類可解讀的日期和時間字串 (例如「2014/03/12T13:37:27Z」或「2014-03-12T13:37:27+01:00」) 轉換為以世界標準時間表示的 Unix 時間戳記。
    範例:"2024-07-20T10:00:00Z" | toUnixtime() (傳回 1721469600)
  • ifThenElse ("operator", "comparedValue", "trueResult", "falseResult") - 評估條件,如果為 true 則傳回第一個運算式,否則傳回第二個運算式。
    示例:severity_field | ifThenElse("=", "HIGH", "High Priority", "Normal Priority") (如果 severity_field 是「HIGH」,則傳回「High Priority」;否則傳回「Normal Priority」)
    示例:score_field | ifThenElse(">", "70", "Above Threshold", "Below Threshold") (如果 score_field 是 90,則傳回「Above Threshold」;如果 score_field 是 60,則傳回「Below Threshold」)

Expression:

您可以在「運算式」欄位中插入 JSON 結果,並搭配函式和管道,將多個函式加在一起,建構運算式。

執行 / 結果:

填寫運算式產生器後,按一下「執行」,即可根據運算式產生器中顯示的 JSON 範例資料,顯示結果。

還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。