Topik ini menjelaskan cara menggunakan fungsi sumber daya untuk menarik data dari logstore lain guna memperkaya data log dalam sebuah logstore.
Informasi latar belakang
Sebuah hotel menyimpan informasi pribadi tamu di logstore bernama user_logstore dan menyimpan informasi check-in tamu di logstore bernama check-in_logstore. Hotel tersebut ingin mendapatkan beberapa bidang dari logstore check-in_logstore dan menggabungkan bidang-bidang tersebut dengan bidang-bidang di logstore user_logstore. Hotel dapat menggunakan fungsi res_log_logstore_pull untuk menarik data dari logstore check-in_logstore dan menggunakan fungsi e_table_map untuk memetakan data. Untuk informasi lebih lanjut tentang fungsi res_log_logstore_pull, lihat res_log_logstore_pull. Untuk informasi lebih lanjut tentang fungsi e_table_map, lihat e_table_map.
Transformasi data
Data Mentah
Logstore bernama user_logstore yang digunakan untuk menyimpan informasi pribadi.
topic:xxx city:xxx cid:12345 name:maki topic:xxx city:xxx cid:12346 name:vicky topic:xxx city:xxx cid:12347 name:maryLogstore bernama check-in_logstore yang digunakan untuk menyimpan informasi check-in.
time:1567038284 status:check in cid:12345 name:maki room_number:1111 time:1567038284 status:check in cid:12346 name:vicky room_number:2222 time:1567038500 status:check in cid:12347 name:mary room_number:3333 time:1567038500 status:leave cid:12345 name:maki room_number:1111
Aturan Transformasi
CatatanFungsi res_log_logstore_pull memungkinkan Anda menetapkan rentang waktu atau waktu mulai untuk pengayaan data.
Jika Anda menetapkan rentang waktu dalam aturan transformasi, misalnya, from_time=1567038284 and to_time=1567038500, data yang diterima dalam rentang waktu tertentu oleh Simple Log Service akan ditarik untuk pengayaan data.
Jika Anda menetapkan waktu mulai dalam aturan transformasi, misalnya, from_time="begin", data yang diterima sejak waktu tertentu oleh Simple Log Service akan ditarik untuk pengayaan data.
Untuk informasi lebih lanjut tentang bidang fungsi res_log_logstore_pull, lihat res_log_logstore_pull.
Fungsi e_table_map
Fungsi ini memetakan dua entri log menggunakan bidang cid. Jika nilai bidang cid dalam kedua entri log sama, pemetaan data berhasil. Bidang room_number dan nilai bidang dikembalikan dan digabungkan dengan entri log di logstore check-in_logstore.
e_table_map(res_log_logstore_pull(endpoint, ak_id, ak_secret, project, logstore, fields=["cid","room_number"], from_time="begin", ), "cid","room_number")
Hasil
Fungsi e_table_map
topic:xxx city:xxx cid:12345 name:maki room_nuber:1111 topic:xxx city:xxx cid:12346 name:vicky room_number:2222 topic:xxx city:xxx cid:12347 name:mary room_number:3333
Konfigurasikan aturan daftar putih dan aturan daftar hitam untuk memfilter data
Konfigurasikan Aturan Daftar Putih
Aturan Transformasi
Gunakan bidang fetch_include_data untuk mengonfigurasi aturan daftar putih. Dalam contoh ini, ekspresi fetch_include_data="room_number:1111" termasuk dalam fungsi res_log_logstore_pull. Ekspresi ini menunjukkan bahwa hanya entri log yang memiliki nilai bidang room_number adalah 1111 yang ditarik.
res_log_logstore_pull(endpoint, ak_id, ak_secret, project, logstore, ["cid","name","room_number","status"],from_time=1567038284,to_time=1567038500,fetch_include_data="room_number:1111")Data yang Diambil
status: check in cid:12345 name:maki room_number:1111 status:leave cid:12345 name:maki room_number:1111
Konfigurasikan Aturan Daftar Hitam
Aturan Transformasi
Gunakan bidang fetch_exclude_data untuk mengonfigurasi aturan daftar hitam. Dalam contoh ini, ekspresi fetch_exclude_data="room_number:1111" termasuk dalam fungsi res_log_logstore_pull. Ekspresi ini menunjukkan bahwa hanya entri log yang memiliki nilai bidang room_number adalah 1111 yang dihapus.
res_log_logstore_pull(endpoint, ak_id, ak_secret, project, logstore, ["cid","name","room_number","status"],from_time=1567038284,to_time=1567038500,fetch_exclude_data="room_number:1111")Data yang Diambil
status:check in cid:12346 name:vicky room_number:2222 status:check in cid:12347 name:mary room_number:3333
Konfigurasikan Aturan Daftar Hitam dan Aturan Daftar Putih
Aturan Transformasi
Jika Anda mengonfigurasi aturan daftar hitam dan aturan daftar putih, aturan daftar hitam diterapkan terlebih dahulu kemudian aturan daftar putih. Dalam contoh ini, ekspresi fetch_exclude_data="time:1567038285",fetch_include_data="status:check in" termasuk dalam fungsi res_log_logstore_pull. Ekspresi ini menunjukkan bahwa entri log yang memiliki nilai bidang time adalah 1567038285 dihapus terlebih dahulu dan kemudian entri log yang memiliki nilai bidang status adalah check in ditarik.
res_log_logstore_pull(endpoint, ak_id, ak_secret, project, logstore, ["cid","name","room_number","status"],from_time=1567038284,to_time=1567038500,fetch_exclude_data="time:1567038285",fetch_include_data="status:check in")Data yang Diambil
status:check in cid:12345 name:maki room_number:1111 status:check in cid:12346 name:vicky room_number:2222 status:check in cid:12347 name:mary room_number:3333
Aktifkan pemeliharaan kunci utama untuk menarik data dari logstore tujuan
Untuk membuang data sebelum mentransformasikannya, Anda dapat mengaktifkan fitur pemeliharaan kunci utama. Misalnya, Anda ingin menarik data check-in pelanggan yang telah check-in tetapi belum check-out dari logstore bernama check-in_logstore. Jika entri log yang ditarik dari pelanggan mencakup bidang status:leave, pelanggan tersebut telah check-out. Anda dapat menyetel parameter primary_keys dari fungsi res_log_logstore_pull dan entri log tidak ditransformasikan.
Anda dapat menetapkan satu bidang sebagai nilai parameter primary_keys. Bidang tersebut harus ada di bidang fields.
Sebelum Anda mengaktifkan fitur pemeliharaan kunci utama, pastikan bahwa logstore tempat Anda ingin menarik data hanya memiliki satu shard.
Jika Anda mengaktifkan fitur pemeliharaan kunci utama, Anda tidak dapat menetapkan bidang delete_data ke None.
Aturan Transformasi
res_log_logstore_pull(endpoint, ak_id, ak_secret, project, logstore, ["cid","name","room_number","status","time"],from_time=1567038284,to_time=None,primary_keys="cid",delete_data="status:leave")Mengambil Data
Bidang status:leave dalam entri log sebelumnya menunjukkan bahwa pelanggan yang memiliki nama name adalah maki telah check-out. Oleh karena itu, entri log ini tidak ditransformasikan.
time:1567038284 status:check in cid:12346 name:vicky room_number:2222 time:1567038500 status:check in cid:12347 name:mary room_number:3333