Topik ini menjelaskan cara menggunakan instruksi operasi bidang dan memberikan contoh.
project
Instruksi ini mempertahankan bidang yang sesuai dengan pola tertentu dan mengganti nama bidang yang ditentukan. Selama eksekusi, semua ekspresi retensi bidang dijalankan terlebih dahulu, diikuti oleh ekspresi penggantian nama.
Bidang waktu default `__time__` dan `__time_ns_part__` dicadangkan dan tidak dapat diganti namanya atau ditimpa. Untuk informasi lebih lanjut, lihat Bidang Waktu.
Sintaksis
| project -wildcard <field-pattern>, <output>=<field>, ...Parameter
Parameter | Type | Diperlukan | Deskripsi |
wildcard | Bool | Tidak | Menentukan apakah akan mengaktifkan pencocokan pola wildcard. Secara default adalah pencocokan bidang eksak. Tambahkan parameter ini untuk mengaktifkan pencocokan pola wildcard. |
field-pattern | FieldPattern | Ya | Nama bidang yang akan dipertahankan, atau kombinasi nama bidang dan karakter wildcard untuk memproses semua bidang yang cocok. |
output | Field | Ya | Nama baru untuk bidang tersebut. Anda tidak dapat mengganti nama beberapa bidang menjadi bidang target yang sama. Penting Jika bidang baru memiliki nama yang sama dengan bidang dalam data masukan, lihat Mempertahankan dan Menimpa Nilai Lama dan Baru untuk kebijakan penugasan nilai. |
field | Field | Ya | Nama asli dari bidang yang akan diganti namanya.
|
Contoh
Contoh 1: Mempertahankan bidang tertentu.
* | project level, err_msgContoh 2: Mengganti nama bidang.
* | project log_level=level, err_msgContoh 3: Mempertahankan bidang yang persis cocok dengan
__tag__:*.* | project "__tag__:*"
project-away
Instruksi ini menghapus bidang yang sesuai dengan pola tertentu dan mempertahankan semua bidang lainnya.
Instruksi ini secara default mempertahankan bidang waktu __time__ dan __time_ns_part__. Untuk informasi lebih lanjut, lihat Bidang Waktu.
Sintaksis
| project-away -wildcard <field-pattern>, ...Parameter
Parameter | Tipe | Diperlukan | Deskripsi |
wildcard | Bool | Tidak | Menentukan apakah akan mengaktifkan pencocokan pola wildcard. Secara default adalah pencocokan bidang eksak. Tambahkan parameter ini untuk mengaktifkan pencocokan pola wildcard. |
field-pattern | FieldPattern | Ya | Nama bidang yang akan dihapus, atau kombinasi nama bidang dan karakter wildcard untuk memproses semua bidang yang cocok. |
project-rename
Instruksi ini mengganti nama bidang yang ditentukan dan mempertahankan semua bidang lainnya.
Bidang waktu default `__time__` dan `__time_ns_part__` dicadangkan dan tidak dapat diganti namanya atau ditimpa. Untuk informasi lebih lanjut, lihat Bidang Waktu.
Sintaksis
| project-rename <output>=<field>, ...Parameter
Parameter | Tipe | Diperlukan | Deskripsi |
output | Field | Ya | Nama baru untuk bidang tersebut. Anda tidak dapat mengganti nama beberapa bidang menjadi bidang target yang sama. Penting Jika bidang baru memiliki nama yang sama dengan bidang dalam data masukan, lihat Pemeliharaan dan Penimpaan Nilai Lama dan Baru untuk kebijakan penugasan nilai. |
field | Field | Ya | Nama asli dari bidang yang akan diganti namanya.
|
Contoh
Mengganti nama bidang yang ditentukan.
* | project-rename log_level=level, log_err_msg=err_msgexpand-values
Instruksi ini memperluas lapisan pertama objek JSON dalam bidang tertentu untuk menghasilkan beberapa hasil.
Tipe data dari bidang keluaran adalah VARCHAR. Jika bidang hasil memiliki nama yang sama dengan bidang masukan, lihat Pemeliharaan dan Penimpaan Nilai untuk informasi tentang kebijakan penanganan nilai.
Anda tidak dapat melakukan operasi pada bidang waktu
__time__atau__time_ns_part__. Untuk informasi lebih lanjut, lihat Bidang Waktu.Instruksi ini mendukung transformasi data dalam versi baru. Untuk skenario penggunaan SPL yang berbeda, lihat Referensi Umum.
Sintaksis
| expand-values -path=<path> -limit=<limit> -keep <field> as <output>Parameter
Parameter | Tipe | Diperlukan | Deskripsi |
path | JSONPath | Tidak | Menentukan jalur JSON dalam konten bidang untuk menemukan konten yang perlu diperluas. Nilai default adalah kosong, yang berarti seluruh konten dari bidang yang ditentukan diperluas langsung. |
limit | Integer | Tidak | Jumlah maksimum entri yang dapat diperluas dari setiap entri data mentah. Nilainya adalah bilangan bulat dari 1 hingga 10. Nilai default adalah 10. |
keep | Bool | Tidak | Menentukan apakah akan mempertahankan bidang asli setelah ekspansi. Secara default, bidang asli tidak dipertahankan. Tambahkan parameter ini untuk mempertahankan bidang asli. |
field | Field | Ya | Nama bidang asli yang akan diperluas. Tipe yang didukung adalah |
output | Field | Tidak | Nama bidang target untuk ekspansi. Jika tidak ditentukan, hasilnya akan dikeluarkan ke bidang masukan secara default. Logika ekspansi untuk konten asli adalah sebagai berikut: Array JSON: Memperluas setiap elemen array. Kamus JSON: Memperluas setiap pasangan kunci-nilai dari kamus. Tipe JSON lainnya: Mengembalikan nilai awal. JSON tidak valid: Mengembalikan |
Contoh
Contoh 1: Memperluas array untuk mengeluarkan beberapa hasil data.
Pernyataan SPL
* | expand-values yData 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 mengeluarkan beberapa hasil data.
Pernyataan SPL
* | expand-values yData 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 jalur JSON yang ditentukan dan mengeluarkannya ke bidang baru.
Pernyataan SPL
* | expand-values -path='$.body' -keep content as bodyData 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}'