Use o SDK do Simple Log Service para Python para executar consultas SQL com o recurso Dedicated SQL na análise de logs em grande escala.
Pré-requisitos
O Simple Log Service está ativado.
O SDK do Simple Log Service para Python está inicializado.
Informações básicas
O Simple Log Service oferece o recurso Dedicated SQL para aprimorar a análise SQL e processar centenas de bilhões de registros de dados. Para mais informações, consulte Consulta e análise de alta precisão e alto desempenho (Dedicated SQL).
O Simple Log Service disponibiliza as operações execute_logstore_sql e execute_project_sql para usar o recurso Dedicated SQL.
execute_logstore_sql: executa o recurso Dedicated SQL em um Logstore específico. Esta operação suporta a sintaxe SQL-92. A instrução de consulta segue o formato
Search statement|Analytic statement, e a instrução analítica obedece à sintaxe padrão SQL-92.execute_project_sql: executa o recurso Dedicated SQL em um projeto específico. Esta operação também suporta a sintaxe SQL-92. Especifique uma condição de filtro e um intervalo de tempo na cláusula WHERE da instrução SQL.
Para filtrar dados antes da análise, recomendamos chamar a operação execute_logstore_sql e especificar uma instrução de consulta no formato Search statement|Analytic statement para obter maior eficiência.
Código de exemplo para usar o recurso Dedicated SQL
Descrição da operação
-
Operação execute_logstore_sql
Chame a operação execute_logstore_sql para usar o recurso Dedicated SQL. Crie uma solicitação no formato
res = client.execute_logstore_sql(project, logstoreName, from, to, query, powerSql). A tabela a seguir descreve os parâmetros da solicitação.Parâmetro
Tipo
Obrigatório
Exemplo
Descrição
project_name
String
Sim
N/A
Nome do projeto.
Este valor é definido ao criar o cliente do Simple Log Service. Não é necessário configurá-lo novamente.
logstore_name
String
Sim
N/A
Nome do Logstore.
Este valor é definido ao criar o cliente do Simple Log Service. Não é necessário configurá-lo novamente.
from
Long
Sim
int(time.time() - 60)
Início do intervalo de tempo da consulta. O valor é um timestamp UNIX que representa o número de segundos decorridos desde a época (1º de janeiro de 1970, 00:00:00 UTC).
to
Long
Sim
int(time.time())
Fim do intervalo de tempo da consulta. O valor é um timestamp UNIX que representa o número de segundos decorridos desde a época (1º de janeiro de 1970, 00:00:00 UTC).
query
String
Sim
"* | select count(1) as cnt"
Instrução de consulta. Formato:
Search statement|Analytic statement. Para mais informações, consulte Sintaxe.Por padrão, o Simple Log Service retorna 100 linhas de dados. Use uma cláusula LIMIT para especificar a quantidade de linhas a retornar. Para mais informações, consulte Cláusula LIMIT.
powerSql
Boolean
Não
True
Define se o recurso Dedicated SQL será usado. Para mais informações, consulte Consulta e análise de alta precisão e alto desempenho (Dedicated SQL).
-
True: usa o recurso Dedicated SQL.
-
False (padrão): usa o recurso Standard SQL.
-
-
Operação execute_project_sql
Chame a operação execute_project_sql para usar o recurso Dedicated SQL. Crie uma solicitação no formato
res = client.execute_project_sql(project, query, powerSql). A tabela a seguir descreve os parâmetros da solicitação.Parâmetro
Tipo
Obrigatório
Exemplo
Descrição
project_name
String
Sim
aliyun-test-project
Nome do projeto.
Este valor é definido ao criar o cliente do Simple Log Service. Não é necessário configurá-lo novamente.
query
String
Sim
"select count(1) as cnt from %s where __time__ > %s" % (logstore_name, int(time.time() - 60))
Instrução SQL. Especifique a condição de busca na cláusula WHERE da instrução SQL.
Por padrão, o Simple Log Service retorna 100 linhas de dados. Use uma cláusula LIMIT para especificar a quantidade de linhas a retornar. Para mais informações, consulte Cláusula LIMIT.
powerSql
Boolean
Não
True
Define se o recurso Dedicated SQL será usado. Para mais informações, consulte Consulta e análise de alta precisão e alto desempenho (Dedicated SQL).
-
True: usa o recurso Dedicated SQL.
-
False (padrão): usa o recurso Standard SQL.
-
Código de exemplo
O código de exemplo a seguir mostra como usar o recurso Dedicated SQL. Para mais informações, consulte 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()
Código de exemplo para criar, modificar e consultar uma instância SQL
Após ativar o recurso Dedicated SQL, crie uma instância SQL para especificar o número de CUs. Ajuste a quantidade de CUs para controlar custos. Para mais informações, consulte Consulta e análise de alta precisão e alto desempenho (Dedicated SQL).
O código de exemplo a seguir mostra como criar, modificar e consultar uma instância SQL. Para mais informações, consulte 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()