本文主要介紹欄位操作指令的用法和樣本。
project
保留與給定模式相匹配的欄位、同時可重新命名指定欄位。指令執行過程中,先執行完成所有欄位保留運算式,再執行重新命名運算式。
預設保留時間欄位__time__和__time_ns_part__,並且不可重新命名與覆蓋,更多資訊,請參見時間欄位。
文法
| project -wildcard <field-pattern>, <output>=<field>, ...參數說明
參數 | 類型 | 必填 | 說明 |
wildcard | Bool | 否 | 是否開啟通配模式。預設為欄位精確匹配。您需要開啟通配模式時,需添加該參數。 |
field-pattern | FieldPattern | 是 | 需要保留的欄位名稱或欄位和萬用字元組合(處理匹配到的所有欄位)。 |
output | Field | 是 | 需要重新命名的新欄位名稱,不支援多次重新命名至相同的目標欄位。 重要 如果新欄位與輸入資料中欄位重名,其結果取值策略,請參見新舊值保留與覆蓋。 |
field | Field | 是 | 需要重新命名的原欄位名稱。
|
樣本
樣本1:保留特定欄位。
* | project level, err_msg樣本2:重新命名欄位。
* | project log_level=level, err_msg樣本3:保留精確匹配的欄位
__tag__:*。* | project "__tag__:*"
project-away
移除與給定模式相匹配的欄位,原樣保留其他所有欄位。
該指令將預設保留時間欄位__time__和__time_ns_part__,更多詳情,請參見時間欄位。
文法
| project-away -wildcard <field-pattern>, ...參數說明
參數 | 類型 | 必填 | 說明 |
wildcard | Bool | 否 | 是否開啟通配模式。預設為欄位精確匹配。您需要開啟通配模式時,需添加該參數。 |
field-pattern | FieldPattern | 是 | 需要移除的欄位名稱或者欄位和萬用字元組合(處理匹配到的所有欄位)。 |
project-rename
重新命名指定欄位,並保留其他所有欄位原樣。
預設保留時間欄位__time__和__time_ns_part__,並且不可重新命名與覆蓋,更多詳情,請參見時間欄位。
文法
| project-rename <output>=<field>, ...參數說明
參數 | 類型 | 必填 | 說明 |
output | Field | 是 | 重新命名後的欄位名稱。不支援多次重新命名至相同的目標欄位。 重要 如果新欄位與輸入資料中欄位重名,其結果取值策略,請參見新舊值保留與覆蓋。 |
field | Field | 是 | 待重新命名的原欄位名稱。
|
樣本
重新命名指定欄位。
* | project-rename log_level=level, log_err_msg=err_msgexpand-values
展開指定欄位的第一層JSON對象,產生多條結果。
文法
| expand-values -path=<path> -limit=<limit> -keep <field> as <output>參數說明
參數 | 類型 | 必填 | 說明 |
path | JSONPath | 否 | 指定欄位內容中的JSON路徑,用於定位需要展開的內容位置。 預設值為空白,表示直接展開指定欄位的完整內容。 |
limit | Integer | 否 | 每條未經處理資料可展開的最大條目數,值為1至10之間的整數。預設值為10。 |
keep | Bool | 否 | 展開後是否保留原欄位。預設不保留,需要保留時,開啟此開關。 |
field | Field | 是 | 需要展開的原欄位名稱,支援類型為 |
output | Field | 否 | 展開的目標欄位名稱。如果不指定,則預設輸出結果至輸入欄位。 針對原始內容的展開邏輯為: JSON數組:根據數組的元素逐個展開。 JSON字典:根據字典索引值對逐個展開。 其他JSON類型:返回原值。 非法JSON:返回 |
樣本
樣本1:展開數組,輸出多條結果資料。
SPL語句
* | expand-values y輸入資料
x: 'abc' y: '[0,1,2]'輸出資料
# 條目1 x: 'abc' y: '0' # 條目2 x: 'abc' y: '1' # 條目3 x: 'abc' y: '2'
樣本2:展開字典,輸出多條結果資料。
SPL語句
* | expand-values y輸入資料
x: 'abc' y: '{"a": 1, "b": 2}'輸出資料
# 條目1 x: 'abc' y: '{"a": 1}' # 條目2 x: 'abc' y: '{"b": 2}'
樣本3:展開指定JSON Path下的內容,並輸出至新欄位。
SPL語句
* | expand-values -path='$.body' -keep content as body輸入資料
content: '{"body": [0, {"a": 1, "b": 2}]}'輸出資料
# 條目1 content: '{"body": [1, 2]}' body: '0' # 條目2 content: '{"body": [1, 2]}' body: '{"a": 1, "b": 2}'