Todos os produtos
Search
Central de documentação

Simple Log Service:Criar uma tarefa de SQL agendada

Última atualização: Jul 03, 2026

Chame a API CreateScheduledSQL para criar uma tarefa de SQL agendada.

Nota

O SDK do Simple Log Service não recebe mais atualizações de APIs relacionadas à SQL agendada. Use o Alibaba Cloud SDK para gerenciar tarefas de SQL agendada:

Na página de depuração da API CreateScheduledSQL no Alibaba Cloud OpenAPI Explorer, clique na aba SDK Example no painel à direita. Selecione a linguagem desejada (Java, TypeScript, Go, PHP, Python, .NET, C++, etc.) para visualizar o código de exemplo do SDK correspondente. Clique em Run Example para depuração online ou em Download Full Project.

Pré-requisitos

Informações gerais

O Simple Log Service oferece o recurso de SQL agendada para analisar dados periodicamente, armazenar dados agregados e executar projeções e filtragens. A SQL agendada suporta a sintaxe padrão SQL92 e a sintaxe de consulta e análise do Simple Log Service. Ela é executada periodicamente com base em regras de agendamento e grava os resultados em um banco de dados de destino (Logstore ou Metricstore).

O console do Simple Log Service disponibiliza uma interface visual para criar tarefas de SQL agendada. Para mais detalhes, consulte Criar uma tarefa de SQL agendada.

Além disso, o Simple Log Service fornece as classes ScheduledSQL, JobSchedule e ScheduledSQLConfiguration para simplificar a criação de tarefas de SQL agendada por meio do SDK para Java.

  • ScheduledSQL: Cria a tarefa de SQL agendada.

  • JobSchedule: Define a configuração de agendamento da tarefa.

  • ScheduledSQLConfiguration: Estabelece a configuração básica da tarefa de SQL agendada.

Descrição dos parâmetros

Parâmetros da solicitação

Nome

Tipo

Obrigatório

Descrição

Exemplo

project

String

Sim

Nome do projeto.

ali-test-project

scheduledSql

Object

Sim

Configuração da tarefa de SQL agendada.

-

ScheduledSQL

A tabela a seguir descreve os parâmetros.

Nome do parâmetro

Tipo

Obrigatório

Descrição

Exemplo

name

String

Sim

Nome da tarefa de SQL agendada. Siga estas regras de nomenclatura:

  • Deve ser único dentro do mesmo projeto.

  • Pode conter apenas letras minúsculas, dígitos, hifens (-) e sublinhados (_).

  • Deve começar e terminar com uma letra minúscula ou dígito.

  • Deve ter entre 4 e 63 caracteres.

export-123-456

displayName

String

Sim

Nome de exibição da tarefa de SQL agendada. No console do Simple Log Service, escolha Task Management > Scheduled SQL para visualizar a lista de nomes de exibição.

my-scheduled-sql-job

description

String

Não

Descrição da tarefa de SQL agendada.

this is a scheduled sql job.

configuration

Object

Sim

Configuração da SQL agendada.

-

schedule

Object

Sim

Configuração de agendamento da tarefa.

-

JobSchedule

Execute JobSchedule jobSchedule = new JobSchedule(); para criar a configuração de agendamento da tarefa de SQL agendada. A tabela abaixo detalha os parâmetros.

Nome do parâmetro

Tipo

Obrigatório

Descrição

Exemplo

type

String

Sim

Frequência de execução da tarefa de SQL agendada. Cada agendamento gera uma instância de execução. O intervalo define o horário agendado para cada instância.

  • FixedRate: Executa a tarefa em intervalos fixos, definidos pelo parâmetro interval.

  • Hourly: Agenda a tarefa uma vez a cada hora.

  • Daily: Executa a tarefa diariamente em um horário fixo.

  • Cron: Usa uma expressão cron para definir o agendamento.

FixedRate

interval

String

Não

Define o intervalo fixo quando o type é FixedRate.

  • 3s: 3 segundos.

  • 5m: 5 minutos.

  • 2h: 2 horas.

50m

cronExpression

String

Não

Especifica a expressão cron quando o type é Cron.

A precisão mínima de uma expressão cron é de um minuto, no formato de 24 horas. Por exemplo, 0 0/1 * executa a tarefa a cada hora, começando às 00:00.

Para configurar um fuso horário, selecione o modo Cron. Para obter uma lista de fusos horários comuns, consulte Formato de fuso horário.

N/A

runImmediately

boolean

Não

Define se a tarefa agendada deve ser executada imediatamente.

False

timeZone

String

Não

Fuso horário da expressão cron. O valor padrão é vazio, o que corresponde a UTC+8.

+0800

delay

int

Não

Atraso após o horário agendado antes do início da execução. Valores válidos: 0 a 120. Unidade: segundos.

Se os dados gravados em um Logstore sofrerem atrasos ou problemas semelhantes, use a execução com atraso para garantir a integridade dos dados.

10

ScheduledSQLConfiguration

Execute ScheduledSQLConfiguration scheduledSQLConfiguration = generateConfig(); para definir a configuração da tarefa de SQL agendada. A tabela a seguir descreve os parâmetros.

Nome do parâmetro

Tipo

Obrigatório

Descrição

Exemplo

script

String

Sim

Instrução de consulta e análise.

*|select count(1)

sqlType

String

Sim

Tipo de SQL. Defina como searchQuery.

searchQuery

resourcePool

String

Sim

Tipo de pool de recursos. Defina como enhanced. O Simple Log Service oferece pools de recursos aprimorados para análise de dados.

enhanced

roleArn

String

Sim

ARN da função do RAM usada para ler dados do Logstore de origem. Para obter instruções sobre como adquirir um ARN, consulte Conceder permissões a uma função personalizada do RAM para acessar o LogStore de origem.

acs:ram::11111111:role/aliyunlogetlrole

destRoleArn

String

Sim

ARN da função do RAM usada para gravar dados no Logstore de destino. Para saber como obter um ARN, consulte os itens a seguir:

acs:ram::11111111:role/aliyunlogetlrole

sourceLogstore

String

Sim

Nome do Logstore de origem.

source-logstore

destEndpoint

String

Sim

Endpoint do Logstore de destino.

Nota
  • Para comunicação interna entre serviços da Alibaba Cloud — por exemplo, instâncias ECS na mesma região acessando o Simple Log Service — use um endpoint privado, como http://cn-hangzhou-intranet.log.aliyuncs.com.

  • Para acesso via Internet pública — como o uso de APIs ou SDKs a partir da sua máquina local — use um endpoint público, como http://cn-hangzhou.log.aliyuncs.com.

  • O uso de um endpoint público gera cobranças adicionais de tráfego de saída em comparação ao endpoint privado. Para mais informações, consulte Itens de faturamento do Simple Log Service.

Para mais detalhes, consulte Endpoints.

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

destProject

String

Sim

Nome do projeto de destino.

my-project

destLogstore

String

Sim

Nome do Logstore de destino.

Aviso

Não defina o banco de dados de destino como sendo o mesmo da origem. Essa configuração pode causar a gravação de logs em loop, resultando em custos extras de armazenamento e tráfego. Você é responsável por qualquer consumo de recursos e taxas decorrentes.

my-logstore

dataFormat

String

Sim

Modo de gravação.

  • log2log: Importa logs de um Logstore para outro. Os dados do Logstore de origem são processados pela SQL agendada e armazenados no Logstore de destino.

  • log2metric: Importa logs de um Logstore para um Metricstore. Os dados do Logstore de origem passam pela SQL agendada e são salvos no Metricstore de destino.

  • metric2metric: Transfere métricas de um Metricstore para outro. As informações do Metricstore de origem são processadas via SQL agendada e gravadas no Metricstore de destino.

log2log

fromTimeExpr

String

Sim

Expressão inicial da janela de tempo da SQL. Para mais informações, consulte Sintaxe de expressão de tempo.

@m - 12s

toTimeExpr

String

Sim

Expressão final da janela de tempo da SQL. Para mais detalhes, consulte Sintaxe de expressão de tempo.

@m

maxRetries

Long

Sim

Número máximo de tentativas automáticas caso a operação de análise SQL falhe. Se o número de tentativas exceder esse valor, a instância de execução terminará com status de falha.

10

maxRunTimeInSeconds

Long

Sim

Duração total máxima das novas tentativas, em segundos, caso a análise SQL falhe. Se o tempo de tentativa ultrapassar esse limite, a instância de execução será encerrada com falha.

60

fromTime

Long

Sim

Horário de início do agendamento.

Importante

As instâncias de execução são criadas apenas dentro deste intervalo de tempo. Nenhuma nova instância será gerada fora desse período.

1653965045

toTime

Long

Sim

Horário de término do agendamento. Defina como 0 para não haver limite de tempo final.

1653968045

parameters

Object

Sim

Quando o dataFormat for log2metric ou metric2metric, configure os parâmetros da SQL. Para detalhes, consulte Log2MetricParameters e Metric2MetricParameters.

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

parameters

  • Ao configurar uma tarefa de SQL agendada de um Logstore para um Metricstore, também é necessário definir os seguintes parâmetros adicionais:

    Tabela 1. Log2MetricParameters

    Nome do parâmetro

    Exemplo

    Descrição

    metricKeys

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

    Colunas de métrica, correspondentes às colunas de métrica na configuração de SQL do console.

    O Simple Log Service agrega dados com base na sua instrução de consulta e análise. É possível selecionar uma ou mais colunas do tipo numérico nos resultados da consulta como colunas de métrica. Para mais informações, consulte Métricas.

    labelKeys

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

    Colunas de rótulo, correspondentes aos Rótulos (Labels) na configuração de SQL do console.

    O Simple Log Service agrega dados conforme sua instrução de consulta e análise. Você pode escolher uma ou mais colunas dos resultados da consulta para atuar como rótulos. Para mais detalhes, consulte Métricas.

    hashLabels

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

    Corresponde à opção Rehash na configuração de SQL do console.

    Após ativar a chave Rehash, configure as colunas de hash para gravar dados com o mesmo valor de coluna em um único shard. Isso melhora a localidade dos dados e a eficiência das consultas.

    As colunas de hash disponíveis dependem dos resultados da sua consulta e análise. Selecione uma ou mais colunas dos resultados para usar como colunas de hash. Por exemplo, se você definir as colunas de hash como status, todos os dados com o mesmo valor de status serão gravados no mesmo shard.

    addLabels

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

    Corresponde aos Rótulos Adicionais (Additional Labels) na configuração de SQL do console.

    Adicione rótulos estáticos como pares chave-valor para identificar atributos da métrica.

    Por exemplo, defina label_key como app e label_value como ingress-nginx.

    timeKey

    time

    Corresponde à Coluna de Tempo (Time Column) na configuração de SQL do console.

    • Se você selecionar uma coluna de tempo nos resultados da consulta (com valores de timestamp Unix, como atime:1627025331), o sistema usará essa coluna como timestamp da métrica.

    • Caso selecione empty, o sistema utilizará o horário inicial do intervalo de consulta como timestamp da métrica.

  • Para configurar uma tarefa de SQL agendada de um Metricstore para outro Metricstore, defina também os parâmetros adicionais listados abaixo:

    Tabela 2. Metric2MetricParameters

    Nome do parâmetro

    Exemplo

    Descrição

    metricName

    my-metric

    Insira um novo nome de métrica caso deseje renomeá-la. Para mais informações, consulte Métricas.

    Importante

    Recomendamos renomear apenas ao analisar uma única métrica.

    Se você analisar múltiplas métricas e renomeá-las, todas compartilharão o mesmo novo nome.

    hashLabels

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

    Corresponde à opção Rehash na configuração de SQL do console.

    Ao ativar a chave Rehash, configure as colunas de hash para gravar dados com o mesmo valor de rótulo em um único shard. Essa prática aumenta a localidade dos dados e otimiza a eficiência das consultas.

    As colunas de hash disponíveis dependem dos rótulos existentes nos dados da métrica. Por exemplo, se os dados da métrica incluírem os rótulos {"alert_id":"alert-1608815762-545495","alert_name":"Alert recovery closed","status":"inactive"}, as colunas de hash válidas são alert_id, alert_name e status. Caso defina as colunas de hash como status, todos os dados com o mesmo valor de status serão direcionados ao mesmo shard.

    addLabels

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

    Corresponde aos Rótulos Adicionais (Additional Labels) na configuração de SQL do console.

    Adicione rótulos estáticos como pares chave-valor para identificar atributos da métrica.

    Por exemplo, defina label_key como app e label_value como ingress-nginx.

Parâmetros de resposta

Para descrições dos parâmetros de resposta, consulte Criar uma tarefa de SQL agendada.

Código de exemplo

Este exemplo cria um arquivo App.java que armazena resultados de análises agendadas de um Logstore de origem em um Logstore de destino. Código de exemplo:

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 {
    // This example retrieves the AccessKey ID and AccessKey secret from environment variables.
    static String accessId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
    static String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
    // Set project and Logstore names.
    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";
    // Set the Simple Log Service endpoint. This example uses the China (Hangzhou) region. Replace it with your region.
    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();
        CreateScheduledSQLRequest request = new CreateScheduledSQLRequest(sourceProject, scheduledSQL);
        try {
            client.createScheduledSQL(request);
        } catch (LogException e) {
            e.printStackTrace();
        }
    }
} 

Referências