UpdateScheduledSQL 操作を呼び出して、Scheduled SQL ジョブを更新します。
Scheduled SQL 用の Simple Log Service ソフトウェア開発キット (SDK) は更新されなくなりました。Alibaba Cloud SDK を使用して Scheduled SQL を管理してください。

前提条件
Simple Log Service が有効化されていること。詳細については、「Simple Log Service の有効化」をご参照ください。
Java 用 Simple Log Service SDK が初期化されていること。詳細については、「Java 用 Simple Log Service SDK の初期化」をご参照ください。
パラメーター
リクエストパラメーター
名前 | タイプ | 必須 | 説明 | 例 |
project | String | はい | プロジェクトの名前。 | ali-test-project |
scheduledSql | Object | はい | Scheduled SQL タスクの構成。 | - |
ScheduledSQL
次の表にパラメーターを説明します。
パラメーター | タイプ | 必須 | 説明 | 例 |
name | String | はい | Scheduled SQL タスクの名前。名前は次のルールに従う必要があります:
| export-123-456 |
displayName | String | はい | Scheduled SQL タスクの表示名。Simple Log Service コンソールで、 を選択して、Scheduled SQL タスクの表示名のリストを表示します。 | my-scheduled-sql-job |
description | String | いいえ | Scheduled SQL タスクの説明。 | this is a scheduled sql job. |
configuration | Object | はい | Scheduled SQL タスクの構成。 | - |
schedule | Object | はい | タスクのスケジューリング構成。 | - |
JobSchedule
JobSchedule jobSchedule = new JobSchedule(); を使用して、Scheduled SQL タスクのスケジューリングタスクを作成します。次の表にパラメーターを説明します。
パラメーター | タイプ | 必須 | 説明 | 例 |
type | String | はい | Scheduled SQL タスクがスケジュールされる頻度。タスクがスケジュールされるたびに、実行インスタンスが生成されます。スケジューリング間隔によって、各実行インスタンスのスケジューリング時間が決まります。
| FixedRate |
interval | String | いいえ | type が FixedRate に設定されている場合の固定間隔を指定します。
| 50m |
cronExpression | String | いいえ | type を Cron に設定した場合は、cron 式を構成します。 cron 式は分単位で正確で、24 時間形式を使用します。たとえば、 タイムゾーンを構成するには、スケジューリングタイプを [Cron] に設定する必要があります。一般的なタイムゾーンのリストについては、「タイムゾーン」をご参照ください。 | なし |
runImmediately | boolean | いいえ | スケジュールされたタスクをすぐに実行するかどうかを指定します。 | False |
timeZone | String | いいえ | cron 式のタイムゾーン。デフォルト値は空で、UTC + 08:00 を示します。 | +0800 |
delay | int | いいえ | スケジュールされた時刻後の実行を遅延させる時間。単位: 秒。有効値: 0~120。 データが遅延して Logstore に書き込まれる場合、データ整合性を確保するために遅延実行を構成できます。 | 10 |
ScheduledSQLConfiguration
ScheduledSQLConfiguration scheduledSQLConfiguration = generateConfig(); を使用して、Scheduled SQL タスクの構成を作成します。次の表にパラメーターを説明します。
パラメーター | タイプ | 必須 | 説明 | 例 |
script | String | はい | クエリ文。 | *|select count(1) |
sqlType | String | はい | SQL タイプ。値は searchQuery に固定されています。 | searchQuery |
resourcePool | String | はい | リソースプールのタイプ。値は enhanced に固定されています。Simple Log Service は、データ分析用に拡張リソースプールを提供します。 | enhanced |
roleArn | String | はい | ソース Logstore からデータを読み取るために使用される RAM ロールの Alibaba Cloud リソースネーム (ARN)。ARN の取得方法の詳細については、「ソース Logstore のデータを分析する権限をカスタム RAM ロールに付与する」をご参照ください。 |
|
destRoleArn | String | はい | 宛先 Logstore にデータを書き込むために使用される RAM ロールの ARN。ARN の取得方法の詳細については、次のトピックをご参照ください:
|
|
sourceLogstore | String | はい | ソース Logstore の名前。 | source-logstore |
destEndpoint | String | はい | 宛先 Logstore のエンドポイント。 説明
詳細については、「エンドポイント」をご参照ください。 |
|
destProject | String | はい | 宛先プロジェクトの名前。 | my-project |
destLogstore | String | はい | 宛先 Logstore の名前。 | my-logstore |
dataFormat | String | はい | 書き込みモード。
| log2log |
fromTimeExpr | String | はい | SQL タイムウィンドウの開始の式。詳細については、「時間式の構文」をご参照ください。 | @m - 12s |
toTimeExpr | String | はい | SQL タイムウィンドウの終了の式。詳細については、「時間式の構文」をご参照ください。 | @m |
maxRetries | Long | はい | SQL 分析が失敗した場合の最大再試行回数。再試行回数がこの値を超えると、実行インスタンスは停止して失敗します。 | 10 |
maxRunTimeInSeconds | Long | はい | SQL 分析の最大実行時間。実行時間がこの値を超えると、実行インスタンスは停止して失敗します。 | 60 |
fromTime | Long | はい | スケジューリングが開始される時間。 重要 インスタンスのスケジューリング時間は、この範囲内である必要があります。時間がこの範囲外の場合、Scheduled SQL タスクは新しいインスタンスを生成しなくなります。 | 1653965045 |
toTime | Long | はい | スケジューリングが終了する時間。値 0 は、スケジューリングが終了しないことを示します。 | 1653968045 |
parameters | Object | はい | dataFormat を log2metric または metric2metric に設定した場合は、SQL パラメーターを構成します。設定項目の詳細については、「 Log2MetricParameters」および「Metric2MetricParameters」をご参照ください。 | |
parameters
Scheduled SQL タスクを使用して Logstore から Metricstore にデータをインポートする場合は、次のパラメーターも構成する必要があります:
表 1. Log2MetricParameters
パラメーター
例
説明
metricKeys
"[\"a\", \"b\", \"c\"]"メトリック列。これは、コンソールの SQL 構成セクションのメトリック列パラメーターに対応します。
Simple Log Service は、クエリ文に基づいてデータを集計します。クエリ結果から数値を含む 1 つ以上の列を選択して、メトリック列として使用できます。詳細については、「時系列データ」をご参照ください。
labelKeys
"[\"d\", \"e\", \"f\"]"ラベル列。これは、コンソールの SQL 構成セクションのラベルパラメーターに対応します。
Simple Log Service は、クエリ文に基づいてデータを集計します。クエリ結果から 1 つ以上の列を選択して、ラベルデータとして使用できます。詳細については、「時系列データ」をご参照ください。
hashLabels
"[\"d\", \"f\"]"これは、コンソールの SQL 構成セクションの再ハッシュパラメーターに対応します。
[再ハッシュ] を有効にすると、[ハッシュ列] を構成できます。これにより、同じ列値を持つデータが同じシャードに書き込まれ、データの局所性とクエリパフォーマンスが向上します。
[ハッシュ列] の値は、クエリ結果によって異なります。クエリ結果から 1 つ以上の列を選択して、ハッシュ列として使用できます。たとえば、[ハッシュ列] を status に設定すると、status フィールドの値が同じデータが同じシャードに書き込まれます。
addLabels
"[\"m\":\"h\", \"n\":\"i\"]"これは、コンソールの SQL 構成セクションの追加ラベルパラメーターに対応します。
キーと値のペアで静的ラベルを追加して、メトリックのプロパティを識別します。
たとえば、label_key を app に、label_value を ingress-nginx に設定します。
timeKey
time
これは、コンソールの SQL 構成セクションの時間列パラメーターに対応します。
クエリ結果から時間列を選択した場合 (列の値は
atime:1627025331などの UNIX タイムスタンプ)、システムはこの列を時系列データの時間として使用します。[Empty] を選択した場合、システムはクエリ時間範囲の開始時刻を時系列データの時間として使用します。

Scheduled SQL タスクを使用して Metricstore から Metricstore にデータをインポートする場合は、次のパラメーターも構成する必要があります:
表 2. Metric2MetricParameters
パラメーター
例
説明
metricName
my-metric
分析しているメトリックの名前を変更する場合は、新しいメトリック名を入力できます。詳細については、「時系列データ」をご参照ください。
重要単一のメトリックを分析している場合にのみメトリック名を変更することをお勧めします。これにより、メトリックの名前が変更されます。
複数のメトリックを分析している場合、メトリック名を変更すると、すべてのメトリックが同じ新しい名前に変更されます。
hashLabels
"{\"m\":\"h\", \"n\":\"i\"}"これは、コンソールの SQL 構成セクションの再ハッシュパラメーターに対応します。
[再ハッシュ] を有効にすると、[ハッシュ列] を構成できます。これにより、同じラベル値を持つデータが同じシャードに書き込まれ、データの局所性とクエリパフォーマンスが向上します。
[ハッシュ列] の値は、時系列データの既存のラベル情報によって異なります。たとえば、既存のラベル情報が
{"alert_id":"alert-1608815762-545495","alert_name":"alert_closed","status":"inactive"}の場合、[ハッシュ列] の有効な値は alert_id、alert_name、および status です。[ハッシュ列] を status に設定すると、status フィールドの値が同じデータが同じシャードに書き込まれます。addLabels
"{\"m\":\"h\", \"n\":\"i\"}"これは、コンソールの SQL 構成セクションの追加ラベルパラメーターに対応します。
キーと値のペアで静的ラベルを追加して、メトリックのプロパティを識別します。
たとえば、label_key を app に、label_value を ingress-nginx に設定します。

レスポンスパラメーター
レスポンスパラメーターの詳細については、「CreateScheduledSQL」をご参照ください。
例
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.UpdateScheduledSQLRequest;
public class App {
// 環境変数を設定します。この例では、AccessKey ID と AccessKey Secret は環境変数から取得されます。
static String accessId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
static String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
// プロジェクト名と Logstore 名を指定します。
static String sourceProject="aliyun-test-sourceProject";
static String destProject="aliyun-test-destProject";
static String sourceLogstore = "logstore-name";
static String destLogstore = "project-name";
static String roleArn = "acs:ram::11111111:role/aliyunlogetlrole";
// Simple Log Service エンドポイント。この例では、中国 (杭州) リージョンの Simple Log Service エンドポイントが使用されます。パラメーター値を実際のエンドポイントに置き換えてください。
static String endpoint = "http://cn-hangzhou.log.aliyuncs.com";
static String destEndpoint = "http://cn-hangzhou-intranet.log.aliyuncs.com";
static long fromTime = 1648105200; //2022-03-23 15:00:00
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("job-name");
scheduledSQLStructure.setDisplayName("display-name");
scheduledSQLStructure.setDescription("desc-name");
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();
UpdateScheduledSQLRequest request = new UpdateScheduledSQLRequest(sourceProject, scheduledSQL);
try {
client.updateScheduledSQL(request);
} catch (LogException e) {
e.printStackTrace();
}
}
} 関連ドキュメント
Scheduled SQL ジョブを管理するために呼び出すことができる操作の詳細については、次のトピックをご参照ください:
その他のサンプルコードについては、GitHub の「Alibaba Cloud Simple Log Service SDK for Java」をご参照ください。