Topik ini menjelaskan cara menggunakan petunjuk operasi field beserta contohnya.
project
Petunjuk ini mempertahankan field yang sesuai dengan pola tertentu dan mengganti nama field yang ditentukan. Selama eksekusi, semua ekspresi retensi field dieksekusi terlebih dahulu, diikuti oleh ekspresi penggantian nama.
Field waktu default `__time__` dan `__time_ns_part__` bersifat reserved dan tidak dapat diganti namanya atau ditimpa. Untuk informasi lebih lanjut, lihat Time field.
Sintaksis
| project -wildcard <field-pattern>, <output>=<field>, ...
Parameter
|
Parameter |
Tipe |
Wajib |
Deskripsi |
|
wildcard |
Bool |
Tidak |
Menentukan apakah akan mengaktifkan pencocokan pola wildcard. Nilai default adalah pencocokan field eksak. Tambahkan parameter ini untuk mengaktifkan pencocokan pola wildcard. |
|
field-pattern |
FieldPattern |
Ya |
Nama field yang akan dipertahankan, atau kombinasi nama field dan karakter wildcard untuk memproses semua field yang cocok. |
|
output |
Field |
Ya |
Nama baru untuk field tersebut. Anda tidak dapat mengganti nama beberapa field ke field target yang sama. Penting
Jika field baru memiliki nama yang sama dengan field dalam data masukan, lihat Retaining and Overwriting Old and New Values untuk kebijakan penugasan nilai. |
|
field |
Field |
Ya |
Nama asli field yang akan diganti namanya.
|
Contoh
-
Contoh 1: Mempertahankan field tertentu.
* | project level, err_msg -
Contoh 2: Mengganti nama field.
* | project log_level=level, err_msg -
Contoh 3: Mempertahankan field yang secara eksak cocok dengan
__tag__:*.* | project "__tag__:*"
project-away
Petunjuk ini menghapus field yang sesuai dengan pola tertentu dan mempertahankan semua field lainnya.
Petunjuk ini secara default mempertahankan field waktu __time__ dan __time_ns_part__. Untuk informasi lebih lanjut, lihat Time fields.
Sintaksis
| project-away -wildcard <field-pattern>, ...
Parameter
|
Parameter |
Type |
Wajib |
Deskripsi |
|
wildcard |
Bool |
Tidak |
Menentukan apakah akan mengaktifkan pencocokan pola wildcard. Nilai default adalah pencocokan field eksak. Tambahkan parameter ini untuk mengaktifkan pencocokan pola wildcard. |
|
field-pattern |
FieldPattern |
Ya |
Nama field yang akan dihapus, atau kombinasi nama field dan karakter wildcard untuk memproses semua field yang cocok. |
project-rename
Petunjuk ini mengganti nama field yang ditentukan dan mempertahankan semua field lainnya.
Field waktu default `__time__` dan `__time_ns_part__` bersifat reserved dan tidak dapat diganti namanya atau ditimpa. Untuk informasi lebih lanjut, lihat Time fields.
Sintaksis
| project-rename <output>=<field>, ...
Parameter
|
Parameter |
Tipe |
Wajib |
Deskripsi |
|
output |
Field |
Ya |
Nama baru untuk field tersebut. Anda tidak dapat mengganti nama beberapa field ke field target yang sama. Penting
Jika field baru memiliki nama yang sama dengan field dalam data masukan, lihat Retention and Overwriting of Old and New Values untuk kebijakan penugasan nilai. |
|
field |
Field |
Ya |
Nama asli field yang akan diganti namanya.
|
Contoh
Ubah nama bidang yang ditentukan.
* | project-rename log_level=level, log_err_msg=err_msg
expand-values
Petunjuk ini memperluas lapisan pertama objek JSON dalam field tertentu untuk menghasilkan beberapa hasil.
-
Tipe data field output adalah VARCHAR. Jika field hasil memiliki nama yang sama dengan field input, lihat Value Retention and Overwriting untuk informasi tentang kebijakan penanganan nilai.
-
Anda tidak dapat melakukan operasi pada field waktu
__time__atau__time_ns_part__. Untuk informasi lebih lanjut, lihat Time fields. -
Petunjuk ini mendukung transformasi data pada versi baru. Untuk berbagai skenario penggunaan SPL, lihat General Reference.
Sintaksis
| expand-values -path=<path> -limit=<limit> -keep <field> as <output>
Parameter
|
Parameter |
Tipe |
Wajib |
Deskripsi |
|
path |
JSONPath |
Tidak |
Menentukan path JSON dalam konten field untuk menemukan konten yang perlu diperluas. Nilai default kosong, artinya seluruh konten field yang ditentukan diperluas secara langsung. |
|
limit |
Integer |
Tidak |
Jumlah maksimum entri yang diperluas dari setiap entri data mentah. Nilai valid: 0 dan 1 hingga 10. Nilai default: 10. Catatan
Ukuran kumulatif nilai yang diperluas untuk satu field tidak boleh melebihi 50 MB. Saat limit diatur ke 1 hingga 10, jumlah baris yang diperluas dibatasi oleh nilai ini. Catatan
Saat limit diatur ke 0, jumlah baris yang diperluas per field tidak dibatasi. Namun, total data yang dikembalikan di seluruh field dan baris dibatasi sekitar 50 MB. Jika batas ini terlampaui, hanya hasil parsial yang telah diproses yang dikembalikan. Nilai field individu tidak dipotong. Catatan
Nilai yang memicu batas tetap disertakan dalam hasil, sehingga data yang dikembalikan sebenarnya mungkin sedikit melebihi 50 MB. Pemotongan akibat batas ini bersifat diam dan tidak menghasilkan error atau peringatan apa pun. |
|
keep |
Bool |
Tidak |
Menentukan apakah akan mempertahankan field asli setelah perluasan. Secara default, field asli tidak dipertahankan. Tambahkan parameter ini untuk mempertahankan field asli. |
|
field |
Field |
Ya |
Nama field asli yang akan diperluas. Tipe yang didukung adalah |
|
output |
Field |
Tidak |
Nama field target untuk perluasan. Jika tidak ditentukan, hasilnya dikeluarkan ke field input secara default. Logika perluasan untuk konten asli adalah sebagai berikut: Array JSON: Memperluas setiap elemen array. Kamus JSON: Memperluas setiap pasangan kunci-nilai kamus. Tipe JSON lainnya: Mengembalikan nilai awal. JSON tidak valid: Mengembalikan |
Contoh
-
Contoh 1: Memperluas array untuk menghasilkan beberapa data keluaran.
-
Pernyataan SPL
* | expand-values y -
Data masukan
x: 'abc' y: '[0,1,2]' -
Data keluaran
# Entri 1 x: 'abc' y: '0' # Entri 2 x: 'abc' y: '1' # Entri 3 x: 'abc' y: '2'
-
-
Contoh 2: Memperluas kamus untuk menghasilkan beberapa data keluaran.
-
Pernyataan SPL
* | expand-values y -
Data masukan
x: 'abc' y: '{"a": 1, "b": 2}' -
Data keluaran
# Entri 1 x: 'abc' y: '{"a": 1}' # Entri 2 x: 'abc' y: '{"b": 2}'
-
-
Contoh 3: Memperluas konten path JSON tertentu dan mengeluarkannya ke field baru.
-
Pernyataan SPL
* | expand-values -path='$.body' -keep content as body -
Data masukan
content: '{"body": [0, {"a": 1, "b": 2}]}' -
Data keluaran
# Entri 1 content: '{"body": [1, 2]}' body: '0' # Entri 2 content: '{"body": [1, 2]}' body: '{"a": 1, "b": 2}'
-