Tous les produits
Search
Centre de documentation

Simple Log Service:Utiliser le SDK Python de Simple Log Service pour exploiter la fonctionnalité Dedicated SQL

Dernière mise à jour :Aug 19, 2026

Utilisez le SDK Python de Simple Log Service pour exécuter des requêtes SQL via la fonctionnalité Dedicated SQL, conçue pour l'analyse de journaux à grande échelle.

Prérequis

  • Le service Simple Log Service est activé.

  • Le SDK Python de Simple Log Service est initialisé.

Contexte

Simple Log Service propose la fonctionnalité Dedicated SQL afin d'améliorer les capacités d'analyse SQL et de traiter des centaines de milliards d'enregistrements de données. Pour plus d'informations, consultez la rubrique Requête et analyse précises haute performance (Dedicated SQL).

Simple Log Service met à disposition les opérations execute_logstore_sql et execute_project_sql pour utiliser la fonctionnalité Dedicated SQL.

  • execute_logstore_sql : exécute la fonctionnalité Dedicated SQL dans un Logstore spécifié. Cette opération prend en charge la syntaxe SQL-92. Une instruction de requête suit le format Search statement|Analytic statement et l'instruction analytique respecte la syntaxe standard SQL-92.

  • execute_project_sql : exécute la fonctionnalité Dedicated SQL dans un projet spécifié. Cette opération prend en charge la syntaxe SQL-92. Vous devez spécifier une condition de filtrage et une plage horaire dans la clause WHERE d'une instruction SQL.

Remarque

Pour filtrer les données avant l'analyse, nous vous recommandons d'appeler l'opération execute_logstore_sql et de spécifier une instruction de requête au format Search statement|Analytic statement afin d'optimiser l'efficacité.

Exemples de code pour utiliser la fonctionnalité Dedicated SQL

Description des opérations

  • Opération execute_logstore_sql

    Appelez l'opération execute_logstore_sql pour utiliser la fonctionnalité Dedicated SQL. Créez une requête selon le format res = client.execute_logstore_sql(project, logstoreName, from, to, query, powerSql). Le tableau suivant décrit les paramètres de la requête.

    Paramètre

    Type

    Obligatoire

    Exemple

    Description

    project_name

    String

    Oui

    S.O.

    Nom du projet.

    Cette valeur est spécifiée lors de la création du client Simple Log Service ; il n'est donc pas nécessaire de la configurer à nouveau.

    logstore_name

    String

    Oui

    S.O.

    Nom du Logstore.

    Cette valeur est spécifiée lors de la création du client Simple Log Service ; il n'est donc pas nécessaire de la configurer à nouveau.

    from

    Long

    Oui

    int(time.time() - 60)

    Début de la plage horaire à interroger. La valeur correspond à un horodatage UNIX représentant le nombre de secondes écoulées depuis l'époque (1er janvier 1970, 00:00:00 UTC).

    to

    Long

    Oui

    int(time.time())

    Fin de la plage horaire à interroger. La valeur correspond à un horodatage UNIX représentant le nombre de secondes écoulées depuis l'époque (1er janvier 1970, 00:00:00 UTC).

    query

    String

    Oui

    "* | select count(1) as cnt"

    Instruction de requête. Format : Search statement|Analytic statement. Pour plus d'informations, consultez la rubrique Syntaxe.

    Par défaut, Simple Log Service renvoie 100 lignes de données. Vous pouvez utiliser une clause LIMIT pour spécifier le nombre de lignes de données à renvoyer. Pour plus d'informations, consultez la rubrique Clause LIMIT.

    powerSql

    Boolean

    Non

    True

    Indique s'il faut utiliser la fonctionnalité Dedicated SQL. Pour plus d'informations, consultez la rubrique Requête et analyse précises haute performance (Dedicated SQL).

    • True : la fonctionnalité Dedicated SQL est utilisée.

    • False (par défaut) : la fonctionnalité Standard SQL est utilisée.

  • Opération execute_project_sql

    Appelez l'opération execute_project_sql pour utiliser la fonctionnalité Dedicated SQL. Créez une requête selon le format res = client.execute_project_sql(project, query, powerSql). Le tableau suivant décrit les paramètres de la requête.

    Paramètre

    Type

    Obligatoire

    Exemple

    Description

    project_name

    String

    Oui

    aliyun-test-project

    Nom du projet.

    Cette valeur est spécifiée lors de la création du client Simple Log Service ; il n'est donc pas nécessaire de la configurer à nouveau.

    query

    String

    Oui

    "select count(1) as cnt from %s where __time__ > %s" % (logstore_name, int(time.time() - 60))

    Instruction SQL. Vous devez spécifier la condition de recherche dans la clause WHERE de l'instruction SQL.

    Par défaut, Simple Log Service renvoie 100 lignes de données. Vous pouvez utiliser une clause LIMIT pour spécifier le nombre de lignes de données à renvoyer. Pour plus d'informations, consultez la rubrique Clause LIMIT.

    powerSql

    Boolean

    Non

    True

    Indique s'il faut utiliser la fonctionnalité Dedicated SQL. Pour plus d'informations, consultez la rubrique Requête et analyse précises haute performance (Dedicated SQL).

    • True : la fonctionnalité Dedicated SQL est utilisée.

    • False (par défaut) : la fonctionnalité Standard SQL est utilisée.

Exemple de code

L'exemple de code suivant illustre l'utilisation de la fonctionnalité Dedicated SQL. Pour plus d'informations, consultez le dépôt aliyun-log-python-sdk.

# encoding: utf-8
from __future__ import print_function

import time
import os
from aliyun.log import *

def main():
    # Specify a Simple Log Service endpoint. 
    endpoint = 'ap-southeast-1.log.aliyuncs.com'
    # Configure environment variables. In this example, the AccessKey ID and AccessKey secret are obtained from environment variables. 
    access_key_id = os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID', '')
    access_key = os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET', '')
    # The name of the project. 
    project_name = 'aliyun-test-project'
    # The name of the logstore. 
    logstore_name = 'aliyun-test-logstore'

    # Create a Simple Log Service client. 
    client = LogClient(endpoint, access_key_id, access_key)

    # Execute an SQL statement in the specified logstore. 
    print("===sample_execute_logstore_sql===")
    res = client.execute_logstore_sql(project_name, logstore_name,
                                      int(time.time() - 60),int(time.time()),
                                      "* | select count(1) as cnt",True)
    # Display the statistics about the analysis results. 
    res.log_print()
    # The number of rows of log data that is processed. 
    print("processed_rows: %s" % res.get_processed_rows())
    # The time that is consumed to execute the SQL statement. 
    print("elapsed_mills: %s" % res.get_elapsed_mills())
    # Display whether an SQL statement is used. 
    print("has_sql: %s" % res.get_has_sql())
    # The WHERE clause that precedes the vertical bar (|). 
    print("where_query: %s" % res.get_where_query())
    # The SELECT statement that follows the vertical bar (|). The SELECT statement contains an aggregate function. 
    print("agg_query: %s" % res.get_agg_query())
    # The CPU time that is consumed to execute the SQL statement after the Dedicated SQL feature is enabled. Unit: seconds. You are charged for the Dedicated SQL feature based on the CPU time. For more information, see the topics that are related to billable items. 
    print("cpu_sec: %s" % res.get_cpu_sec())
    # The number of CPU cores that are used to execute the SQL statement after the Dedicated SQL feature is enabled. 
    print("cpu_cores: %s" % res.get_cpu_cores())

    # Execute an SQL statement in the specified project. 
    print("===sample_execute_project_sql===")
    res = client.execute_project_sql(project_name,"select count(1) as cnt from %s where __time__ > %s"
                                     % (logstore_name, int(time.time() - 60)),True)
    # Display the statistics about the analysis results. 
    res.log_print()
    # The number of rows of log data that is processed. 
    print("processed_rows: %s" % res.get_processed_rows())
    # The time that is consumed to execute the SQL statement. 
    print("elapsed_mills: %s" % res.get_elapsed_mills())
    # Display whether an SQL statement is used. 
    print("has_sql: %s" % res.get_has_sql())
    # The WHERE clause that precedes the vertical bar (|). 
    print("where_query: %s" % res.get_where_query())
    # The SELECT statement that follows the vertical bar (|). The SELECT statement contains an aggregate function. 
    print("agg_query: %s" % res.get_agg_query())
    # The CPU time that is consumed to execute the SQL statement after the Dedicated SQL feature is enabled. Unit: seconds. You are charged for the Dedicated SQL feature based on the CPU time. For more information, see the topics that are related to billable items. 
    print("cpu_sec: %s" % res.get_cpu_sec())
    # The number of CPU cores that are used to execute the SQL statement after the Dedicated SQL feature is enabled. 
    print("cpu_cores: %s" % res.get_cpu_cores())

if __name__ == '__main__':
    main()

Exemple de code pour créer, modifier et interroger une instance SQL

Une fois la fonctionnalité Dedicated SQL activée, vous pouvez créer une instance SQL pour spécifier le nombre d'unités de calcul (CU). Vous pouvez ajuster le nombre d'unités de calcul afin de maîtriser les coûts. Pour plus d'informations, consultez la rubrique Requête et analyse précises haute performance (Dedicated SQL).

L'exemple de code suivant montre comment créer, modifier et interroger une instance SQL. Pour plus d'informations, consultez le dépôt aliyun-log-python-sdk.

# encoding: utf-8
from __future__ import print_function

import time
import os
from aliyun.log import *

def main():
    # The Simple Log Service endpoint. For more information, see Endpoints. In this example, the Simple Log Service endpoint for the China (Hangzhou) region is used. Replace the parameter value with the actual endpoint. 
    endpoint = 'ap-southeast-1.log.aliyuncs.com'
    # Configure environment variables. In this example, the AccessKey ID and AccessKey secret are obtained from environment variables. 
    access_key_id = os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID', '')
    access_key = os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET', '')
    # The name of the project. 
    project_name = 'aliyun-test-project'
    # The name of the logstore. 
    logstore_name = 'aliyun-test-logstore'

    # Create a Simple Log Service client. 
    client = LogClient(endpoint, access_key_id, access_key)

    # Create an SQL instance. You can specify the number of CUs for the SQL instance. Valid values: 0 to 1000. 
    print("===sample_create_sql_instance===")
    res = client.create_sql_instance(project_name, 500)
    res.log_print()

    # Modify the configurations of the SQL instance. You can change the number of CUs for the SQL instance. Valid values: 0 to 1000. 
    print("===sample_update_sql_instance===")
    res = client.update_sql_instance(project_name, 800)
    res.log_print()

    # Query the configurations of the SQL instance. 
    print("===sample_list_sql_instance===")
    res = client.list_sql_instance(project_name)
    res.log_print()

if __name__ == '__main__':
    main()