Topik ini menjelaskan sintaksis dan parameter fungsi pemetaan serta pengayaan, serta memberikan contoh penggunaannya.
Fungsi
Kategori | Fungsi | Deskripsi |
Pemetaan berbasis kolom | Memetakan nilai dari kolom input ke nilai dalam kamus data yang ditentukan dan mengembalikan kolom baru. Fungsi ini dapat digunakan bersama dengan fungsi lainnya. Untuk informasi lebih lanjut, lihat Gunakan fungsi e_dict_map untuk memperkaya data log. | |
Memetakan nilai dari kolom input ke baris dalam tabel yang ditentukan dan mengembalikan kolom baru. Fungsi ini dapat digunakan bersama dengan fungsi lainnya. Untuk informasi lebih lanjut, lihat Gunakan fungsi e_table_map untuk memperkaya kode status respons HTTP. | ||
Memperkaya log mentah dengan menggunakan tabel data di Tablestore sebagai tabel dimensi. | ||
Memperkaya log mentah dengan menggunakan tabel data di ApsaraDB for Redis sebagai tabel dimensi. |
e_dict_map
Fungsi e_dict_map memetakan nilai dari kolom input ke nilai dalam kamus data yang ditentukan dan mengembalikan kolom baru.
Sintaksis
e_dict_map(data, field, output_field, case_insensitive=True, missing=None, mode="overwrite")Parameter
Parameter
Tipe
Diperlukan
Deskripsi
data
Dict
Ya
Kamus data yang digunakan untuk pemetaan. Nilai parameter ini harus dalam format standar
{key01:value01,key01:value02,...}. Kunci harus berupa string. Contoh:{"1": "TCP", "2": "UDP", "3": "HTTP", "*": "Unknown"}.field
String atau daftar string
Ya
Satu atau lebih nama kolom. Jika nilai parameter ini berisi beberapa nama kolom, sistem melakukan operasi berikut:
Sistem melakukan pemetaan pada nama kolom secara berurutan.
Jika sistem menemukan beberapa nilai untuk kolom-kolom tersebut dan parameter mode disetel ke overwrite, sistem akan mengembalikan nilai yang terakhir cocok.
Jika sistem tidak menemukan nilai untuk kolom-kolom tersebut, sistem akan mengembalikan nilai parameter missing.
output_field
String
Ya
Nama kolom yang ingin Anda kembalikan oleh fungsi.
case_insensitive
Boolean
Tidak
Menentukan apakah akan menonaktifkan sensitivitas huruf besar/kecil selama pemetaan.
True: menonaktifkan sensitivitas huruf besar/kecil. Ini adalah nilai default.
False: mengaktifkan sensitivitas huruf besar/kecil.
CatatanJika kamus data berisi beberapa kunci yang hanya berbeda dalam huruf besar/kecil dan parameter case_insensitive disetel ke True, sistem pertama-tama memetakan nilai kolom input ke kunci yang menggunakan huruf besar/kecil yang sama dengan nilai tersebut. Jika kunci dengan huruf besar/kecil yang sama tidak ada, sistem secara acak memetakan nilai ke salah satu dari beberapa kunci tersebut.
missing
String
Tidak
Nilai yang diberikan ke kolom yang ditentukan oleh output_field ketika tidak ditemukan kecocokan untuk kolom input. Nilai default: None, yang menunjukkan bahwa tidak ada penugasan yang dilakukan.
CatatanJika kamus data berisi kunci asterisk (*), parameter
missingmenjadi tidak valid. Hal ini karena asterisk (*) memiliki prioritas lebih tinggi daripada parametermissing.mode
String
Tidak
Mode penimpaan kolom. Nilai default: overwrite. Untuk informasi lebih lanjut, lihat Mode pemeriksaan ekstraksi kolom dan penimpaan.
Respons
Log yang berisi kolom baru dikembalikan.
Contoh
Contoh 1: Memetakan nilai dari kolom pro dalam log mentah ke nilai dalam kamus data dan menghasilkan kolom baru bernama protocol.
Log Mentah
data: 123 pro: 1Aturan Transformasi
e_dict_map( {"1": "TCP", "2": "UDP", "3": "HTTP", "6": "HTTPS", "*": "Unknown"}, "pro", "protocol", )Hasil
data: 123 pro: 1 protocol: TCP
Contoh 2: Memetakan nilai dari kolom status dalam log mentah ke nilai dalam kamus data dan menghasilkan kolom baru bernama message.
Log Mentah
status: 500status: 400status: 200Aturan Transformasi
e_dict_map({"400": "Error", "200": "Success", "*": "Other"}, "status", "message")Hasil
status: 500 message: Otherstatus: 400 message: Errorstatus: 200 message: Success
Referensi
Fungsi ini dapat digunakan bersama dengan fungsi lainnya. Untuk informasi lebih lanjut, lihat Gunakan fungsi e_dict_map untuk memperkaya data log.
e_table_map
Fungsi e_table_map memetakan nilai dari kolom input ke baris dalam tabel yang ditentukan dan mengembalikan kolom baru.
Sintaksis
e_table_map(data, field, output_fields, missing=None, mode="fill-auto")Parameter
Parameter
Tipe
Diperlukan
Deskripsi
data
Tabel
Ya
Tabel yang digunakan untuk pemetaan.
CatatanJika Anda menggunakan fungsi sumber daya
res_rds_mysqldanres_log_logstore_pullsebagai sumber data, Anda harus menyetel parameterprimary_keys. Gagal melakukannya akan sangat memengaruhi kinerja dan dapat menyebabkan penundaan tugas. Untuk informasi lebih lanjut tentang cara menyetel parameterprimary_keys, lihat Fungsi sumber daya.field
String, daftar string, atau daftar tuple
Ya
Kolom input. Jika log tidak berisi kolom tersebut, tidak ada operasi yang dilakukan pada log.
output_fields
String, daftar string, atau daftar tuple
Ya
Kolom keluaran. Contoh:
["province", "pop"].missing
String
Tidak
Nilai yang diberikan ke kolom yang ditentukan oleh output_fields ketika tidak ditemukan kecocokan untuk kolom input. Nilai default: None, yang menunjukkan bahwa tidak ada penugasan yang dilakukan. Jika Anda ingin memetakan kolom input ke beberapa kolom, Anda dapat menyetel parameter
missingke daftar nilai default yang sesuai dengan kolom input. Jumlah nilai default harus sama dengan jumlah kolom.CatatanJika tabel berisi kolom asterisk (*), parameter
missingmenjadi tidak valid. Hal ini karena asterisk (*) memiliki prioritas lebih tinggi daripada parametermissing.mode
String
Tidak
Mode penimpaan kolom. Nilai default: fill-auto. Untuk informasi lebih lanjut, lihat Mode pemeriksaan ekstraksi kolom dan penimpaan.
Respons
Log yang berisi kolom baru dikembalikan.
Contoh
Contoh 1: Memetakan nilai dari kolom city ke baris dalam tabel dan mengembalikan nilai kolom province untuk baris tersebut.
Log Mentah
data: 123 city: njAturan Transformasi
e_table_map( tab_parse_csv("city,pop,province\nnj,800,js\nsh,2000,sh"), "city", "province" )Hasil
data: 123 city: nj province: js
Contoh 2: Memetakan nilai dari kolom city ke baris dalam tabel dan mengembalikan nilai kolom province dan pop untuk baris tersebut.
Log Mentah
data: 123 city: njAturan Transformasi
e_table_map( tab_parse_csv("city,pop,province\nnj,800,js\nsh,2000,sh"), "city", ["province", "pop"], )Hasil
data: 123 city: nj province: js pop: 800
Contoh 3: Gunakan fungsi tab_parse_csv untuk membangun tabel, memetakan nilai dari kolom city ke baris dalam tabel, dan mengembalikan nilai kolom province dan pop untuk baris tersebut.
Log Mentah
data: 123 city: njAturan Transformasi
e_table_map( tab_parse_csv("city#pop#province\nnj#800#js\nsh#2000#sh", sep="#"), "city", ["province", "pop"], )Hasil
data: 123 city: nj province: js pop: 800
Contoh 4: Gunakan fungsi tab_parse_csv untuk membangun tabel, memetakan nilai dari kolom city ke baris dalam tabel, dan mengembalikan nilai kolom province dan pop untuk baris tersebut.
Log Mentah
data: 123 city: njAturan Transformasi
e_table_map( tab_parse_csv( "city,pop,province\n|nj|,|800|,|js|\n|shang hai|,2000,|SHANG,HAI|", quote="|" ), "city", ["province", "pop"], )Hasil
data: 123 city: nj province: js pop: 800
Contoh 5: Kolom input berbeda dari kolom yang sesuai dalam tabel yang digunakan untuk pemetaan. Temukan baris dalam tabel berdasarkan kolom cty dan city, lalu kembalikan nilai kolom province untuk baris tersebut.
Log Mentah
data: 123 cty: njAturan Transformasi
e_table_map( tab_parse_csv("city,pop,province\nnj,800,js\nsh,2000,sh"), [("cty", "city")], "province", )Hasil
data: 123 cty: nj province: js
Contoh 6: Kolom input berbeda dari kolom yang sesuai dalam tabel yang digunakan untuk pemetaan. Petakan data dan ubah nama kolom keluaran.
Log Mentah
data: 123 cty: njAturan Transformasi
e_table_map( tab_parse_csv("city,pop,province\nnj,800,js\nsh,2000,sh"), [("cty", "city")], [("province", "pro")], )Hasil
data: 123 cty: nj pro: js
Contoh 7: Petakan nilai dari beberapa kolom ke baris dalam tabel.
Log Mentah
data: 123 city: nj pop: 800Aturan Transformasi
e_table_map( tab_parse_csv("city,pop,province\nnj,800,js\nsh,2000,sh"), ["city", "pop"], "province", )Hasil
data: 123 city: nj pop: 800 province: js
Contoh 8: Petakan nilai dari beberapa kolom ke baris dalam tabel. Kolom input berbeda dari kolom yang sesuai dalam tabel yang digunakan untuk pemetaan.
Log Mentah
data: 123 cty: nj pp: 800Aturan Transformasi
e_table_map( tab_parse_csv("city,pop,province\nnj,800,js\nsh,2000,sh"), [("cty", "city"), ("pp", "pop")], "province", )Hasil
data: 123 cty: nj pp: 800 province: js
Referensi
Fungsi ini dapat digunakan bersama dengan fungsi lainnya. Untuk informasi lebih lanjut, lihat Gunakan fungsi e_table_map untuk memperkaya kode status respons HTTP.
e_tablestore_map
Fungsi e_tablestore_map memperkaya log mentah menggunakan tabel data di Tablestore sebagai tabel dimensi.
Sintaksis
e_tablestore_map( fields, endpoint, ak_id, ak_secret, instance_name, table_names, output_fields=None, output_table_name=None, encoding="utf8", mode="fill-auto", )Parameter
Parameter
Tipe
Diperlukan
Deskripsi
fields
String, angka, daftar, atau daftar tuple
Ya
Kolom log mentah yang digunakan untuk memetakan data antara log mentah dan tabel data. Fungsi ini memetakan beberapa kolom log mentah ke kunci utama dalam tabel data satu per satu. Contoh:
Jika tabel data berisi kunci utama a dan log mentah berisi kolom a, Anda dapat menggunakan
fields="a".Jika tabel data berisi kunci utama a, b, dan c dan log mentah berisi kolom a, b, dan c, Anda dapat menggunakan
fields=["a", "b", "c"].Jika tabel data berisi kunci utama a, b, dan c dan log mentah berisi kolom a1, b1, dan c1, Anda dapat menggunakan
fields=[("a1", "a"), ("b1", "b"), ("c1", "c")].
endpoint
String
Ya
Titik akhir dari instansi Tablestore di mana tabel data dibuat. Untuk informasi lebih lanjut, lihat Titik akhir.
CatatanAnda dapat menggunakan titik akhir virtual private cloud (VPC) atau titik akhir publik dari instansi Tablestore. Titik akhir VPC digunakan untuk akses dalam wilayah yang sama, dan titik akhir publik digunakan untuk akses melalui Internet tanpa memandang wilayah.
ak_id
String
Ya
ID AccessKey dari akun yang memiliki izin untuk mengakses instansi Tablestore. Untuk informasi lebih lanjut, lihat Buat pasangan AccessKey.
Jika Anda menggunakan pengguna RAM, pastikan bahwa pengguna RAM diberikan izin akses, seperti AliyunOTSReadOnlyAccess. Untuk informasi lebih lanjut, lihat Berikan izin kepada pengguna RAM.
ak_secret
String
Ya
Rahasia AccessKey dari akun yang memiliki izin untuk mengakses instansi Tablestore. Untuk informasi lebih lanjut, lihat Buat pasangan AccessKey.
instance_name
String
Ya
Nama instansi Tablestore.
table_names
String, daftar string, atau daftar tuple
Ya
Nama tabel data. Jika tabel data menggunakan indeks sekunder, atur parameter ini ke nama indeks tersebut. Untuk informasi lebih lanjut tentang fitur indeks sekunder, lihat Buat indeks sekunder.
Sebagai contoh, jika indeks sekunder index1 dibuat untuk tabel data, atur parameter ini ke
"index1".output_fields
Daftar
Tidak
Kolom keluaran. Anda dapat menentukan nama kolom kunci utama atau kolom atribut. Contoh:
["province", "pop"]. Jika Anda tidak mengonfigurasi parameter ini, semua kolom dari baris yang cocok berdasarkan kolom input akan dikembalikan.CatatanJika beberapa tabel data dibuat dalam instansi Tablestore, fungsi hanya akan mengembalikan data dalam tabel data yang pertama kali digunakan untuk pencocokan.
output_table_name
String
Tidak
Nama tabel data tempat data yang dikembalikan disimpan. Nilai default: None, yang menunjukkan bahwa kolom keluaran tidak berisi nama tabel. Jika Anda menyetel parameter ini ke string, kolom keluaran mencakup nama tabel.
Sebagai contoh, tabel data bernama test digunakan, dan aturan transformasi mencakup
output_fields=["province", "pop"],output_table_name="table_name". Jika kolom data["province", "pop"]dalam tabel data test cocok, kolom keluaran adalahprovince: xxx, pop:xxx,table_name:test.encoding
String
Tidak
Metode penyandian parameter permintaan HTTPS. Nilai default: utf-8.
mode
String
Tidak
Mode penimpaan kolom. Nilai default: fill-auto. Untuk informasi lebih lanjut, lihat Mode pemeriksaan ekstraksi kolom dan penimpaan.
Respons
Log yang berisi kolom baru dikembalikan.
Contoh
Contoh-contoh berikut didasarkan pada tabel data table_name_test berikut.
city (kunci utama)
pop (kunci utama)
cid
province
region
bj
300
1
bj
huabei
nj
800
2
js
huadong
sh
200
3
sh
huadong
Contoh 1: Temukan baris dalam tabel data berdasarkan kolom city dan pop, lalu kembalikan nilai kolom province dan cid untuk baris tersebut.
Log Mentah
city:sh name:maki pop:200Aturan Transformasi
e_tablestore_map( ["city","pop"], "https://d00s0dxa****.cn-hangzhou.ots.aliyuncs.com", "LTA3****", "VIH9****", "d00s0dxa****", "table_name_test", output_fields=["province","cid"])Hasil
city:sh name:maki pop:200 cid:3 province:sh
Contoh 2: Petakan kolom city1 dan pop1 dalam log mentah ke kunci utama city dan pop dalam tabel data, temukan baris dalam tabel data berdasarkan kolom tersebut, dan kembalikan nilai semua kolom untuk baris tersebut.
Log Mentah
city1:sh name:maki pop1:200Aturan Transformasi
e_tablestore_map( [("city1","city"), ("pop1", "pop")], "https://d00s0dxa****.cn-hangzhou.ots.aliyuncs.com", "LTA3****", "VIH9****", "d00s0dxa****", "table_name_test")Hasil
city:sh name:maki pop:200 cid:3 province:sh region:huadong
Contoh 3: Temukan baris dalam tabel data berdasarkan kolom city dan pop, lalu kembalikan nilai semua kolom untuk baris tersebut. Atur output_table_name ke
"table_name". Dalam hasil yang dikembalikan, Anda dapat melihat nama tabel data tempat data yang dikembalikan disimpan.Log Mentah
city:sh name:maki pop:200Aturan Transformasi
e_tablestore_map( ["city","pop"], "https://d00s0dxa****.cn-hangzhou.ots.aliyuncs.com", "LTA3****", "VIH9****", "d00s0dxa****", "table_name_test", output_table_name="table_name" )Hasil
city:sh name:maki pop:200 cid:3 province:sh region:huadong table_name:table_name_test
Contoh 4: Temukan baris dalam tabel data table_name_test, table_name_test1, dan table_name_test2 berdasarkan kolom city dan pop, lalu kembalikan nilai semua kolom untuk baris tersebut. Dalam hasil yang dikembalikan, Anda hanya dapat melihat data dalam tabel data table_name_test yang pertama kali digunakan untuk pencocokan.
Log Mentah
city:sh name:maki pop:200Aturan Transformasi
e_tablestore_map( ["city","pop"], "https://d00s0dxa****.cn-hangzhou.ots.aliyuncs.com", "LTA3****", "VIH9****", "d00s0dxa****", ["table_name_test","table_name_test1","table_name_test2"], output_table_name="table_name" )Hasil
city:sh name:maki pop:200 cid:3 province:sh region:huadong table_name:table_name_test
Contoh 5: Temukan baris dalam tabel_data_test, tabel_data_test1, dan tabel_data_test2 berdasarkan kolom pk1 dan pk2 untuk indeks sekunder index1, lalu kembalikan nilai kolom definedcol2 yang telah ditentukan sebelumnya untuk baris tersebut. Kolom yang telah ditentukan sebelumnya ditentukan untuk indeks sekunder index1.
Tabel Data (index1)
pk1 (kunci utama)
pk2 (kunci utama)
definedcol2 (kolom yang telah ditentukan sebelumnya)
definedcol3 (kolom yang telah ditentukan sebelumnya)
pk1_1
pk2_1
definedcol2_1
definedcol3_1
pk1_2
pk2_2
definedcol2_2
definedcol3_2
Log Mentah
pk1:pk1_1 pk2:pk2_1Aturan Transformasi
e_tablestore_map( ["pk1","pk2"], "https://d00s0dxa****.cn-hangzhou.ots.aliyuncs.com", "LTA3****", "VIH9****", "d00s0dxa****", "index1", output_fields= ["definedcol2"], output_table_name="table_name", )Hasil
pk1:pk1_1 pk2:pk2_1 definedcol2:definedcol2_1 table_name:index1
e_redis_map
Fungsi e_redis_map memperkaya log mentah menggunakan tabel data di ApsaraDB for Redis sebagai tabel dimensi.
Sintaksis
e_redis_map(field, output_field, host, port=6379, db=0, username=None, password=None, encoding="utf-8", max_retries=5, mode="fill-auto")Parameter
Parameter
Tipe
Diperlukan
Deskripsi
field
String
Ya
Kolom log mentah yang digunakan untuk memetakan data antara log mentah dan tabel data. Jika log mentah tidak berisi kolom tersebut, tidak ada operasi yang dilakukan pada log.
output_field
String
Ya
Kolom keluaran.
host
String
Ya
Titik akhir dari database ApsaraDB for Redis.
username
String
Tidak
Nama pengguna dari akun yang ingin Anda gunakan untuk terhubung ke database ApsaraDB for Redis. Parameter ini kosong secara default, yang menunjukkan bahwa autentikasi tidak dilakukan.
password
String
Tidak
Kata sandi dari akun yang ingin Anda gunakan untuk terhubung ke database ApsaraDB for Redis. Parameter ini kosong secara default, yang menunjukkan bahwa autentikasi tidak dilakukan.
port
Integer
Tidak
Port dari database ApsaraDB for Redis. Nilai default: 6379.
db
Integer
Tidak
Nama database ApsaraDB for Redis. Nilai default: 0.
encoding
String
Tidak
Metode penyandian data dalam database ApsaraDB for Redis. Nilai default: utf-8.
max_retries
Integer
Tidak
Jumlah maksimum percobaan ulang yang diizinkan ketika permintaan untuk terhubung ke database ApsaraDB for Redis gagal. Nilai default: 5.
Jika permintaan koneksi gagal setelah jumlah maksimum percobaan ulang, fungsi akan melewati log saat ini dalam proses transformasi. Transformasi selanjutnya tidak terpengaruh.
Setiap interval antara percobaan ulang menjadi dua kali lipat dari interval sebelumnya. Interval berkisar dari 1 detik hingga 120 detik.
mode
String
Tidak
Mode penimpaan kolom. Nilai default: fill-auto. Untuk informasi lebih lanjut, lihat Mode pemeriksaan ekstraksi kolom dan penimpaan.
Respons
Log yang berisi kolom baru dikembalikan.
Contoh
Contoh-contoh berikut didasarkan pada tabel data berikut dalam ApsaraDB for Redis.
PentingHanya nilai tipe string yang didukung.
Kunci
Nilai
i1001
{ "name": "Orange", "price": 10 }
i1002
{ "name": "Apple", "price": 12 }
i1003
{ "name": "Mango", "price": 16 }
Contoh 1: Temukan nilai dalam tabel data berdasarkan kolom item dan kembalikan nilai tersebut. Nama pengguna dan kata sandi dari akun yang digunakan untuk terhubung ke database ApsaraDB for Redis tidak ditentukan dalam aturan transformasi.
Log Mentah
item: i1002 count: 7Aturan Transformasi
e_redis_map("item", "detail", host="r-bp1olrdor8353v4s.redis.rds.aliyuncs.com")Hasil
item: i1002 count: 7 detail: { "name": "Apple", "price": 12 }
Contoh 2: Temukan nilai dalam tabel data berdasarkan kolom item dan kembalikan nilai tersebut. Nama pengguna dan kata sandi dari akun yang digunakan untuk terhubung ke database ApsaraDB for Redis ditentukan dalam aturan transformasi.
Log Mentah
item: i1003 count: 7Aturan Transformasi
e_redis_map("item", "detail", host="r-bp1olrdor8353v4s****.redis.rds.aliyuncs.com", username="r-bp****", password="***")Hasil
item: i1003 count: 7 detail:{ "name": "Mango", "price": 16 }