すべてのプロダクト
Search
ドキュメントセンター

Simple Log Service:Scheduled SQL ジョブの更新

最終更新日:Nov 09, 2025

UpdateScheduledSQL 操作を呼び出して、Scheduled SQL ジョブを更新します。

説明

Scheduled SQL 用の Simple Log Service ソフトウェア開発キット (SDK) は更新されなくなりました。Alibaba Cloud SDK を使用して Scheduled SQL を管理してください。

image

前提条件

パラメーター

リクエストパラメーター

名前

タイプ

必須

説明

project

String

はい

プロジェクトの名前。

ali-test-project

scheduledSql

Object

はい

Scheduled SQL タスクの構成。

-

ScheduledSQL

次の表にパラメーターを説明します。

パラメーター

タイプ

必須

説明

name

String

はい

Scheduled SQL タスクの名前。名前は次のルールに従う必要があります:

  • 名前はプロジェクト内で一意である必要があります。

  • 名前には、小文字、数字、ハイフン (-)、アンダースコア (_) のみを含めることができます。

  • 名前は小文字または数字で開始および終了する必要があります。

  • 名前の長さは 4~63 文字である必要があります。

export-123-456

displayName

String

はい

Scheduled SQL タスクの表示名。Simple Log Service コンソールで、[タスク管理] > [Scheduled SQL] を選択して、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: Scheduled SQL タスクは固定間隔でスケジュールされます。間隔は interval パラメーターで指定します。

  • Hourly: Scheduled SQL タスクは 1 時間に 1 回スケジュールされます。

  • Daily: Scheduled SQL タスクは 1 日 1 回、固定時刻にスケジュールされます。

  • Cron: Scheduled SQL タスクは cron 式で指定された間隔でスケジュールされます。

FixedRate

interval

String

いいえ

typeFixedRate に設定されている場合の固定間隔を指定します。

  • 3s: 3 秒。

  • 5m: 5 分。

  • 2h: 2 時間。

50m

cronExpression

String

いいえ

typeCron に設定した場合は、cron 式を構成します。

cron 式は分単位で正確で、24 時間形式を使用します。たとえば、0 0/1 * * * は、タスクが 00:00 から 1 時間ごとに実行されることを示します。

タイムゾーンを構成するには、スケジューリングタイプを [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 ロールに付与する」をご参照ください。

acs:ram::11111111:role/aliyunlogetlrole

destRoleArn

String

はい

宛先 Logstore にデータを書き込むために使用される RAM ロールの ARN。ARN の取得方法の詳細については、次のトピックをご参照ください:

acs:ram::11111111:role/aliyunlogetlrole

sourceLogstore

String

はい

ソース Logstore の名前。

source-logstore

destEndpoint

String

はい

宛先 Logstore のエンドポイント。

説明
  • Alibaba Cloud サービス間の通信。たとえば、同じリージョン内の ECS インスタンスを使用して Simple Log Service にアクセスする場合は、プライベートエンドポイントを使用します。プライベートエンドポイントは http://cn-hangzhou-intranet.log.aliyuncs.com です。

  • インターネット経由での Simple Log Service へのアクセス。たとえば、オンプレミスマシンから API または SDK を使用してインターネット経由で Simple Log Service にアクセスする場合は、パブリックエンドポイントを使用します。パブリックエンドポイントは http://cn-hangzhou.log.aliyuncs.com です。

  • プライベートエンドポイントと比較して、パブリックエンドポイントはインターネット経由のアウトバウンドトラフィックに対して課金されます。詳細については、「Simple Log Service の課金項目」をご参照ください。

詳細については、「エンドポイント」をご参照ください。

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

destProject

String

はい

宛先プロジェクトの名前。

my-project

destLogstore

String

はい

宛先 Logstore の名前。

my-logstore

dataFormat

String

はい

書き込みモード。

  • log2log: Logstore から Logstore にデータをインポートします。つまり、ソース Logstore のデータは Scheduled SQL タスクによって処理され、宛先 Logstore に保存されます。

  • log2metric: Logstore から Metricstore にデータをインポートします。つまり、ソース Logstore のデータは Scheduled SQL タスクによって処理され、宛先 Metricstore に保存されます。

  • metric2metric: Metricstore から Metricstore にデータをインポートします。つまり、ソース Metricstore のデータは Scheduled SQL タスクによって処理され、宛先 Metricstore に保存されます。

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

はい

dataFormatlog2metric または metric2metric に設定した場合は、SQL パラメーターを構成します。設定項目の詳細については、「

Log2MetricParameters」および「Metric2MetricParameters」をご参照ください。

{
  addLabels: "{}",
  hashLabels: "[]",
  labelKeys: "[\"your label1\",\"your label2\"]",
  metricKeys: "[\"your Indicator1\",\"your Indicator2\"]",
  metricName: "",
  timeKey: ""
}

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_keyapp に、label_valueingress-nginx に設定します。

    timeKey

    time

    これは、コンソールの SQL 構成セクションの時間列パラメーターに対応します。

    • クエリ結果から時間列を選択した場合 (列の値は atime:1627025331 などの UNIX タイムスタンプ)、システムはこの列を時系列データの時間として使用します。

    • [Empty] を選択した場合、システムはクエリ時間範囲の開始時刻を時系列データの時間として使用します。

    Log2MetricParameters

  • 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_idalert_name、および status です。[ハッシュ列]status に設定すると、status フィールドの値が同じデータが同じシャードに書き込まれます。

    addLabels

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

    これは、コンソールの SQL 構成セクションの追加ラベルパラメーターに対応します。

    キーと値のペアで静的ラベルを追加して、メトリックのプロパティを識別します。

    たとえば、label_keyapp に、label_valueingress-nginx に設定します。

    Metric2MetricParameters

レスポンスパラメーター

レスポンスパラメーターの詳細については、「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();
        }
    }
} 

関連ドキュメント