全部产品
Search
文档中心

Simple Log Service:Sintaks transformasi data

更新时间:Jun 26, 2025

Bahasa domain-spesifik (DSL) berbasis Python untuk Simple Log Service menyediakan lebih dari 200 fungsi bawaan yang dapat digunakan untuk mentransformasi data secara efisien. Topik ini menjelaskan mode bahasa, kategori fungsi, dan implementasi DSL untuk Simple Log Service.

Mode bahasa

DSL untuk Simple Log Service kompatibel dengan Python. Dalam mode standar, DSL dianggap sebagai subset dari Python. Selain struktur data dasar dan ekspresi, aturan sintaks lainnya didefinisikan menggunakan fungsi. Untuk menggunakan fungsi yang ditentukan pengguna (UDF), ajukan Tiket.

Kategori

Sintaks Python

Mode standar

Struktur data

Angka, string, dan Boolean

Didukung.

String yang dimulai atau diakhiri dengan """ tidak didukung.

Tuple, list, set, dan dictionary

Didukung.

Struktur set tidak didukung. Contoh: {1,2,3}.

Objek

Hanya struktur data tambahan bawaan seperti objek tabel dan datetime yang didukung.

Sintaks dasar

Operator seperti tanda plus (+), tanda minus (-), tanda perkalian (×), dan operator pembagian (/)

Hanya operator perbandingan seperti ==, !=, and >, dan operator logika seperti AND, OR, dan NOT yang dapat digunakan langsung dalam kode. Anda harus memanggil fungsi untuk menggunakan fungsionalitas operator lainnya.

Komentar

Didukung.

Penugasan variabel

Tidak didukung. Anda harus memanggil fungsi untuk memberikan nilai ke variabel.

Evaluasi kondisi

Didukung. Fungsi: e_if, e_if_else, dan e_switch.

Perulangan

Didukung secara tidak langsung. Anda harus menggunakan fungsi bawaan bersarang untuk mengimplementasikan perulangan. Contoh fungsi berikut menunjukkan cara melintasi elemen-elemen dalam array:

e_if(op_ge(op_len(json_parse(v("x"))), 1), e_set("x0", lst_get(v("x"), 0)))
e_if(op_ge(op_len(json_parse(v("x"))), 2), e_set("x1", lst_get(v("x"), 1)))

Fungsi

Fungsi bawaan standar Python

Tidak didukung. Anda dapat menggunakan lebih dari 200 fungsi bawaan yang disediakan oleh DSL untuk Simple Log Service.

Pemanggilan fungsi

Didukung. Pemanggilan fungsi yang menggunakan pemecahan parameter tidak didukung.

UDF, seperti def atau lambda

Tidak didukung. Anda dapat menggunakan lebih dari 200 fungsi pemrosesan global dan fungsi ekspresi yang disediakan oleh DSL untuk Simple Log Service. Anda juga dapat menggabungkan fungsi-fungsi ini sesuai dengan kebutuhan bisnis Anda.

Modul

Impor dan penggunaan pustaka standar Python

Tidak didukung.

Pembuatan thread dan proses

Tidak didukung.

Impor pustaka pihak ketiga

Tidak didukung.

Koneksi jaringan eksternal atau panggilan perintah eksternal

Didukung. DSL untuk Simple Log Service menyediakan konektor sumber daya bawaan.

Kategori fungsi

Dalam mode standar DSL untuk Simple Log Service, semua operasi dilakukan melalui pemanggilan fungsi. DSL menyediakan lebih dari 200 fungsi bawaan yang dikategorikan menjadi fungsi pemrosesan global dan fungsi ekspresi.

  • Fungsi Pemrosesan Global

    Fungsi pemrosesan global digunakan untuk menerima, memproses, dan mengembalikan log. Hanya fungsi pemrosesan global yang dapat digunakan untuk membangun setiap langkah dalam aturan transformasi.

  • Fungsi Ekspresi

    Fungsi ekspresi biasanya digunakan untuk menerima parameter tertentu dan mengembalikan nilai tertentu. Fungsi ekspresi dapat digabungkan dan dilewatkan ke fungsi pemrosesan global sebagai parameter untuk mendefinisikan logika yang lebih fleksibel.

Tabel berikut menjelaskan fungsi pemrosesan global dan fungsi ekspresi.

Kategori

Membangun Langkah

Menerima Log

Mengembalikan Hasil

Memodifikasi Log

Menggabungkan Fungsi

Fungsi Pemrosesan Global

Didukung.

Log diterima secara otomatis.

Nol hingga beberapa log dikembalikan.

Didukung. Dalam kebanyakan kasus, log dapat dimodifikasi.

Didukung.

Fungsi Ekspresi

Tidak didukung.

Didukung hanya oleh beberapa fungsi ekspresi. Sebagian besar fungsi ekspresi tidak memproses log secara langsung.

Struktur data spesifik dikembalikan.

Tidak didukung.

Didukung.

Fungsi pemrosesan global

Fungsi pemrosesan global digunakan untuk menerima, memproses, dan mengembalikan log.

Catatan

Hanya fungsi pemrosesan global yang dapat ditempatkan di baris pertama setiap langkah.

Sintaks berikut digunakan:

Global Processing Function 1(..Parameters....)
Global Processing Function 2(..Parameters....)
Global Processing Function 3(..Parameters....)
Global Processing Function 4(..Parameters....)

Fungsi pemrosesan global dapat dikategorikan lebih lanjut menjadi fungsi kontrol aliran dan fungsi pemrosesan acara. Tabel berikut menjelaskan fungsi-fungsi tersebut.

Kategori

Deskripsi

Contoh

Fungsi kontrol aliran

Fungsi-fungsi ini digunakan untuk mengelola proses, menerima log, dan memanggil fungsi lain untuk memproses log berdasarkan kondisi tertentu.

e_if, e_switch, dan e_if_else.

Fungsi pemrosesan acara

Fungsi-fungsi ini digunakan untuk mentransformasi log. Nol hingga beberapa log dikembalikan.

Contoh:

  • e_drop_fields: membuang field log.

  • e_kv: mengekstrak pasangan kunci-nilai log.

  • e_dict_map: memperkaya log.

Logika Transformasi:

  • Pemrosesan Dasar

    Fitur transformasi data membaca data streaming dari Logstore sumber dan mengirimkan setiap log dalam struktur kamus ke fungsi tertentu. Kemudian, fitur ini menjalankan fungsi yang ditentukan dalam aturan transformasi secara berurutan untuk memproses acara dan menulis hasil transformasi ke Logstore tujuan yang ditentukan.

    Catatan

    Semua field dan nilai log dikirim sebagai string. Misalnya, log mentah {"__time__": "1234567", "__topic__": "", "k1": "test"} diproses oleh fungsi e_set("f1", 200). Fungsi ini menambahkan field f1 yang nilainya diatur ke 200 ke log mentah. Lalu, log mentah diubah menjadi {"__time__": "1234567", "__topic__": "", "k1": "test", "f1": "200"}. Dalam log ini, field f1 dan nilai 200 adalah string.

    Fungsi pemrosesan acara yang ditentukan dalam aturan transformasi dipanggil secara berurutan. Setiap fungsi menerima dan memproses log, lalu mengembalikan log yang telah diproses.

    Sebagai contoh, fungsi e_set("type", "test") menambahkan field type yang nilainya diatur ke test ke log. Fungsi berikutnya menerima dan memproses log yang telah diproses.

  • Evaluasi Kondisi

    • e_if: Anda dapat memanggil fungsi e_if untuk menambahkan ekspresi kondisional guna memproses log. Jika log tidak memenuhi kondisi yang ditentukan, operasi terkait dilewati. Fungsi e_if mengimplementasikan logika if.

      Sebagai contoh, fungsi e_if(e_match("status", "200"), e_regex("data", "ret: \d+", "result")) memeriksa apakah nilai field status adalah 200. Jika nilainya 200, fungsi mengekstrak field result dari field data menggunakan ekspresi reguler yang ditentukan. Jika tidak, tidak ada operasi yang dilakukan.

    • e_if_else: Fungsi ini bekerja mirip dengan fungsi if_else.

  • Penghentian Pemrosesan

    • Langkah dalam aturan transformasi mungkin tidak mengembalikan log. Ini menunjukkan bahwa log terkait dihapus.

      Sebagai contoh, fungsi e_if(str_islower(v("result")), e_drop()) digunakan untuk memeriksa apakah nilai field result dalam log adalah string yang terdiri dari karakter huruf kecil saja. Jika kondisi dievaluasi benar, log dibuang dan langkah-langkah berikutnya tidak dilakukan pada log ini. Sistem secara otomatis memproses log berikutnya.

    • Jika log ditulis ke Logstore tujuan, pemrosesan dihentikan. Misalnya, jika fungsi e_output digunakan untuk menulis log ke Logstore tujuan dan menghapus log, langkah-langkah berikutnya tidak dilakukan pada log ini.

      Catatan

      Fungsi e_coutput menyalin log keluaran dan langkah-langkah berikutnya dilakukan pada log ini.

  • Pemisahan Log untuk Pemrosesan Paralel

    Langkah dalam aturan transformasi mungkin mengembalikan beberapa log. Ini menunjukkan bahwa log terkait dibagi.

    Sebagai contoh, fungsi e_split(data) membagi log menjadi dua log berdasarkan nilai field data. Jika nilai field data dalam log adalah "abc, xyz", log dibagi menjadi dua log. Dalam satu log, nilai field data adalah abc. Dalam log lainnya, nilai field data adalah xyz.

    Log yang dihasilkan setelah pemisahan diproses dalam langkah-langkah berikutnya.

Fungsi ekspresi

Selain fungsi pemrosesan global, DSL untuk Simple Log Service menyediakan 200 fungsi ekspresi yang digunakan untuk menerima parameter tertentu dan mengembalikan nilai tertentu. Anda dapat memanggil fungsi ekspresi atau kombinasi fungsi ekspresi dalam fungsi pemrosesan global. Sintaks berikut digunakan:

Global Processing Function 1(Expression Function 1(...), ...)
Global Processing Function 2(..., Expression Function 2(...), Expression Function 3(...), ...)

Fungsi ekspresi dapat dikategorikan menjadi fungsi pemeriksaan acara, fungsi sumber daya, fungsi kontrol, dan fungsi ekspresi lainnya. Tabel berikut menjelaskan fungsi-fungsi tersebut.

Kategori

Deskripsi

Contoh

Fungsi Pemeriksaan Acara

Fungsi-fungsi ini digunakan untuk menerima log, mengekstrak informasi tertentu, lalu mengembalikan informasi tanpa memodifikasi log.

v: mengembalikan nilai field log. e_search dan e_match: memeriksa apakah nilai field dalam log memenuhi kondisi tertentu.

Fungsi Sumber Daya

Fungsi-fungsi ini digunakan untuk mengakses sumber daya lokal atau eksternal, menerima parameter tertentu, dan mengembalikan nilai tertentu. Tipe data nilai kembali termasuk kamus dan tabel.

res_oss_file, res_rds_mysql, dan res_log_logstore_pull.

Fungsi Kontrol

Fungsi-fungsi ini digunakan untuk menerima parameter tertentu dan melakukan operasi logika pada ekspresi atau kontrol berbasis kondisi. Fungsi-fungsi ini juga digunakan untuk memanggil fungsi ekspresi lainnya untuk mengembalikan hasil.

op_and, op_or, op_not, op_if, dan op_coalesce.

Fungsi Ekspresi Lainnya

Fungsi-fungsi ini digunakan untuk menerima parameter tertentu atau hasil fungsi lainnya dan mengembalikan nilai tertentu.

Fungsi string, fungsi tanggal dan waktu, dan fungsi konversi.