Bagikan melalui


Referensi tabel sistem riwayat kueri

Penting

Tabel sistem ini berada dalam Pratinjau Umum. Untuk mengakses tabel, skema harus diaktifkan di katalog system Anda. Untuk informasi selengkapnya, lihat Mengaktifkan skema tabel sistem.

Artikel ini menyertakan informasi tentang tabel sistem riwayat kueri, termasuk kerangka skema tabel.

Penting

Untuk mengakses tabel sistem riwayat kueri, Anda harus mengaktifkan skema query. Untuk petunjuk tentang mengaktifkan skema sistem, lihat Mengaktifkan skema tabel sistem.

Jalur tabel: Tabel sistem ini terletak di system.query.history.

Menggunakan tabel riwayat kueri

Tabel riwayat kueri menyertakan rekaman untuk kueri yang dijalankan menggunakan gudang SQL atau komputasi tanpa server untuk buku catatan dan pekerjaan . Tabel menyertakan rekaman seluruh akun dari semua ruang kerja di wilayah yang sama tempat Anda mengakses tabel.

Secara default, hanya admin yang memiliki akses ke tabel sistem. Jika Anda ingin berbagi data tabel dengan pengguna atau grup, Databricks merekomendasikan untuk membuat tampilan dinamis untuk setiap pengguna atau grup. Lihat Membuat tampilan dinamis.

Skema tabel sistem riwayat kueri

Tabel riwayat kueri menggunakan skema berikut:

Nama kolom Jenis data Deskripsi Contoh
account_id string ID akun. 11e22ba4-87b9-4cc2
-9770-d10b894b7118
workspace_id string ID ruang kerja tempat kueri dijalankan. 1234567890123456
statement_id string ID yang secara unik mengidentifikasi eksekusi pernyataan. Anda dapat menggunakan ID ini untuk menemukan eksekusi pernyataan di antarmuka pengguna Riwayat Kueri. 7a99b43c-b46c-432b
-b0a7-814217701909
session_id string ID sesi Spark. 01234567-cr06-a2mp
-t0nd-a14ecfb5a9c2
execution_status string Status penghentian pernyataan. Nilai yang mungkin adalah:
- FINISHED: Eksekusi berhasil
- FAILED: eksekusi gagal dengan alasan kegagalan yang dijelaskan dalam pesan kesalahan yang menyertainya
- CANCELED: Eksekusi dibatalkan
FINISHED
compute struktur Struktur yang mewakili jenis sumber daya komputasi yang digunakan untuk menjalankan pernyataan dan ID sumber daya jika berlaku. Nilainya type akan berupa WAREHOUSE atau SERVERLESS_COMPUTE. {
type: WAREHOUSE,
cluster_id: NULL,
warehouse_id: ec58ee3772e8d305
}
executed_by_user_id string ID pengguna yang menjalankan pernyataan. 2967555311742259
executed_by string Alamat email atau nama pengguna pengguna yang menjalankan pernyataan. example@databricks.com
statement_text string Teks pernyataan SQL. Jika Anda telah mengonfigurasi kunci yang dikelola pelanggan, statement_text kosong. Karena keterbatasan penyimpanan, nilai teks pernyataan yang lebih panjang dikompresi. Bahkan dengan kompresi, Anda mungkin mencapai batas karakter. SELECT 1
statement_type string Jenis pernyataan. Misalnya: ALTER, COPY, dan INSERT. SELECT
error_message string Pesan yang menjelaskan kondisi kesalahan. Jika Anda telah mengonfigurasi kunci yang dikelola pelanggan, error_message kosong. [INSUFFICIENT_PERMISSIONS]
Insufficient privileges:
User does not have
permission SELECT on table
'default.nyctaxi_trips'.
client_application string Aplikasi klien yang menjalankan pernyataan. Misalnya: Editor SQL Databricks, Tableau, dan Power BI. Bidang ini berasal dari informasi yang disediakan oleh aplikasi klien. Meskipun nilai diharapkan tetap statis dari waktu ke waktu, ini tidak dapat dijamin. Databricks SQL Editor
client_driver string Konektor yang digunakan untuk menyambungkan ke Databricks untuk menjalankan pernyataan. Misalnya: Driver SQL Databricks untuk Go, Driver ODBC Databricks, Driver Databricks JDBC. Databricks JDBC Driver
total_duration_ms bigint Total waktu eksekusi pernyataan dalam milidetik (tidak termasuk waktu pengambilan hasil). 1
waiting_for_compute_duration_ms bigint Waktu yang dihabiskan untuk menunggu sumber daya komputasi disediakan dalam milidetik. 1
waiting_at_capacity_duration_ms bigint Waktu yang dihabiskan untuk menunggu dalam antrean untuk kapasitas komputasi yang tersedia dalam milidetik. 1
execution_duration_ms bigint Waktu yang dihabiskan untuk menjalankan pernyataan dalam milidetik. 1
compilation_duration_ms bigint Waktu yang dihabiskan untuk memuat metadata dan mengoptimalkan pernyataan dalam milidetik. 1
total_task_duration_ms bigint Jumlah semua durasi tugas dalam milidetik. Kali ini mewakili waktu gabungan yang diperlukan untuk menjalankan kueri di semua inti semua simpul. Ini bisa jauh lebih lama daripada durasi jam dinding jika beberapa tugas dijalankan secara paralel. Ini bisa lebih pendek dari durasi jam dinding jika tugas menunggu simpul yang tersedia. 1
result_fetch_duration_ms bigint Waktu yang dihabiskan, dalam milidetik, mengambil hasil pernyataan setelah eksekusi selesai. 1
start_time rentang waktu Waktu ketika Databricks menerima permintaan. Informasi zona waktu dicatat di akhir nilai dengan +00:00 mewakili UTC. 2022-12-05T00:00:00.000+0000
end_time rentang waktu Waktu eksekusi pernyataan berakhir, tidak termasuk waktu pengambilan hasil. Informasi zona waktu dicatat di akhir nilai dengan +00:00 mewakili UTC. 2022-12-05T00:00:00.000+00:00
update_time rentang waktu Waktu terakhir kali pernyataan menerima pembaruan kemajuan. Informasi zona waktu dicatat di akhir nilai dengan +00:00 mewakili UTC. 2022-12-05T00:00:00.000+00:00
read_partitions bigint Jumlah partisi yang dibaca setelah pemangkasan. 1
pruned_files bigint Jumlah file yang diprajakan. 1
read_files bigint Jumlah file yang dibaca setelah pemangkasan. 1
read_rows bigint Jumlah total baris yang dibaca oleh pernyataan. 1
produced_rows bigint Jumlah total baris yang dikembalikan oleh pernyataan. 1
read_bytes bigint Ukuran total data yang dibaca oleh pernyataan dalam byte. 1
read_io_cache_percent int Persentase byte data persisten yang dibaca dari cache IO. 50
from_result_cache Boolean TRUE menunjukkan bahwa hasil pernyataan diambil dari cache. TRUE
spilled_local_bytes bigint Ukuran data, dalam byte, untuk sementara ditulis ke disk saat menjalankan pernyataan. 1
written_bytes bigint Ukuran dalam byte data persisten yang ditulis ke penyimpanan objek cloud. 1
shuffle_read_bytes bigint Jumlah total data dalam byte yang dikirim melalui jaringan. 1
query_source struktur Struktur yang berisi pasangan kunci-nilai yang mewakili satu atau beberapa entitas Databricks yang terlibat dalam eksekusi pernyataan ini, seperti pekerjaan, notebook, atau dasbor. Bidang ini hanya merekam entitas Databricks. {
alert_id: null,
sql_query_id: null,
dashboard_id: 887406461287882,
notebook_id: null,
job_info: null,
legacy_dashboard_id: null,
genie_space_id: null
}
executed_as string Nama pengguna atau perwakilan layanan yang hak istimewanya digunakan untuk menjalankan pernyataan. example@databricks.com
executed_as_user_id string ID pengguna atau perwakilan layanan yang hak istimewanya digunakan untuk menjalankan pernyataan. 2967555311742259

Menampilkan profil kueri untuk rekaman

Untuk menavigasi ke profil kueri berdasarkan rekaman dalam tabel riwayat kueri, lakukan hal berikut:

  1. Identifikasi catatan yang menarik, lalu salin rekaman statement_id.
  2. Referensikan rekaman workspace_id untuk memastikan Anda masuk ke ruang kerja yang sama dengan rekaman.
  3. Klik Ikon RiwayatRiwayat Kueri di bilah samping ruang kerja.
  4. Di bidang ID Pernyataan, tempelkan statement_id pada rekaman.
  5. Klik nama kueri. Gambaran umum metrik kueri muncul.
  6. Klik Lihat profil kueri.

Mewujudkan riwayat kueri dari metastore Anda

Kode berikut dapat digunakan untuk membuat tugas yang dijalankan setiap jam, setiap hari, atau setiap minggu untuk mematerialisasikan riwayat kueri dari sebuah metastore. Sesuaikan variabel HISTORY_TABLE_PATH dan LOOKUP_PERIOD_DAYS.

from delta.tables import *
from pyspark.sql.functions import *
from pyspark.sql.types import *

HISTORY_TABLE_PATH = "jacek.default.history"
# Adjust the lookup period according to your job schedule
LOOKUP_PERIOD_DAYS = 1

def table_exists(table_name):
    try:
        spark.sql(f"describe table {table_name}")
        return True
    except Exception:
        return False

def save_as_table(table_path, df, schema, pk_columns):
    deltaTable = (
        DeltaTable.createIfNotExists(spark)
        .tableName(table_path)
        .addColumns(schema)
        .execute()
    )

    merge_statement = " AND ".join([f"logs.{col}=newLogs.{col}" for col in pk_columns])

    result = (
        deltaTable.alias("logs")
        .merge(
            df.alias("newLogs"),
            f"{merge_statement}",
        )
        .whenNotMatchedInsertAll()
        .whenMatchedUpdateAll()
        .execute()
    )
    result.show()

def main():
    df = spark.read.table("system.query.history")
    if table_exists(HISTORY_TABLE_PATH):
        df = df.filter(f"update_time >= CURRENT_DATE() - INTERVAL {LOOKUP_PERIOD_DAYS} days")
    else:
        print(f"Table {HISTORY_TABLE_PATH} does not exist. Proceeding to copy the whole source table.")

    save_as_table(
        HISTORY_TABLE_PATH,
        df,
        df.schema,
        ["workspace_id", "statement_id"]
    )

main()