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

Prasyarat
Simple Log Service telah diaktifkan. Untuk informasi lebih lanjut, lihat Activate Simple Log Service.
Simple Log Service SDK for Java telah diinisialisasi. Untuk informasi lebih lanjut, lihat Initialize Simple Log Service SDK for Java.
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:
| export-123-456 |
displayName | String | Ya | Nama tampilan dari Tugas SQL Terjadwal. Di Konsol Layanan Log Sederhana, pilih 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 |
interval | String | Tidak | Menentukan interval tetap ketika type disetel ke FixedRate.
| 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, 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. |
|
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:
|
|
sourceLogstore | String | Ya | Nama Logstore sumber. | source-logstore |
destEndpoint | String | Ya | Titik akhir Logstore tujuan. Catatan
Untuk informasi lebih lanjut, lihat Titik akhir. |
|
destProject | String | Ya | Nama proyek tujuan. | my-project |
destLogstore | String | Ya | Nama Logstore tujuan. | my-logstore |
dataFormat | String | Ya | Mode penulisan.
| 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 | |
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.

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.
PentingKami 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.

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
Untuk informasi lebih lanjut tentang operasi API yang dapat Anda panggil untuk mengelola tugas SQL Terjadwal, lihat topik-topik berikut:
Untuk lebih banyak contoh kode, lihat Alibaba Cloud Simple Log Service SDK for Java di GitHub.