全部产品
Search
文档中心

Simple Log Service:Buat Tugas SQL Terjadwal

更新时间:Nov 09, 2025

Gunakan operasi CreateScheduledSQL untuk membuat tugas SQL Terjadwal.

Catatan

Software development kit (SDK) Layanan Log Sederhana untuk Scheduled SQL tidak diperbarui lagi. Gunakan Alibaba Cloud SDK untuk mengelola Scheduled SQL.

image

Prasyarat

Informasi latar belakang

Simple Log Service menyediakan fitur Scheduled SQL untuk menganalisis data secara berkala, menyimpan data agregat, serta memproyeksikan dan menyaring data. Tugas Scheduled SQL mendukung sintaksis SQL-92 standar dan kueri analitik dari Simple Log Service. Tugas ini berjalan secara berkala berdasarkan aturan penjadwalan dan menulis hasilnya ke database tujuan, yang dapat berupa Logstore atau Metricstore.

Anda dapat membuat tugas Scheduled SQL di Konsol Simple Log Service. Untuk informasi lebih lanjut, lihat Buat Tugas Scheduled SQL.

Simple Log Service juga menyediakan kelas ScheduledSQL, JobSchedule, dan ScheduledSQLConfiguration untuk membuat tugas Scheduled SQL menggunakan Java SDK.

  • ScheduledSQL: Membuat tugas Scheduled SQL.

  • JobSchedule: Membuat tugas penjadwalan untuk tugas Scheduled SQL.

  • ScheduledSQLConfiguration: Membuat konfigurasi dasar untuk tugas Scheduled SQL.

Parameter

Parameter permintaan

Nama

Tipe

Wajib

Deskripsi

Contoh

project

String

Ya

Nama dari proyek.

ali-test-project

scheduledSql

Object

Ya

Konfigurasi dari tugas Scheduled SQL.

-

ScheduledSQL

Tabel berikut menjelaskan parameter tersebut.

Parameter

Tipe

Diperlukan

Deskripsi

Contoh

name

String

Ya

Nama dari Tugas SQL Terjadwal. Nama tersebut harus mengikuti aturan berikut:

  • Nama harus unik di dalam sebuah Proyek.

  • Nama hanya dapat berisi huruf kecil, angka, tanda hubung (-), dan garis bawah (_).

  • Nama harus dimulai dan diakhiri dengan huruf kecil atau angka.

  • Nama harus memiliki panjang 4 hingga 63 karakter.

export-123-456

displayName

String

Ya

Nama tampilan dari Tugas SQL Terjadwal. Di Konsol Layanan Log Sederhana, pilih Task Management > Scheduled SQL untuk melihat daftar nama tampilan untuk Tugas SQL Terjadwal.

my-scheduled-sql-job

description

String

Tidak

Deskripsi dari Tugas SQL Terjadwal.

ini adalah pekerjaan sql terjadwal.

configuration

Object

Ya

Konfigurasi dari Tugas SQL Terjadwal.

-

schedule

Object

Ya

Konfigurasi penjadwalan dari tugas ini.

-

JobSchedule

Gunakan JobSchedule jobSchedule = new JobSchedule(); untuk membuat tugas penjadwalan tugas Scheduled SQL. Tabel berikut menjelaskan parameter tersebut.

Parameter

Tipe

Diperlukan

Deskripsi

Contoh

type

String

Ya

Frekuensi penjadwalan Tugas SQL Terjadwal. Setiap kali tugas dijadwalkan, sebuah instans eksekusi akan dibuat. Interval penjadwalan menentukan waktu penjadwalan setiap instans eksekusi.

  • FixedRate: Tugas SQL Terjadwal dijadwalkan pada interval tetap. Interval ditentukan oleh parameter interval.

  • Hourly: Tugas SQL Terjadwal dijadwalkan sekali setiap jam.

  • Daily: Tugas SQL Terjadwal dijadwalkan sekali sehari pada waktu tetap.

  • Cron: Tugas SQL Terjadwal dijadwalkan pada interval yang ditentukan oleh ekspresi cron.

FixedRate

interval

String

Tidak

Menentukan interval tetap ketika type disetel ke FixedRate.

  • 3s: 3 detik.

  • 5m: 5 menit.

  • 2h: 2 jam.

50m

cronExpression

String

Tidak

Jika Anda menyetel type ke Cron, konfigurasikan ekspresi cron.

Ekspresi cron akurat hingga menit dan menggunakan sistem 24 jam. Sebagai contoh, 0 0/1 * * * menunjukkan bahwa tugas berjalan sekali setiap jam, dimulai dari 00:00.

Untuk mengonfigurasi zona waktu, Anda harus menyetel tipe penjadwalan ke Cron. Untuk daftar zona waktu umum, lihat Zona Waktu.

Tidak ada

runImmediately

boolean

Tidak

Menentukan apakah akan menjalankan tugas terjadwal secara langsung.

False

timeZone

String

Tidak

Zona waktu untuk ekspresi cron. Nilai defaultnya kosong, yang menunjukkan UTC+8.

+0800

delay

int

Tidak

Waktu untuk menunda eksekusi setelah waktu yang dijadwalkan. Satuan: detik. Nilai valid: 0 hingga 120.

Jika data ditulis ke Logstore dengan penundaan, Anda dapat mengonfigurasi eksekusi tertunda untuk memastikan integritas data.

10

ScheduledSQLConfiguration

Gunakan ScheduledSQLConfiguration scheduledSQLConfiguration = generateConfig(); untuk membuat konfigurasi Tugas Scheduled SQL. Tabel berikut menjelaskan parameter tersebut.

Parameter

Tipe

Diperlukan

Deskripsi

Contoh

script

String

Ya

Pernyataan kueri.

*|select count(1)

sqlType

String

Ya

Tipe SQL. Nilainya tetap sebagai searchQuery.

searchQuery

resourcePool

String

Ya

Jenis kolam sumber daya. Nilainya tetap sebagai enhanced. Simple Log Service menyediakan kolam sumber daya yang ditingkatkan untuk analitik data.

enhanced

roleArn

String

Ya

Nama Sumber Daya Alibaba Cloud (ARN) dari Peran RAM yang digunakan untuk membaca data dari Logstore sumber. Untuk informasi lebih lanjut tentang cara mendapatkan ARN, lihat Berikan izin kepada peran RAM kustom untuk menganalisis data di Logstore sumber.

acs:ram::11111111:role/aliyunlogetlrole

destRoleArn

String

Ya

ARN dari Peran RAM yang digunakan untuk menulis data ke Logstore tujuan. Untuk informasi lebih lanjut tentang cara mendapatkan ARN, lihat topik berikut:

acs:ram::11111111:role/aliyunlogetlrole

sourceLogstore

String

Ya

Nama Logstore sumber.

source-logstore

destEndpoint

String

Ya

Titik akhir Logstore tujuan.

Catatan
  • Komunikasi antara layanan Alibaba Cloud. Misalnya, jika Anda menggunakan Instance ECS di wilayah yang sama untuk mengakses Simple Log Service, gunakan titik akhir pribadi. Titik akhir pribadi adalah http://cn-hangzhou-intranet.log.aliyuncs.com.

  • Akses ke Simple Log Service melalui Internet. Misalnya, jika Anda menggunakan API atau SDK untuk mengakses Simple Log Service melalui Internet dari mesin lokal Anda, gunakan titik akhir publik. Titik akhir publik adalah http://cn-hangzhou.log.aliyuncs.com.

  • Dibandingkan dengan titik akhir pribadi, titik akhir publik memungut biaya untuk lalu lintas keluar melalui Internet. Untuk informasi lebih lanjut, lihat Item penagihan Layanan Log Sederhana.

Untuk informasi lebih lanjut, lihat Titik akhir.

http://cn-hangzhou-intranet.log.aliyuncs.com

destProject

String

Ya

Nama proyek tujuan.

my-project

destLogstore

String

Ya

Nama Logstore tujuan.

my-logstore

dataFormat

String

Ya

Mode penulisan.

  • log2log: Mengimpor data dari Logstore ke Logstore. Ini berarti bahwa data dari Logstore sumber diproses oleh tugas Scheduled SQL dan kemudian disimpan di Logstore tujuan.

  • log2metric: Mengimpor data dari Logstore ke Metricstore. Ini berarti bahwa data dari Logstore sumber diproses oleh tugas Scheduled SQL dan kemudian disimpan di Metricstore tujuan.

  • metric2metric: Mengimpor data dari Metricstore ke Metricstore. Ini berarti bahwa data dari Metricstore sumber diproses oleh tugas Scheduled SQL dan kemudian disimpan di Metricstore tujuan.

log2log

fromTimeExpr

String

Ya

Ekspresi untuk awal jendela waktu SQL. Untuk informasi lebih lanjut, lihat Sintaks ekspresi waktu.

@m - 12s

toTimeExpr

String

Ya

Ekspresi untuk akhir jendela waktu SQL. Untuk informasi lebih lanjut, lihat Sintaks ekspresi waktu.

@m

maxRetries

Long

Ya

Jumlah maksimum percobaan ulang jika analisis SQL gagal. Jika jumlah percobaan ulang melebihi nilai ini, instance eksekusi berhenti dan gagal.

10

maxRunTimeInSeconds

Long

Ya

Waktu maksimum untuk analisis SQL. Jika waktu eksekusi melebihi nilai ini, instance eksekusi berhenti dan gagal.

60

fromTime

Long

Ya

Waktu mulai penjadwalan.

Penting

Waktu penjadwalan suatu instance harus berada dalam rentang ini. Jika waktunya di luar rentang ini, tugas Scheduled SQL tidak akan lagi menghasilkan instance baru.

1.653.965.045

toTime

Long

Ya

Waktu berakhirnya penjadwalan. Nilai 0 menunjukkan bahwa penjadwalan tidak pernah berakhir.

1.653.968.045

parameters

Object

Ya

Jika Anda mengatur dataFormat ke log2metric atau metric2metric, konfigurasikan parameter SQL. Untuk informasi lebih lanjut tentang item konfigurasi, lihat

Log2MetricParameters dan Metric2MetricParameters.

{
  addLabels: "{}",
  hashLabels: "[]",
  labelKeys: "[\"label Anda1\",\"label Anda2\"]",
  metricKeys: "[\"Indikator Anda1\",\"Indikator Anda2\"]",
  metricName: "",
  timeKey: ""
}

Parameter

  • Saat Anda mengimpor data dari Logstore ke Metricstore menggunakan tugas SQL Terjadwal, Anda juga harus mengonfigurasi parameter berikut:

    Tabel 1. Log2MetricParameters

    Parameter

    Contoh

    Deskripsi

    metricKeys

    "[\"a\", \"b\", \"c\"]"

    Kolom metrik. Ini sesuai dengan parameter Kolom Metrik di bagian Konfigurasi SQL Konsol.

    Simple Log Service menggabungkan data berdasarkan pernyataan kueri Anda. Anda dapat memilih satu atau lebih kolom yang berisi nilai numerik dari hasil kueri sebagai kolom metrik. Untuk informasi lebih lanjut, lihat Data deret waktu.

    labelKeys

    "[\"d\", \"e\", \"f\"]"

    Kolom label. Ini sesuai dengan parameter Label di bagian Konfigurasi SQL Konsol.

    Simple Log Service menggabungkan data berdasarkan pernyataan kueri Anda. Anda dapat memilih satu atau lebih kolom dari hasil kueri sebagai data label. Untuk informasi lebih lanjut, lihat Data deret waktu.

    hashLabels

    "[\"d\", \"f\"]"

    Ini sesuai dengan parameter Rehash di bagian Konfigurasi SQL Konsol.

    Setelah Anda mengaktifkan Rehash, Anda dapat mengonfigurasi Hash Columns. Hal ini memungkinkan data dengan nilai kolom yang sama ditulis ke shard yang sama, yang meningkatkan lokasi data dan kinerja kueri.

    Nilai dari Hash Columns bergantung pada hasil kueri. Anda dapat memilih satu atau lebih kolom dari hasil kueri sebagai kolom hash. Sebagai contoh, jika Anda menetapkan Hash Columns ke status, data dengan nilai yang sama untuk bidang status akan ditulis ke shard yang sama.

    addLabels

    "[\"m\":\"h\", \"n\":\"i\"]"

    Ini sesuai dengan parameter Label Tambahan di bagian Konfigurasi SQL Konsol.

    Tambahkan label statis dalam pasangan kunci-nilai untuk mengidentifikasi properti dari metrik.

    Sebagai contoh, atur label_key ke app dan label_value ke ingress-nginx.

    timeKey

    time

    Ini sesuai dengan parameter Kolom Waktu di bagian Konfigurasi SQL Konsol.

    • Jika Anda memilih kolom waktu dari hasil kueri (nilai kolom adalah Stempel waktu UNIX, seperti atime:1627025331), sistem menggunakan kolom ini sebagai waktu untuk data deret waktu.

    • Jika Anda memilih Empty, sistem menggunakan waktu mulai rentang waktu kueri sebagai waktu untuk data deret waktu.

    Log2MetricParameters

  • Saat Anda mengimpor data dari Metricstore ke Metricstore menggunakan tugas SQL Terjadwal, Anda juga harus mengonfigurasi parameter berikut:

    Tabel 2. Metric2MetricParameters

    Parameter

    Contoh

    Deskripsi

    metricName

    my-metric

    Jika Anda ingin mengubah nama metrik yang sedang Anda analisis, Anda dapat memasukkan nama metrik baru. Untuk informasi lebih lanjut, lihat Data deret waktu.

    Penting

    Kami sarankan Anda hanya mengubah nama metrik saat Anda menganalisis metrik tunggal. Ini akan mengganti nama metrik tersebut.

    Jika Anda menganalisis beberapa metrik, mengubah nama metrik akan mengganti semua nama metrik menjadi nama baru yang sama.

    hashLabels

    "{\"m\":\"h\", \"n\":\"i\"}"

    Ini sesuai dengan parameter Rehash di bagian Konfigurasi SQL Konsol.

    Setelah Anda mengaktifkan Rehash, Anda dapat mengonfigurasi Hash Columns. Hal ini memungkinkan data dengan nilai label yang sama ditulis ke shard yang sama, yang meningkatkan lokasi data dan kinerja kueri.

    Nilai dari Hash Columns bergantung pada informasi label yang ada dari data deret waktu. Sebagai contoh, jika informasi label yang ada adalah {"alert_id":"alert-1608815762-545495","alert_name":"alert_closed","status":"inactive"}, nilai valid untuk Hash Columns adalah alert_id, alert_name, dan status. Jika Anda menetapkan Hash Columns ke status, data dengan nilai yang sama untuk bidang status akan ditulis ke shard yang sama.

    addLabels

    "{\"m\":\"h\", \"n\":\"i\"}"

    Ini sesuai dengan parameter Label Tambahan di bagian Konfigurasi SQL Konsol.

    Tambahkan label statis dalam pasangan kunci-nilai untuk mengidentifikasi properti dari metrik.

    Sebagai contoh, atur label_key ke app dan label_value ke ingress-nginx.

    Metric2MetricParameters

Parameter respons

Untuk informasi lebih lanjut tentang parameter respons, lihat CreateScheduledSQL.

Contoh

Contoh ini menunjukkan cara membuat file App.java yang menyimpan hasil analisis dari Logstore sumber ke Logstore tujuan.

import com.aliyun.openservices.log.Client;
import com.aliyun.openservices.log.common.*;
import com.aliyun.openservices.log.exception.LogException;
import com.aliyun.openservices.log.request.CreateScheduledSQLRequest;

public class App {
    // Dalam contoh ini, ID AccessKey dan Rahasia AccessKey diperoleh dari variabel lingkungan.
    static String accessId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
    static String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");

    // Atur nama Proyek dan Logstore.
    static String sourceProject="ali-test-project";
    static String destProject="my-project";
    static String sourceLogstore = "source-logstore";
    static String destLogstore = "my-logstore";
    static String roleArn = "acs:ram::11111111:role/aliyunlogetlrole";
    // Atur titik akhir untuk Simple Log Service. Contoh ini menggunakan titik akhir untuk Wilayah Hangzhou, Tiongkok. Gantilah dengan titik akhir Anda yang sebenarnya.
    static String endpoint = "http://cn-hangzhou.log.aliyuncs.com";
    static String destEndpoint = "http://cn-hangzhou-intranet.log.aliyuncs.com";
    static long fromTime = 1.648.105.200; // 15:00:00, 23 Maret 2022
    private static String script = "* | select a, b, c from log";

    private static ScheduledSQLBaseParameters generateParams(String dataFormat) {
        if (dataFormat.equalsIgnoreCase("log2log")) {
            return null;
        } else if (dataFormat.equalsIgnoreCase("log2metric")) {
            Log2MetricParameters params = new Log2MetricParameters();
            params.setMetricKeys("[\"a\", \"b\", \"c\"]");
            params.setLabelKeys("[\"d\", \"e\", \"f\"]");
            params.setHashLabels("[\"d\", \"f\"]");
            params.setAddLabels("{\"m\":\"h\", \"n\":\"i\"}");
            params.setTimeKey("time");
            return params;
        } else if (dataFormat.equalsIgnoreCase("metric2metric")) {
            Metric2MetricParameters params = new Metric2MetricParameters();
            params.setMetricName("name");
            params.setHashLabels("[\"d\", \"f\"]");
            params.setAddLabels("{\"m\":\"h\", \"n\":\"i\"}");
            return params;
        }
        return null;
    }

    private static ScheduledSQLConfiguration generateConfig() {
        ScheduledSQLConfiguration scheduledSQLConfiguration = new ScheduledSQLConfiguration();
        scheduledSQLConfiguration.setScript(script);
        scheduledSQLConfiguration.setSqlType("searchQuery");
        scheduledSQLConfiguration.setResourcePool("enhanced");
        scheduledSQLConfiguration.setRoleArn(roleArn);
        scheduledSQLConfiguration.setDestRoleArn(roleArn);
        scheduledSQLConfiguration.setSourceLogstore(sourceLogstore);
        scheduledSQLConfiguration.setDestEndpoint(destEndpoint);
        scheduledSQLConfiguration.setDestProject(destProject);
        scheduledSQLConfiguration.setDestLogstore(destLogstore);
        scheduledSQLConfiguration.setDataFormat("log2log");
        scheduledSQLConfiguration.setFromTimeExpr("@m-1m");
        scheduledSQLConfiguration.setToTimeExpr("@m");
        scheduledSQLConfiguration.setMaxRetries(20);
        scheduledSQLConfiguration.setMaxRunTimeInSeconds(600);
        scheduledSQLConfiguration.setFromTime(fromTime);
        scheduledSQLConfiguration.setToTime(0L);

        ScheduledSQLBaseParameters params = generateParams(scheduledSQLConfiguration.getDataFormat());
        scheduledSQLConfiguration.setParameters(params);

        return scheduledSQLConfiguration;
    }

    private static ScheduledSQL generateScheduledSQL() {
        ScheduledSQL scheduledSQLStructure = new ScheduledSQL();
        scheduledSQLStructure.setName("export-123-456");
        scheduledSQLStructure.setDisplayName("my-scheduled-sql-job");
        scheduledSQLStructure.setDescription("Ini adalah pekerjaan SQL terjadwal.");
        ScheduledSQLConfiguration scheduledSQLConfiguration = generateConfig();
        scheduledSQLStructure.setConfiguration(scheduledSQLConfiguration);
        JobSchedule jobSchedule = new JobSchedule();
        jobSchedule.setType(JobScheduleType.FIXED_RATE);
        jobSchedule.setInterval("1m");
        jobSchedule.setDelay(10);
        jobSchedule.setRunImmediately(false);
        scheduledSQLStructure.setSchedule(jobSchedule);
        return scheduledSQLStructure;
    }

    public static void main(String[] args) {
        Client client = new Client(endpoint, accessId, accessKey);
        ScheduledSQL scheduledSQL = generateScheduledSQL();
        CreateScheduledSQLRequest request = new CreateScheduledSQLRequest(sourceProject, scheduledSQL);
        try {
            client.createScheduledSQL(request);
        } catch (LogException e) {
            e.printStackTrace();
        }
    }
} 

Referensi