Todos los productos
Search
Centro de documentos

Simple Log Service:Dedicated SQL con el SDK de C++

Última actualización: Sep 02, 2026

Ejecute consultas Dedicated SQL sobre datos de registro mediante el SDK de Simple Log Service para C++. Dedicated SQL admite el procesamiento de cientos de miles de millones de filas de datos.

Requisitos previos

  • Se creó un usuario de RAM y se le otorgaron los permisos obligatorios. Para obtener más información, consulte Create a RAM user and grant permissions.

  • Las variables de entorno ALIBABA_CLOUD_ACCESS_KEY_ID y ALIBABA_CLOUD_ACCESS_KEY_SECRET están configuradas. Para obtener más información, consulte Configure environment variables on Linux, macOS, and Windows.

    Importante

    El par de AccessKey de una cuenta de Alibaba Cloud tiene acceso a todas las operaciones de la API. Utilice el par de AccessKey de un usuario de RAM para las llamadas a la API o para tareas rutinarias de operación y mantenimiento.

    No codifique su AccessKey ID ni su AccessKey Secret directamente en el código del proyecto. Un par de AccessKey comprometido pone en riesgo la seguridad de todos los recursos de su cuenta.

  • Está instalada la versión más reciente del SDK de Simple Log Service para C++. Para obtener más información, consulte SDK de Simple Log Service para C++ de Alibaba Cloud.

Contexto

Dedicated SQL mejora las capacidades de análisis SQL y permite procesar cientos de miles de millones de filas de datos. Para obtener más información, consulte Enable Dedicated SQL.

Simple Log Service proporciona las operaciones ExecuteLogStoreSql y ExecuteProjectSql para Dedicated SQL.

  • ExecuteLogStoreSql: ejecuta una consulta Dedicated SQL en un logstore específico. Esta operación admite sintaxis de consulta y análisis compatible con SQL-92 estándar. El formato es search statement|analytic statement, donde la instrucción de análisis sigue la sintaxis estándar de SQL-92.

  • ExecuteProjectSql: ejecuta una consulta Dedicated SQL en un proyecto específico. Esta operación admite la sintaxis SQL-92. Especifique una condición de filtro y un intervalo de tiempo en la cláusula WHERE de la instrucción SQL.

Nota

Para filtrar datos antes del análisis, utilice la sintaxis search statement|analytic statement con la operación ExecuteLogStoreSql y obtenga un mejor rendimiento.

Código de ejemplo

A continuación se muestra un código que utiliza la función Dedicated SQL. Para consultar el SDK completo, visite SDK de Simple Log Service para C++ de Alibaba Cloud.

#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

    Llame a la operación ExecuteLogStoreSql con el siguiente formato: LogStoreSqlResponse logsResponse = client.ExecuteLogStoreSql(project, logStore, from, to, query, powerSql). En la siguiente tabla se describen los parámetros.

    Parámetro

    Tipo

    Obligatorio

    Ejemplo

    Descripción

    project

    String

    Sí

    N/A

    Nombre del proyecto.

    Ya se definió al crear el cliente. No se requiere configuración adicional.

    logStore

    String

    Sí

    N/A

    Nombre del logstore.

    Ya se definió al crear el cliente. No se requiere configuración adicional.

    from

    Long

    Sí

    1627268185

    Inicio del intervalo de tiempo de la consulta. El valor es una marca de tiempo UNIX en segundos.

    to

    Long

    Sí

    1627269085

    Fin del intervalo de tiempo de la consulta. El valor es una marca de tiempo UNIX en segundos.

    query

    String

    Sí

    " | SELECT count()"

    Instrucción de consulta y análisis para Simple Log Service, con el formato search statement|analytic statement. Para obtener más información, consulte Basic syntax.

    De forma predeterminada, Simple Log Service devuelve 100 filas de datos. Para devolver más filas, agregue una cláusula LIMIT. Para obtener más información, consulte LIMIT clause.

    powerSql

    Boolean

    No

    true

    Indica si se debe usar Dedicated SQL. Para obtener más información, consulte Enable Dedicated SQL. Valores válidos:

    • true: usa Dedicated SQL.

    • false (predeterminado): usa Standard SQL.

  • ExecuteProjectSql

    Llame a la operación ExecuteProjectSql con el siguiente formato: ProjectSqlResponse logsResponse = client.ExecuteProjectSql(project, query, powerSql). En la siguiente tabla se describen los parámetros.

    Parámetro

    Tipo

    Obligatorio

    Ejemplo

    Descripción

    project

    String

    Sí

    N/A

    Nombre del proyecto.

    Ya se definió al crear el cliente. No se requiere configuración adicional.

    query

    String

    Sí

    "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"

    Instrucción SQL-92 estándar. Especifique una condición de filtro y un intervalo de tiempo en la cláusula WHERE.

    De forma predeterminada, Simple Log Service devuelve 100 filas de datos. Para devolver más filas, agregue una cláusula LIMIT. Para obtener más información, consulte LIMIT clause.

    powerSql

    Boolean

    No

    true

    Indica si se debe usar Dedicated SQL. Para obtener más información, consulte Enable Dedicated SQL. Valores válidos:

    • true: usa Dedicated SQL.

    • false (predeterminado): usa Standard SQL.