全部产品
Search
文档中心

Simple Log Service:Sintaks transformasi data

更新时间:Dec 21, 2025

Simple Log Service (SLS) menggunakan DSL berbasis Python dan menyediakan lebih dari 200 fungsi bawaan untuk menyederhanakan tugas transformasi data. Topik ini menjelaskan mode bahasa, kategori fungsi, dan prinsip eksekusi DSL.

Mode bahasa

SLS DSL kompatibel dengan Python. Dalam mode standar, SLS DSL merupakan subset dari Python. Selain struktur data dasar dan ekspresi, semua aturan sintaks lainnya diimplementasikan melalui fungsi.

Kategori

Sintaks Python

Mode standar

Data structure

Number, string, dan Boolean

Didukung.

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

Tuple, list, set, dan dictionary

Didukung.

Struktur set tidak didukung, seperti {1,2,3}.

Object

Hanya struktur data ekstensi bawaan seperti objek table dan datetime yang didukung.

Basic syntax

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

Hanya operator perbandingan, seperti ==, !=, >, dan operator logika, seperti and, or, dan not, yang dapat digunakan langsung dalam kode. Operator lainnya harus dipanggil melalui fungsi.

Comments

Didukung.

Variable assignment

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

Prerequisites

Didukung. Fungsi: e_if, e_if_else, dan e_switch.

Loops

Didukung secara tidak langsung. Anda harus menggunakan fungsi bawaan bersarang untuk mengimplementasikan loop. Contoh fungsi berikut menunjukkan cara melakukan traversal 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)))

Function

Standard built-in functions of Python

Tidak didukung. Sebagai gantinya, Anda dapat menggunakan lebih dari 200 fungsi bawaan yang disediakan oleh SLS DSL.

Function calls

Didukung. Pemanggilan fungsi yang menggunakan parameter unpacking tidak didukung.

User-defined functions seperti def atau lambda

Tidak didukung. SLS DSL menyediakan lebih dari 200 fungsi pemrosesan global dan fungsi ekspresi. Anda dapat mengombinasikan fungsi-fungsi ini sesuai kebutuhan.

Module

Import dan penggunaan pustaka standar Python

Tidak didukung.

Creation of threads and processes

Tidak didukung.

Import pustaka pihak ketiga

Tidak didukung.

External network connection atau external command call

Didukung. SLS DSL menyediakan konektor resource bawaan.

Kategori fungsi

Dalam mode standar, SLS DSL melakukan semua operasi dengan memanggil 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 menyusun setiap langkah dalam aturan transformasi.

  • Fungsi ekspresi

    Fungsi ekspresi umumnya digunakan untuk menerima parameter tertentu dan mengembalikan nilai tertentu. Fungsi ekspresi dapat dikombinasikan dan diteruskan ke fungsi pemrosesan global sebagai parameter untuk mendefinisikan logika yang lebih fleksibel.

Tabel berikut membandingkan kemampuan kedua jenis fungsi tersebut.

Jenis fungsi

Langkah keseluruhan

Menerima

Kembali

Memodifikasi log

Mengombinasikan fungsi

Global processing functions

Support

Log diterima secara otomatis

Nol hingga beberapa log

Didukung dalam sebagian besar kasus

Didukung

Expression functions

Not supported

Hanya didukung oleh beberapa fungsi ekspresi. Sebagian besar fungsi ekspresi tidak memproses log secara langsung.

Struktur data tertentu

Not supported

Didukung

Fungsi pemrosesan global

Fungsi untuk menerima dan mengembalikan log.

Catatan

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

Aturan transformasi dalam SLS DSL menggunakan sintaks berikut:

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

Fungsi pemrosesan global terbagi menjadi dua kategori:

Kategori

Deskripsi

Contoh

Flow control functions

Fungsi ini mengelola alur proses, menerima log, dan secara kondisional memanggil fungsi lain untuk memproses log.

e_if, e_switch, dan e_if_else.

Event processing functions

Fungsi ini mentransformasi log dan mengembalikan nol hingga beberapa log.

Contoh:

  • e_drop_fields: membuang field log.

  • e_kv: mengekstraksi dan menambahkan pasangan kunci-nilai dari log.

  • e_dict_map: memperkaya log.

Logika transformasi:

  • Pemrosesan dasar

    Fitur transformasi data membaca data streaming dari Logstore sumber dan mengirimkan setiap log sebagai dictionary ke aturan transformasi. Sistem kemudian menjalankan fungsi yang ditentukan dalam aturan secara berurutan untuk memproses log dan menulis hasilnya ke Logstore tujuan.

    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 dengan nilai 200. Setelah diproses, log menjadi {"__time__": "1234567", "__topic__": "", "k1": "test", "f1": "200"}. Dalam log ini, baik field f1 maupun nilai 200 berupa string.

    Fungsi pemrosesan event yang ditentukan dalam aturan transformasi dipanggil secara berurutan. Setiap fungsi menerima satu log, memprosesnya, lalu mengembalikan log yang telah diproses.

    Misalnya, fungsi e_set("type", "test") menambahkan field type dengan nilai test ke log. Fungsi berikutnya menerima dan memproses log yang telah dimodifikasi tersebut.

  • Evaluasi kondisi

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

      Misalnya, fungsi e_if(e_match("status", "200"), e_regex("data", "ret: \d+", "result")) memeriksa apakah nilai field status adalah 200. Jika benar, fungsi mengekstraksi 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 operasi if_else.

  • Penghentian pemrosesan

    • Sebuah langkah dalam aturan transformasi mungkin tidak mengembalikan log apa pun, yang menunjukkan bahwa log tersebut telah dihapus.

      Misalnya, fungsi e_if(str_islower(v("result")), e_drop()) memeriksa apakah nilai field result berupa string huruf kecil. Jika benar, log dibuang dan langkah-langkah selanjutnya tidak dilakukan pada log ini. Sistem secara otomatis memproses log berikutnya.

    • Menulis log ke Logstore tujuan akan menghentikan pemrosesan. Misalnya, jika fungsi e_output menulis log ke Logstore tujuan dan menghapusnya, langkah-langkah selanjutnya tidak dilakukan pada log ini.

      Catatan

      Fungsi e_coutput menyalin log output dan melanjutkan pemrosesan langkah-langkah selanjutnya.

  • Pemisahan log untuk pemrosesan paralel

    Sebuah langkah dalam aturan transformasi mungkin mengembalikan beberapa log, yang menunjukkan bahwa log tersebut telah dipisah.

    Misalnya, fungsi e_split(data) memisahkan satu log menjadi dua log berdasarkan nilai field data. Jika nilai field data adalah "abc, xyz", log tersebut dipisah menjadi dua log. Pada satu log, nilai field data adalah abc. Pada log lainnya, nilainya adalah xyz.

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

Untuk informasi selengkapnya, lihat Global processing functions.

Fungsi ekspresi

Selain fungsi pemrosesan global, SLS DSL menyediakan 200 fungsi ekspresi yang menerima parameter tertentu dan mengembalikan nilai tertentu. Anda dapat memanggil fungsi ekspresi atau kombinasi fungsi ekspresi di dalam fungsi pemrosesan global. Sintaksnya sebagai berikut:

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

Fungsi ekspresi terbagi menjadi empat kategori:

Kategori

Deskripsi

Contoh

Event check functions

Fungsi ini menerima log, mengekstraksi atau mengambil informasi tertentu, dan mengembalikan informasi tersebut tanpa memodifikasi log.

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

Resource functions

Fungsi ini menghubungkan ke resource on-premises atau eksternal, menggunakan pengaturan parameter tertentu, dan mengembalikan data seperti dictionary atau tabel.

Fungsi resource OSS, RDS, dan Logstore.

Control functions

Fungsi ini melakukan operasi logika pada ekspresi. Fungsi ini menggunakan parameter tertentu, menerapkan kontrol kondisional, dan memanggil fungsi ekspresi lain untuk mengembalikan hasil.

op_and, op_or, op_not, op_if, dan op_coalesce.

Other expression functions

Fungsi ini menerima nilai tetap atau hasil pemanggilan fungsi lain dan mengembalikan nilai tertentu.

Fungsi string, tanggal dan waktu, serta konversi tipe.

Untuk informasi selengkapnya, lihat Expression functions.