Topik ini menjelaskan cara menggunakan Simple Log Service SDK untuk Python dalam mengakses fitur Dedicated SQL.
Prasyarat
Simple Log Service telah diaktifkan.
Simple Log Service SDK untuk Python telah diinisialisasi.
Informasi latar belakang
Simple Log Service menyediakan fitur Dedicated SQL untuk meningkatkan kemampuan analisis SQL. Anda dapat menggunakan fitur ini untuk memproses ratusan miliar catatan data. Untuk informasi lebih lanjut, lihat Dedicated SQL: Solusi Optimalisasi Kueri Log Tingkat Triliun.
Simple Log Service menyediakan operasi execute_logstore_sql dan execute_project_sql. Anda dapat memanggil operasi tersebut untuk menggunakan fitur Dedicated SQL secara efisien.
execute_logstore_sql: menggunakan fitur Dedicated SQL di logstore tertentu. Operasi ini mendukung sintaksis SQL-92. Pernyataan kueri berada dalam format
Pernyataan Pencarian|Pernyataan Analitik, dan pernyataan analitik mengikuti sintaksis SQL-92 standar.execute_project_sql: menggunakan fitur Dedicated SQL di proyek tertentu. Operasi ini mendukung sintaksis SQL-92. Anda harus menentukan kondisi filter dan rentang waktu dalam klausa WHERE dari pernyataan SQL.
Jika Anda ingin menyaring data sebelum menganalisisnya, kami sarankan Anda memanggil operasi execute_logstore_sql dan menentukan pernyataan kueri dalam format Pernyataan Pencarian|Pernyataan Analitik untuk meningkatkan efisiensi analisis.
Kode contoh untuk menggunakan fitur Dedicated SQL
Deskripsi operasi
Operasi execute_logstore_sql
Anda dapat memanggil operasi execute_logstore_sql untuk menggunakan fitur Dedicated SQL. Anda harus membuat permintaan dalam format
res = client.execute_logstore_sql(project, logstoreName, from, to, query, powerSql). Tabel berikut menjelaskan parameter permintaan.Parameter
Tipe
Diperlukan
Contoh
Deskripsi
project_name
String
Ya
N/A
Nama proyek.
Saat Anda membuat klien Simple Log Service, Anda harus menentukan nilai untuk parameter project_name. Oleh karena itu, Anda tidak perlu mengonfigurasi parameter ini lagi.
logstore_name
String
Ya
N/A
Nama logstore.
Saat Anda membuat klien Simple Log Service, Anda harus menentukan nilai untuk parameter logstore_name. Oleh karena itu, Anda tidak perlu mengonfigurasi parameter ini lagi.
from
Long
Ya
int(time.time() - 60)
Awal rentang waktu untuk kueri. Nilainya adalah timestamp UNIX yang mewakili jumlah detik yang telah berlalu sejak waktu epoch 1 Januari 1970, 00:00:00 UTC.
to
Long
Ya
int(time.time())
Akhir rentang waktu untuk kueri. Nilainya adalah timestamp UNIX yang mewakili jumlah detik yang telah berlalu sejak waktu epoch 1 Januari 1970, 00:00:00 UTC.
query
String
Ya
"* | select count(1) as cnt"
Pernyataan kueri. Format:
Pernyataan Pencarian|Pernyataan Analitik. Untuk informasi lebih lanjut, lihat Sintaksis.Secara default, Simple Log Service mengembalikan 100 baris data. Anda dapat menggunakan klausa LIMIT untuk menentukan jumlah baris data yang akan dikembalikan. Untuk informasi lebih lanjut, lihat Klausa LIMIT.
powerSql
Boolean
Tidak
True
Menentukan apakah akan menggunakan fitur Dedicated SQL. Untuk informasi lebih lanjut, lihat Dedicated SQL: Solusi optimalisasi kueri log tingkat triliun.
True: Fitur Dedicated SQL digunakan.
False (default): Fitur Standard SQL digunakan.
Operasi execute_project_sql
Anda dapat memanggil operasi execute_project_sql untuk menggunakan fitur Dedicated SQL. Anda harus membuat permintaan dalam format
res = client.execute_project_sql(project, query, powerSql). Tabel berikut menjelaskan parameter permintaan.Parameter
Tipe
Diperlukan
Contoh
Deskripsi
project_name
String
Ya
aliyun-test-project
Nama proyek.
Saat Anda membuat klien Simple Log Service, Anda harus menentukan nilai untuk parameter project_name. Oleh karena itu, Anda tidak perlu mengonfigurasi parameter ini lagi.
query
String
Ya
"select count(1) as cnt from %s where __time__ > %s" % (logstore_name, int(time.time() - 60))
Pernyataan SQL. Anda harus menentukan kondisi pencarian dalam klausa WHERE dari pernyataan SQL.
Secara default, Simple Log Service mengembalikan 100 baris data. Anda dapat menggunakan klausa LIMIT untuk menentukan jumlah baris data yang akan dikembalikan. Untuk informasi lebih lanjut, lihat Klausa LIMIT.
powerSql
Boolean
Tidak
True
Menentukan apakah akan menggunakan fitur Dedicated SQL. Untuk informasi lebih lanjut, lihat Dedicated SQL: Solusi optimalisasi kueri log tingkat triliun.
True: Fitur Dedicated SQL digunakan.
False (default): Fitur Standard SQL digunakan.
Kode contoh
Kode contoh berikut memberikan contoh tentang cara menggunakan fitur Dedicated SQL. Untuk informasi lebih lanjut, lihat aliyun-log-python-sdk.
# encoding: utf-8
from __future__ import print_function
import time
import os
from aliyun.log import *
def main():
# Tentukan titik akhir Simple Log Service.
endpoint = 'ap-southeast-1.log.aliyuncs.com'
# Konfigurasikan variabel lingkungan. Dalam contoh ini, ID AccessKey dan Rahasia AccessKey diperoleh dari variabel lingkungan.
access_key_id = os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID', '')
access_key = os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET', '')
# Nama proyek.
project_name = 'aliyun-test-project'
# Nama logstore.
logstore_name = 'aliyun-test-logstore'
# Buat klien Simple Log Service.
client = LogClient(endpoint, access_key_id, access_key)
# Jalankan pernyataan SQL di logstore yang ditentukan.
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)
# Tampilkan statistik tentang hasil analisis.
res.log_print()
# Jumlah baris data log yang diproses.
print("processed_rows: %s" % res.get_processed_rows())
# Waktu yang dikonsumsi untuk menjalankan pernyataan SQL.
print("elapsed_mills: %s" % res.get_elapsed_mills())
# Tampilkan apakah pernyataan SQL digunakan.
print("has_sql: %s" % res.get_has_sql())
# Klausa WHERE yang mendahului tanda vertikal (|).
print("where_query: %s" % res.get_where_query())
# Pernyataan SELECT yang mengikuti tanda vertikal (|). Pernyataan SELECT berisi fungsi agregat.
print("agg_query: %s" % res.get_agg_query())
# Waktu CPU yang dikonsumsi untuk menjalankan pernyataan SQL setelah fitur Dedicated SQL diaktifkan. Unit: detik. Anda dikenakan biaya untuk fitur Dedicated SQL berdasarkan waktu CPU. Untuk informasi lebih lanjut, lihat topik yang terkait dengan item yang dapat ditagih.
print("cpu_sec: %s" % res.get_cpu_sec())
# Jumlah core CPU yang digunakan untuk menjalankan pernyataan SQL setelah fitur Dedicated SQL diaktifkan.
print("cpu_cores: %s" % res.get_cpu_cores())
# Jalankan pernyataan SQL di proyek yang ditentukan.
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)
# Tampilkan statistik tentang hasil analisis.
res.log_print()
# Jumlah baris data log yang diproses.
print("processed_rows: %s" % res.get_processed_rows())
# Waktu yang dikonsumsi untuk menjalankan pernyataan SQL.
print("elapsed_mills: %s" % res.get_elapsed_mills())
# Tampilkan apakah pernyataan SQL digunakan.
print("has_sql: %s" % res.get_has_sql())
# Klausa WHERE yang mendahului tanda vertikal (|).
print("where_query: %s" % res.get_where_query())
# Pernyataan SELECT yang mengikuti tanda vertikal (|). Pernyataan SELECT berisi fungsi agregat.
print("agg_query: %s" % res.get_agg_query())
# Waktu CPU yang dikonsumsi untuk menjalankan pernyataan SQL setelah fitur Dedicated SQL diaktifkan. Unit: detik. Anda dikenakan biaya untuk fitur Dedicated SQL berdasarkan waktu CPU. Untuk informasi lebih lanjut, lihat topik yang terkait dengan item yang dapat ditagih.
print("cpu_sec: %s" % res.get_cpu_sec())
# Jumlah core CPU yang digunakan untuk menjalankan pernyataan SQL setelah fitur Dedicated SQL diaktifkan.
print("cpu_cores: %s" % res.get_cpu_cores())
if __name__ == '__main__':
main()Kode contoh untuk membuat, memodifikasi, dan menanyakan instans SQL
Setelah fitur Dedicated SQL diaktifkan, Anda dapat membuat instans SQL untuk menentukan jumlah CU. Anda dapat mengubah jumlah CU untuk mengontrol biaya fitur Dedicated SQL. Untuk informasi lebih lanjut, lihat Dedicated SQL: Solusi Optimalisasi Kueri Log Tingkat Triliun.
Kode contoh berikut memberikan contoh tentang cara membuat, memodifikasi, dan menanyakan instans SQL. Untuk informasi lebih lanjut, lihat aliyun-log-python-sdk.
# encoding: utf-8
from __future__ import print_function
import time
import os
from aliyun.log import *
def main():
# Titik akhir Simple Log Service. Untuk informasi lebih lanjut, lihat Titik akhir. Dalam contoh ini, titik akhir Simple Log Service untuk wilayah China (Hangzhou) digunakan. Ganti nilai parameter dengan titik akhir yang sebenarnya.
endpoint = 'ap-southeast-1.log.aliyuncs.com'
# Konfigurasikan variabel lingkungan. Dalam contoh ini, ID AccessKey dan Rahasia AccessKey diperoleh dari variabel lingkungan.
access_key_id = os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID', '')
access_key = os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET', '')
# Nama proyek.
project_name = 'aliyun-test-project'
# Nama logstore.
logstore_name = 'aliyun-test-logstore'
# Buat klien Simple Log Service.
client = LogClient(endpoint, access_key_id, access_key)
# Buat instans SQL. Anda dapat menentukan jumlah CU untuk instans SQL. Nilai valid: 0 hingga 1000.
print("===sample_create_sql_instance===")
res = client.create_sql_instance(project_name, 500)
res.log_print()
# Modifikasi konfigurasi instans SQL. Anda dapat mengubah jumlah CU untuk instans SQL. Nilai valid: 0 hingga 1000.
print("===sample_update_sql_instance===")
res = client.update_sql_instance(project_name, 800)
res.log_print()
# Tanyakan konfigurasi instans SQL.
print("===sample_list_sql_instance===")
res = client.list_sql_instance(project_name)
res.log_print()
if __name__ == '__main__':
main()