本文主要介紹欄位操作指令的用法和樣本。
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_msg
expand-values
展開指定欄位的第一層JSON對象,產生多條結果。
文法
| expand-values -path=<path> -limit=<limit> -keep <field> as <output>
參數說明
|
參數 |
類型 |
必填 |
說明 |
|
path |
JSONPath |
否 |
指定欄位內容中的JSON路徑,用於定位需要展開的內容位置。 預設值為空白,表示直接展開指定欄位的完整內容。 |
|
limit |
Integer |
否 |
每條未經處理資料可展開的最大條目數。取值為 0~10 的整數,預設值為 10。
說明
觸發閾值的值會被計入結果,因此實際返回資料可能略微超過 50 MB。超限截斷為靜默行為,不返回錯誤或警告資訊。 |
|
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}'
-