Pelajari sintaksis dan penggunaan fungsi ekspresi reguler dalam kueri SLS SQL dan SPL.
Fungsi ekspresi reguler
SLS mendukung fungsi ekspresi reguler berikut. Semua ekspresi reguler menggunakan sintaksis RE2.
|
Fungsi |
Sintaksis |
Deskripsi |
SQL |
SPL |
|
regexp_extract_all(x, regular expression) |
Mengembalikan array dari semua substring yang sesuai dengan ekspresi reguler. |
√ |
× |
|
|
regexp_extract_all(x, regular expression, n) |
Dari semua kecocokan ekspresi reguler, mengembalikan array substring dari capturing group yang ditentukan. |
√ |
× |
|
|
regexp_extract(x, regular expression) |
Mengembalikan substring pertama yang sesuai dengan ekspresi reguler. |
√ |
√ |
|
|
regexp_extract(x, regular expression, n) |
Dari substring pertama yang sesuai dengan ekspresi reguler, mengembalikan konten dari capturing group ke-n. |
√ |
√ |
|
|
regexp_extract_bool(x, regular expression) |
Mengonversi substring pertama yang cocok ke tipe BOOLEAN. Mengembalikan |
√ |
× |
|
|
regexp_extract_bool(x, regular expression, n) |
Mengonversi konten dari capturing group yang ditentukan dari kecocokan pertama ke tipe BOOLEAN. Mengembalikan |
√ |
× |
|
|
regexp_extract_long(x, regular expression) |
Mengonversi substring pertama yang cocok ke tipe BIGINT. Mengembalikan |
√ |
× |
|
|
regexp_extract_long(x, regular expression, n) |
Mengonversi konten dari capturing group yang ditentukan dari kecocokan pertama ke tipe BIGINT. Mengembalikan |
√ |
× |
|
|
regexp_extract_double(x, regular expression) |
Mengonversi substring pertama yang cocok ke tipe DOUBLE. Mengembalikan |
√ |
× |
|
|
regexp_extract_double(x, regular expression, n) |
Mengonversi konten dari capturing group yang ditentukan dari kecocokan pertama ke tipe DOUBLE. Mengembalikan |
√ |
× |
|
|
regexp_extract_map(x, regular expression, keys) |
Membuat map dengan memasangkan kunci yang diberikan dengan konten dari capturing group yang sesuai. |
√ |
× |
|
|
regexp_extract_map(x, regular expression) |
Membuat map dari ekspresi reguler dengan dua capturing group, di mana group pertama menentukan kunci dan group kedua menentukan nilai. |
√ |
× |
|
|
regexp_like(x, regular expression) |
Memeriksa apakah sebuah string sesuai dengan ekspresi reguler. |
√ |
√ |
|
|
regexp_replace(x, regular expression) |
Menghapus semua substring yang sesuai dengan ekspresi reguler. |
√ |
√ |
|
|
regexp_replace(x, regular expression, replace string) |
Mengganti semua substring yang sesuai dengan ekspresi reguler dengan string pengganti. |
√ |
√ |
|
|
regexp_split(x, regular expression) |
Memisahkan string berdasarkan ekspresi reguler dan mengembalikan substring hasilnya dalam bentuk array. |
√ |
× |
Untuk mengekstraksi tanda kutip tunggal (') dengan fungsi ekspresi reguler, lakukan escape dengan menduplikasinya menjadi ''. Contoh 3 fungsi regexp_extract menunjukkan pendekatan ini.
fungsi regexp_extract_all
Mengekstraksi semua substring yang sesuai dengan ekspresi reguler dari string sumber.
Sintaksis
-
Mengembalikan array berisi semua substring dari string sumber yang sesuai dengan ekspresi reguler.
regexp_extract_all(x, regular expression) -
Mengembalikan array substring yang sesuai dengan capturing group tertentu dalam ekspresi reguler.
regexp_extract_all(x, regular expression, n)
Parameter
|
Parameter |
Deskripsi |
|
x |
String sumber. Harus bertipe VARCHAR. |
|
regular expression |
Ekspresi reguler. Harus berisi capturing group ketika parameter n ditentukan. Misalnya, |
|
n |
Indeks capturing group. Harus merupakan bilangan bulat yang lebih besar atau sama dengan 1. |
Nilai kembalian
ARRAY
Contoh
-
Contoh 1: Ekstraksi semua digit dari nilai field
server_protocol.-
Field contoh
server_protocol:HTTP/2.0 -
Pernyataan kueri dan analisis (Uji)
*| SELECT regexp_extract_all(server_protocol, '\d+') -
Hasil kueri dan analisis: Kueri mengembalikan
["2","0"]di kolom_col0, yaitu semua substring digit yang diekstraksi dariHTTP/2.0.
-
-
Contoh 2: Ekstraksi substring 'Chrome' dari nilai field
http_user_agent, lalu hitung jumlah permintaan yang dibuat oleh browser Chrome.-
Field contoh
http_user_agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.803.0 Safari/535.1 -
Pernyataan kueri dan analisis (Uji)
*| SELECT regexp_extract_all(http_user_agent, '(Chrome)',1) AS Chrome, count(*) AS count GROUP BY Chrome -
Hasil kueri dan analisis: Kolom
Chromemengembalikan["Chrome"]dan kolomcountmengembalikan103440.
-
fungsi regexp_extract
Mengekstraksi substring pertama yang sesuai dengan ekspresi reguler dari string sumber.
Sintaksis
-
Mengembalikan substring pertama yang sesuai dengan ekspresi reguler.
regexp_extract(x, regular expression) -
Mengembalikan substring yang sesuai dengan capturing group ke-n.
regexp_extract(x, regular expression, n)
Parameter
|
Parameter |
Deskripsi |
|
x |
String sumber. Harus bertipe VARCHAR. |
|
regular expression |
Ekspresi reguler. Dapat berisi capturing group. Misalnya, |
|
n |
Indeks capturing group (berbasis 1). Harus merupakan bilangan bulat positif. |
Nilai kembalian
Mengembalikan string VARCHAR.
Contoh
SQL
-
Contoh 1: Ekstraksi digit pertama dari field
server_protocol.-
Field contoh
server_protocol:HTTP/2.0 -
Pernyataan kueri (Uji)
*|SELECT regexp_extract(server_protocol, '\d+') -
Kueri mengembalikan kolom bernama
_col0dengan nilai2.
-
-
Contoh 2: Ekstraksi bagian file dari field
request_uridan hitung permintaan akses untuk setiap file.-
Field contoh
request_uri:/request/path-3/file-5 -
Pernyataan kueri (Uji)
* | SELECT regexp_extract(request_uri, '.*\/(file.*)', 1) AS file, count(*) AS count GROUP BY file -
Hasil contoh: Kolom file adalah
file-5, dan kolom count adalah17127.
-
-
Contoh 3: Ekstraksi tanda kutip tunggal (') dan digit dari field
message.-
Field contoh
message:error'1232 -
Pernyataan kueri
* | SELECT regexp_extract(message, '''\d+')CatatanUntuk mencocokkan tanda kutip tunggal ('), Anda harus melakukan escape dengan menduplikasinya menjadi
''dalam string ekspresi reguler. -
Hasilnya adalah
'1232.
-
SPL
-
Contoh 1: Ekstraksi digit pertama dari field server_protocol.
-
Field contoh
-
server_protocol:HTTP/2.0
-
Pernyataan kueri
* | extend a = regexp_extract(server_protocol, '\d+')
-
Hasil
a: 2
-
Contoh 2: Ekstraksi bagian file dari field
request_uri.-
Field contoh
-
request_uri:/request/path-3/file-5
-
Pernyataan kueri
* | extend a = regexp_extract(request_uri, '.*\/(file.*)',1)
-
Hasil
Hasilnya adalah a: file-5.
-
Contoh 3: Ekstraksi tanda kutip tunggal (') dan digit dari field
message.-
Field contoh
-
message:error'1232
-
Pernyataan kueri
* | extend a = regexp_extract(message, '''\d+')
Catatan
Untuk mencocokkan tanda kutip tunggal ('), Anda harus melakukan escape dengan menduplikasinya menjadi '' dalam string ekspresi reguler.
-
Hasil
1 12-19 10:39:33
a: '1232
fungsi regexp_extract_bool
Mengekstraksi substring yang sesuai dengan ekspresi reguler dan mengonversinya ke BOOLEAN. Konversi berhasil hanya jika substring tersebut adalah "true" atau "false" (tidak peka huruf besar/kecil); jika tidak, mengembalikan null.
Sintaksis
-
Mengekstraksi substring yang sesuai dengan ekspresi reguler dari string sumber dan mengonversinya ke tipe BOOLEAN. Jika konversi gagal, mengembalikan
null.regexp_extract_bool(x, regular expression) -
Mengekstraksi substring dari string sumber yang sesuai dengan capturing group tertentu dari ekspresi reguler dan mengonversi substring tersebut ke tipe boolean. Jika konversi gagal,
nulldikembalikan.regexp_extract_bool(x, regular expression, n)
Parameter
|
Parameter |
Deskripsi |
|
x |
String sumber. Parameter ini bertipe VARCHAR. |
|
regular expression |
Ekspresi reguler yang berisi capturing group. Misalnya, |
|
n |
Indeks capturing group yang akan diekstraksi. Parameter ini merupakan bilangan bulat berbasis 1. |
Tipe nilai kembalian
Tipe BOOLEAN.
Contoh
-
Ekstraksi nilai boolean dari nilai field.
-
Field contoh
false -
Pernyataan kueri dan analisis (Uji)
*| select regexp_extract_bool('false', '[a-zA-Z]+') -
Hasil kueri dan analisis
Mengembalikan satu kolom
_col0dengan satu baris data. Nilainya adalahfalse.
-
fungsi regexp_extract_long
Mengekstraksi substring yang sesuai dengan ekspresi reguler dan mengonversinya ke BIGINT. Mengembalikan null jika konversi gagal.
Sintaksis
-
Mengekstraksi dan mengonversi substring yang sesuai dengan capturing group pertama dalam ekspresi reguler.
regexp_extract_long(x, regular expression) -
Mengekstraksi dan mengonversi substring yang sesuai dengan capturing group tertentu.
regexp_extract_long(x, regular expression, n)
Parameter
|
Parameter |
Deskripsi |
|
x |
String sumber. Parameter ini bertipe VARCHAR. |
|
regular expression |
Ekspresi reguler yang berisi capturing group. Misalnya, |
|
n |
Indeks capturing group yang akan diekstraksi. Indeks ini merupakan bilangan bulat berbasis 1. |
Tipe nilai kembalian
BIGINT
Contoh
-
Ekstraksi angka dari field
time.-
Field contoh
time:19/Dec/2024:06:16:06 -
Pernyataan kueri (Uji)
*|SELECT regexp_extract_long(time, '(\d{2})/', 1) -
Hasil kueri dan analisis
Mengembalikan kolom bernama
_col0yang berisi dua baris, masing-masing dengan nilai19.
-
fungsi regexp_extract_double
Mengekstraksi substring yang sesuai dengan ekspresi reguler dan mengonversinya ke DOUBLE. Mengembalikan null jika konversi gagal.
Sintaksis
-
Mengekstraksi substring pertama yang cocok dan mengonversinya ke tipe double. Jika konversi gagal,
nulldikembalikan.regexp_extract_double(x, regular expression) -
Mengekstraksi substring dari capturing group yang ditentukan dan mengonversinya ke tipe double. Jika konversi gagal,
nulldikembalikan.regexp_extract_double(x, regular expression, n)
Parameter
|
Parameter |
Deskripsi |
|
x |
String sumber. Tipe datanya harus VARCHAR. |
|
regular expression |
Ekspresi reguler yang berisi capturing group. Misalnya, |
|
n |
Indeks capturing group yang akan diekstraksi. Indeks ini merupakan bilangan bulat yang dimulai dari 1. |
Tipe nilai kembalian
double
Contoh
-
Ekstraksi bilangan titik mengambang dari field
server_protocol.-
Field contoh
server_protocol:HTTP/1.1 -
Pernyataan kueri dan analisis (Uji)
*|SELECT regexp_extract_double(server_protocol, '\d+\.\d+') -
Hasil kueri dan analisis
Kueri dan analisis mengembalikan kolom bernama
_col0. Kolom ini berisi dua baris, masing-masing dengan nilai1.1.
-
fungsi regexp_extract_map
Mengekstraksi substring yang sesuai dengan capturing group dalam ekspresi reguler dan mengembalikannya sebagai map pasangan kunci-nilai.
Sintaksis
-
Membuat map dengan memasangkan kunci yang diberikan dengan substring yang sesuai dengan capturing group yang sesuai.
regexp_extract_map(x, regular expression, keys)
-
Membuat map dengan menggunakan ekspresi reguler yang memiliki dua capturing group yang masing-masing mencocokkan kunci dan nilai.
regexp_extract_map(x, regular expression)
Parameter
|
Parameter |
Deskripsi |
|
x |
String sumber yang akan dicari. Tipe datanya adalah VARCHAR. |
|
regular expression |
Ekspresi reguler yang berisi capturing group. Misalnya, |
|
keys |
Nama kunci untuk substring yang ditangkap. Tipe datanya adalah ARRAY(VARCHAR). Jumlah kunci harus sesuai dengan jumlah capturing group dalam ekspresi reguler. |
Tipe nilai kembalian
MAP(VARCHAR, VARCHAR)
Contoh
-
Contoh 1: Ekstraksi nama protokol dan versi dari field server_protocol.
-
Field contoh
server_protocol: 'HTTP/2.0' -
Pernyataan kueri
select regexp_extract_map(server_protocol, '(\w+)/([\d\.]+)', array['name', 'version']) as protocol -
Hasil kueri dan analisis
Kueri mengembalikan map berikut di kolom protocol:
{"name":"HTTP","version":"2.0"}.
-
-
Contoh 2: Ekstraksi semua pasangan kunci-nilai dari field content.
-
Field contoh
content: 'verb="GET" URI="/healthz" latency="45.911µs" userAgent="kube-probe/1.30+"' -
Pernyataan kueri
select regexp_extract_map(content, '(\w+)="([^"]*)"') as args -
Data output
{"latency":"45.911µs","verb":"GET","userAgent":"kube-probe/1.30+","URI":"/healthz"}
-
fungsi regexp_like
Memeriksa apakah sebuah string sesuai dengan ekspresi reguler.
Sintaksis
regexp_like(x, regular expression)
Parameter
|
Parameter |
Deskripsi |
|
x |
String sumber. Harus bertipe VARCHAR. |
|
regular expression |
Pola ekspresi reguler yang akan dicocokkan. |
Tipe nilai kembalian
BOOLEAN
Contoh
SQL
Periksa apakah field server_protocol berisi digit.
-
Field contoh
server_protocol:HTTP/2.0 -
Pernyataan kueri dan analisis (Uji)
*| select regexp_like(server_protocol, '\d+') -
Kueri mengembalikan dua baris. Kedua nilainya adalah
true. Ini menunjukkan bahwa nilai field server_protocol sesuai dengan ekspresi reguler\d+(berisi digit).
SPL
Periksa apakah field server_protocol berisi digit.
-
Field contoh
server_protocol:HTTP/2.0
-
Pernyataan kueri dan analisis
* |extend a = regexp_like(server_protocol, '\d+')
-
Hasil kueri dan analisis
1 12-18 19:34:20 1.2.3.4
a: true
fungsi regexp_replace
Menghapus atau mengganti substring yang sesuai dengan ekspresi reguler.
Sintaksis
-
Menghapus semua substring dari string sumber yang sesuai dengan ekspresi reguler.
regexp_replace(x, regular expression) -
Mengganti semua substring yang sesuai dengan ekspresi reguler dengan string pengganti.
regexp_replace(x, regular expression, replace string)
Parameter
|
Parameter |
Deskripsi |
|
x |
String sumber yang akan dicari. Parameter ini harus bertipe VARCHAR. |
|
regular expression |
Pola ekspresi reguler. |
|
replace string |
String pengganti. Jika dihilangkan, substring yang cocok akan dihapus. |
Tipe nilai kembalian
VARCHAR
Contoh
SQL
-
Contoh 1: Di field
region, ganti nama wilayah yang dimulai dengancnmenjadi China, lalu hitung jumlah permintaan dari China.-
Field contoh
region:cn-shanghai -
Pernyataan kueri dan analisis (Uji)
* | select regexp_replace(region, 'cn.*','China') AS region, count(*) AS count GROUP BY region -
Hasil kueri dan analisis: Kueri mengembalikan satu baris di mana kolom region adalah
Chinadan kolom count adalah168871.
-
-
Contoh 2: Hapus bagian nomor versi dari nilai field
server_protocol, lalu hitung jumlah permintaan untuk setiap protokol komunikasi.-
Field contoh
server_protocol:HTTP/2.0 -
Pernyataan kueri dan analisis (Uji)
*| select regexp_replace(server_protocol, '.\d+') AS server_protocol, count(*) AS count GROUP BY server_protocol -
Hasil kueri dan analisis: Kueri mengembalikan satu baris di mana
server_protocoladalahHTTPdancountadalah168871.
-
SPL
-
Contoh 1: Ganti semua nama wilayah dalam nilai field
regionyang dimulai dengan 'cn' menjadi China.-
Field contoh
-
region:cn-shanghai
-
Pernyataan kueri dan analisis
* | extend a = regexp_replace(region, 'cn.*','China')
-
Hasil kueri dan analisis
1 12-18 19:34:20 1.2.3.4 a: China -
Contoh 2: Hapus nomor versi dari nilai field
server_protocol.-
Field contoh
-
server_protocol:HTTP/2.0
-
Pernyataan kueri dan analisis (Uji)
* | extend a = regexp_replace(server_protocol, '.\d+')
-
Hasil kueri dan analisis
Kueri mengembalikan entri log yang mencakup timestamp, alamat IP tujuan 1.2.3.4, dan field server_protocol dengan nomor versi dihapus.
fungsi regexp_split
Memisahkan string sumber menjadi array substring menggunakan ekspresi reguler sebagai pemisah.
Sintaksis
regexp_split(x, regular expression)
Parameter
|
Parameter |
Deskripsi |
|
x |
String sumber. Tipe datanya adalah VARCHAR. |
|
regular expression |
Pola ekspresi reguler yang digunakan sebagai pemisah. |
Tipe nilai kembalian
array
Contoh
Gunakan garis miring (/) untuk memisahkan nilai field request_uri.
-
Field contoh
request_uri:/request/path-0/file-7 -
Pernyataan kueri dan analisis (Uji)
* | SELECT regexp_split(request_uri,'/') -
Hasil kueri dan analisis adalah
["","request","path-0","file-7"].