Todos os produtos
Search
Central de documentação

Simple Log Service:Dedicated SQL com o SDK para C++

Última atualização: Jul 03, 2026

Execute consultas Dedicated SQL em dados de log com o Simple Log Service SDK for C++. O Dedicated SQL processa centenas de bilhões de linhas de dados.

Pré-requisitos

  • Crie um usuário RAM e conceda as permissões necessárias. Para mais informações, consulte Criar um usuário RAM e conceder permissões.

  • Configure as variáveis de ambiente ALIBABA_CLOUD_ACCESS_KEY_ID e ALIBABA_CLOUD_ACCESS_KEY_SECRET. Para mais informações, consulte Configurar variáveis de ambiente no Linux, macOS e Windows.

    Importante

    O par AccessKey de uma conta Alibaba Cloud tem acesso a todas as operações da API. Use o par AccessKey de um usuário RAM para chamadas de API ou operações e manutenção rotineiras.

    Não codifique o AccessKey ID e o AccessKey Secret diretamente no código do projeto. Pares AccessKey expostos comprometem a segurança de todos os recursos da sua conta.

  • Instale a versão mais recente do Simple Log Service SDK for C++. Para mais informações, consulte Alibaba Cloud Simple Log Service SDK for C++.

Contexto

O Dedicated SQL aprimora os recursos de análise SQL e processa centenas de bilhões de linhas de dados. Para mais informações, consulte Ativar o Dedicated SQL.

O Simple Log Service fornece as operações ExecuteLogStoreSql e ExecuteProjectSql para o Dedicated SQL.

  • ExecuteLogStoreSql: executa uma consulta Dedicated SQL em um Logstore específico. Esta operação aceita sintaxe de consulta e análise compatível com o padrão SQL-92. O formato é search statement|analytic statement, em que a instrução analítica segue a sintaxe padrão SQL-92.

  • ExecuteProjectSql: executa uma consulta Dedicated SQL em um projeto específico. Esta operação aceita a sintaxe SQL-92. Especifique uma condição de filtro e um intervalo de tempo na cláusula WHERE da instrução SQL.

Nota

Para filtrar dados antes da análise, use a sintaxe search statement|analytic statement com a operação ExecuteLogStoreSql para obter melhor desempenho.

Código de exemplo

O código a seguir usa o recurso Dedicated SQL. Para acessar o SDK completo, consulte Alibaba Cloud Simple Log Service SDK for C++.

#include <cstdlib>

// Simple Log Service endpoint. Replace with your actual endpoint.
std::string endpoint = "cn-hangzhou.log.aliyuncs.com";
// Retrieve the AccessKey ID and AccessKey Secret from environment variables.
string accessId = (string)getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
string accessKey = (string)getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
// Project name.
std::string project = "your_project_name";
// Logstore name.
std::string logStore = "your_logstore";

// Create a Simple Log Service client.
LOGClient client(endpoint, accessId, accessKey);

// Run a SQL query in the specified Logstore.
try
{
    std::string sql = "* | select count(1)";
    int from = time(NULL) - 600;
    int to = from + 600;
    LogStoreSqlResponse logsResponse = client.ExecuteLogStoreSql(project, logStore,
                                                                 1627268185,1627269085,"* | SELECT count(*)",true);
    // Print the query result statistics.
    std::cout << "Returned sql result:" << std::endl
              << "count:" << logsResponse.result.logline << std::endl          // Number of rows in the result.
              << "processed rows:" << logsResponse.processedRows << std::endl  // Number of log rows processed.
              << "elapsed milli:" << logsResponse.elapsedMilli << std::endl    // SQL query execution duration.
              << "cpu sec:" << logsResponse.cpuSec << std::endl                // CPU time (seconds) for Dedicated SQL. Billing is based on this value. For more information, see billable items.
              << "cpu core:" << logsResponse.cpuCore << std::endl;             // Number of CPU cores used for the Dedicated SQL query.
    for (std::vector<LogItem>::const_iterator itr = logsResponse.result.logdatas.begin();
         itr != logsResponse.result.logdatas.end(); ++itr)
    {
        const LogItem &item = *itr;
        for (std::vector<std::pair<std::string, std::string>>::const_iterator itr_data = item.data.begin();
             itr_data != item.data.end(); ++itr_data)
        {
            std::cout << itr_data->first << ":" << itr_data->second;
        }
    }
}
catch (LOGException &e)
{
    std::cout << "error code :" << e.GetErrorCode() << std::endl;
    std::cout << "error message :" << e.GetMessage() << std::endl;
    throw e;
}

// Run a SQL query in the specified project.
try
{
    int now = time(NULL);
    std::string sql = "select count(1) as cnt from xxx where __time__ > " + to_string(now);
    ProjectSqlResponse logsResponse = client.ExecuteProjectSql(project,"select avg(latency),max(latency) ,count(1) as c from sample-logstore where status>200 and __time__>=1500975424 and __time__ < 1501035044 GROUP BY method ORDER BY c",true);

    // Print the query result statistics.
    std::cout << "Returned sql result:" << std::endl
              << "count:" << logsResponse.result.logline << std::endl          // Number of rows in the result.
              << "processed rows:" << logsResponse.processedRows << std::endl  // Number of log rows processed.
              << "elapsed milli:" << logsResponse.elapsedMilli << std::endl    // SQL query execution duration.
              << "cpu sec:" << logsResponse.cpuSec << std::endl                // CPU time (seconds) for Dedicated SQL. Billing is based on this value. For more information, see billable items.
              << "cpu core:" << logsResponse.cpuCore << std::endl;             // Number of CPU cores used for the Dedicated SQL query.
    for (std::vector<LogItem>::const_iterator itr = logsResponse.result.logdatas.begin(); itr != logsResponse.result.logdatas.end(); ++itr)
    {
        const LogItem &item = *itr;
        for (std::vector<std::pair<std::string, std::string>>::const_iterator itr_data = item.data.begin();
             itr_data != item.data.end(); ++itr_data)
        {
            std::cout << itr_data->first << ":" << itr_data->second;
        }
    }
}
catch (LOGException &e)
{
    std::cout << "error code :" << e.GetErrorCode() << std::endl;
    std::cout << "error message :" << e.GetMessage() << std::endl;
    throw e;
}
  • ExecuteLogStoreSql

    Chame a operação ExecuteLogStoreSql no seguinte formato: LogStoreSqlResponse logsResponse = client.ExecuteLogStoreSql(project, logStore, from, to, query, powerSql). A tabela a seguir descreve os parâmetros.

    Parâmetro

    Tipo

    Obrigatório

    Exemplo

    Descrição

    project

    String

    Sim

    N/A

    Nome do projeto.

    Definido ao criar o cliente. Nenhuma configuração adicional necessária.

    logStore

    String

    Sim

    N/A

    Nome do Logstore.

    Definido ao criar o cliente. Nenhuma configuração adicional necessária.

    from

    Long

    Sim

    1627268185

    Início do intervalo de tempo da consulta. O valor é um timestamp UNIX em segundos.

    to

    Long

    Sim

    1627269085

    Fim do intervalo de tempo da consulta. O valor é um timestamp UNIX em segundos.

    query

    String

    Sim

    " | SELECT count()"

    Instrução de consulta e análise do Simple Log Service, no formato search statement|analytic statement. Para mais informações, consulte Sintaxe básica.

    Por padrão, o Simple Log Service retorna 100 linhas de dados. Para retornar mais linhas, adicione uma cláusula LIMIT. Para mais informações, consulte Cláusula LIMIT.

    powerSql

    Boolean

    Não

    true

    Define se o Dedicated SQL será usado. Para mais informações, consulte Ativar o Dedicated SQL. Valores válidos:

    • true: usa o Dedicated SQL.

    • false (padrão): usa o Standard SQL.

  • ExecuteProjectSql

    Chame a operação ExecuteProjectSql no seguinte formato: ProjectSqlResponse logsResponse = client.ExecuteProjectSql(project, query, powerSql). A tabela a seguir descreve os parâmetros.

    Parâmetro

    Tipo

    Obrigatório

    Exemplo

    Descrição

    project

    String

    Sim

    N/A

    Nome do projeto.

    Definido ao criar o cliente. Nenhuma configuração adicional necessária.

    query

    String

    Sim

    "select avg(latency),max(latency) ,count(1) as c from sample-logstore where status>200 and __time__>=1500975424 and __time__ < 1501035044 GROUP BY method ORDER BY c"

    Instrução SQL-92 padrão. Especifique uma condição de filtro e um intervalo de tempo na cláusula WHERE.

    Por padrão, o Simple Log Service retorna 100 linhas de dados. Para retornar mais linhas, adicione uma cláusula LIMIT. Para mais informações, consulte Cláusula LIMIT.

    powerSql

    Boolean

    Não

    true

    Define se o Dedicated SQL será usado. Para mais informações, consulte Ativar o Dedicated SQL. Valores válidos:

    • true: usa o Dedicated SQL.

    • false (padrão): usa o Standard SQL.