All Products
Search
Document Center

Simple Log Service:Error aturan transformasi data

Last Updated:Jun 21, 2026

Topik ini menjelaskan penyebab dan solusi untuk error aturan transformasi data.

Setelah data dibaca dari Logstore sumber, mesin transformasi data mentransformasikan event log.加工规则错误

  • Error pada tahap ini umumnya merupakan error logika yang muncul ketika event log tidak sesuai dengan aturan transformasi data.

  • Jika aturan transformasi melibatkan resource eksternal seperti ApsaraDB RDS atau Logstore lainnya, error pemuatan atau refresh resource juga dapat terjadi.

Topik ini berfokus pada troubleshooting error logika. Untuk informasi tentang troubleshooting error pemuatan resource, lihat Error pemuatan resource.

Dampak error

Bidang logging.levelname dalam log error menentukan tingkat error: WARNING atau ERROR.

  • Untuk error tingkat ERROR, event log yang terpengaruh akan dibuang. Output transformasi tidak menyertakan event tersebut, dan pemrosesan dilanjutkan ke event log berikutnya tanpa percobaan ulang.

  • Untuk error tingkat WARNING, seperti ketidaksesuaian regex, langkah DSL saat ini dilewati untuk event tersebut, dan pemrosesan dilanjutkan ke langkah berikutnya.

Troubleshooting

  • Periksa bidang logging.levelname dalam log error untuk menentukan tingkat error.

  • Periksa bidang message dalam log error untuk mengidentifikasi event log yang menyebabkan error. Untuk informasi lebih lanjut, lihat Lihat log error.

  • Periksa bidang reason dalam log error untuk mengetahui penyebab error pada event log tersebut.

Berdasarkan penyebabnya, tambahkan logika ke skrip transformasi Anda untuk menangani exception ini. Anda dapat menggunakan fungsi kontrol proses, seperti e_if dan e_switch, untuk menangkap dan mengelola error tersebut. Berikut adalah contoh log error: Bidang message berisi detail event log yang gagal, dan bidang reason menunjukkan penyebab error, yaitu integer division or modulo by zero:

07-26 16:21:48
    __source__:
    __tag__:__job_name__: etl-preview-1564110081-604324
    __tag__:__schedule_type__: DryRun
    __topic__: __etl-log-status__
    etl_context: {
      "project": "ali-licheng-test-uk2",
      "logstore": "source_logstore",
      "shard_id": "2"}
    event_id: transorm_data:process:fail
    extra_info_params: {"src_event": {"__time__": "1563266137", "__topic__": "", "__source__": xxx, "__tag__:__client_ip__": xxx,
    "__tag__:__receive_time__": "1563774221", "body_bytes_sent": "740", "client_ip": "1.2.3.4", "host": "m.abcd.com", "status": "403"}}
    logging: {"process": "34", "levelname": "ERROR", "funcName": "_transform_events_to_logstore", "module": "logclient_operator", "threadName": "MainThread",
    "thread": "139890150307648", "processName": "ForkProcess-1"}
    message: [ali-licheng-test-uk2/source_logstore/2]transform_data: fail to process event: {"__time__": "1563266137", "__topic__": "", "__source__": xxx,
    "__tag__:__client_ip__": xxx, "__tag__:__receive_time__": "1563774221", "body_bytes_sent": "740", "client_ip": "1.2.3.4", "host": "m.abcd.com", "status": "403"},
    detail=integer division or modulo by zero
    reason: integer division or modulo by zero

Skenario error umum

Nilai abnormal dalam event log

Pembagian dengan nol

# Terjadi error pembagian dengan nol karena nilai bidang 'b' pada beberapa event log adalah 0.
e_set("c", op_div_floor(v("a"), v("b")))
  • Log error:

    {
      "reason": "error when calling : floordiv\nDetail: integer division or modulo by zero", 
    }
  • Troubleshooting:

    Periksa event log yang gagal untuk memastikan apakah nilai bidang b adalah 0. Jika ya, penyebabnya adalah pembagian dengan nol.

  • Solusi:

    Error hanya terjadi ketika nilai bidang b dalam suatu event log adalah 0. Untuk memperbaikinya, tambahkan logika e_if untuk menangani kasus di mana nilai bidang b adalah 0.

    e_if_else(op_eq(v("b"), "0"), e_set("c", v("a")), e_set("c", op_div_floor(v("a"), v("b")))

Format timestamp tidak valid

# Terjadi error karena nilai bidang 'a' pada beberapa event log bukan format timestamp yang valid.
e_set("b", dt_fromtimestamp(v("a")))
  • Log error:

    {
      "reason": "error when calling : int\nDetail: invalid literal for int() with base 10: 'invalid_value'", 
    }
  • Troubleshooting:

    Periksa event log yang gagal untuk memverifikasi bahwa nilai bidang a adalah string numerik, yang merupakan format yang diperlukan untuk timestamp yang valid.

  • Solusi:

    Tambahkan logika kondisional. Jika nilai bidang a bukan format timestamp yang valid, arahkan event log tersebut ke target2.

    e_if_else(str_isdigit(v("a"))), e_set("b", dt_fromtimestamp(v("a"))), e_output("target2"))

Konversi tipe data yang tidak dilakukan

Contoh aturan transformasi:

e_set("a", 10)
e_set("b", 10)
e_set("c", op_mul(v("a"), v("b")))
  • Log error:

    {
      "reason": "error when calling : mul\nDetail: can't mulltiply sequence by non-int of type' str'", 
    }
  • Penyebab:

    Selama pemrosesan DSL, nilai semua bidang dalam event log disimpan sebagai string. Pada contoh aturan sebelumnya, v("a") dan v("b") keduanya berupa string. Mengoperkannya langsung ke op_mul menyebabkan error.

  • Troubleshooting:

    Periksa aturan DSL Anda untuk memastikan konversi tipe data telah dilakukan sebelum perhitungan numerik.

  • Solusi:

    Gunakan fungsi ct_int untuk mengonversi string menjadi integer, lalu oper hasilnya ke fungsi op_mul.

    e_set("a", 10)
    e_set("b", 10)
    e_set("c", op_mul(c_int(v("a")), c_int(v("b"))))