Aracılığıyla paylaş


Sistem tablosu sorgu geçmişi referansı

Önemli

Bu sistem tablosu Genel Önizlemeiçindedir. Tabloya erişmek için şemanın system kataloğunuzda etkinleştirilmesi gerekir. Daha fazla bilgi için bkz. sistem tablosu şemalarını etkinleştirme.

Bu makale, sorgu geçmişi sistem tablosuyla ilgili bilgileri ve tablonun şemasının ana hattını içerir.

Önemli

Sorgu geçmişi sistem tablosuna erişmek için query şemasını etkinleştirmeniz gerekir. Sistem şemalarını etkinleştirme yönergeleri için bkz. sistem tablosu şemalarını etkinleştirme.

Tablo yolu: Bu sistem tablosu system.query.historykonumunda bulunur.

Sorgu geçmişi tablosunu kullanma

Sorgu geçmişi tablosu, SQL ambarları kullanılarak çalıştırılacak sorgular veya not defterleri için sunucusuz işlem ve işlerikayıtları içerir. Tablo, tabloya erişebileceğiniz aynı bölgedeki tüm çalışma alanlarındaki hesap genelindeki kayıtları içerir.

Varsayılan olarak, sistem tablosuna yalnızca yöneticiler erişebilir. Tablonun verilerini bir kullanıcı veya grupla paylaşmak isterseniz Databricks, her kullanıcı veya grup için dinamik bir görünüm oluşturmanızı önerir. Bkz. Dinamik görünüm oluşturma.

Sorgu geçmişi sistem tablosu şeması

Sorgu geçmişi tablosu aşağıdaki şemayı kullanır:

Sütun adı Veri türü Açıklama Örnek
account_id Dize Hesabın kimliği. 11e22ba4-87b9-4cc2
-9770-d10b894b7118
workspace_id Dize Sorgunun çalıştırıldığı çalışma alanının kimliği. 1234567890123456
statement_id Dize deyiminin yürütülmesini benzersiz olarak tanımlayan kimlik. Sorgu Geçmişi kullanıcı arabiriminde deyim yürütmeyi bulmak için bu kimliği kullanabilirsiniz. 7a99b43c-b46c-432b
-b0a7-814217701909
session_id Dize Spark oturum kimliği. 01234567-cr06-a2mp
-t0nd-a14ecfb5a9c2
execution_status Dize Deyimi sonlandırma durumu. Olası değerler şunlardır:
- FINISHED: yürütme başarılı oldu
- FAILED: yürütme, eşlik eden hata iletisinde açıklanan hata nedeniyle başarısız oldu
- CANCELED: yürütme iptal edildi
FINISHED
compute struct Bir ifadeyi çalıştırmak için kullanılan hesaplama kaynağının türünü ve uygun olduğunda kaynağın kimliğini temsil eden bir yapı. type Değer veya WAREHOUSESERVERLESS_COMPUTEolur. {
type: WAREHOUSE,
cluster_id: NULL,
warehouse_id: ec58ee3772e8d305
}
executed_by_user_id Dize deyimini çalıştıran kullanıcının kimliği. 2967555311742259
executed_by Dize Deyimi çalıştıran kullanıcının e-posta adresi veya kullanıcı adı. example@databricks.com
statement_text Dize SQL deyiminin metni. Müşteri tarafından yönetilen anahtarları yapılandırdıysanız, statement_text boş olur. Depolama sınırlamaları nedeniyle, uzun deyim metin değerleri sıkıştırılır. Sıkıştırmada bile karakter sınırına ulaşabilirsiniz. SELECT 1
statement_type Dize Deyim türü. Örneğin: ALTER, COPYve INSERT. SELECT
error_message Dize Hata koşulunu açıklayan ileti. Müşteri tarafından yönetilen anahtarları yapılandırdıysanız, error_message boş olur. [INSUFFICIENT_PERMISSIONS]
Insufficient privileges:
User does not have
permission SELECT on table
'default.nyctaxi_trips'.
client_application Dize deyimini çalıştıran istemci uygulaması. Örneğin: Databricks SQL Düzenleyicisi, Tableau ve Power BI. Bu alan, istemci uygulamaları tarafından sağlanan bilgilerden türetilir. Değerlerin zaman içinde statik kalması beklense de, bu garanti edilemez. Databricks SQL Editor
client_driver Dize Databricks'e bağlanmak ve komutu çalıştırmak için kullanılan bağlayıcı. Örneğin: Go için Databricks SQL Sürücüsü, Databricks ODBC Sürücüsü, Databricks JDBC Sürücüsü. Databricks JDBC Driver
total_duration_ms bigint Deyimin milisaniye cinsinden toplam yürütme süresi (sonuç getirme süresi hariç). 1
waiting_for_compute_duration_ms bigint İşlem kaynaklarının milisaniye cinsinden sağlanmasını beklerken harcanan süre. 1
waiting_at_capacity_duration_ms bigint Milisaniye cinsinden kullanılabilir işlem kapasitesi için kuyrukta beklerken harcanan süre. 1
execution_duration_ms bigint Deyimi milisaniye cinsinden yürütmek için harcanan süre. 1
compilation_duration_ms bigint Meta verileri yüklemek ve deyimi milisaniye cinsinden iyileştirmek için harcanan süre. 1
total_task_duration_ms bigint Tüm görev sürelerinin milisaniye cinsinden toplamı. Bu süre, sorguyu tüm düğümlerin tüm çekirdeklerinde çalıştırmak için geçen süreyi temsil eder. Birden çok görev paralel olarak yürütülürse duvar saati süresinden önemli ölçüde daha uzun olabilir. Görevler kullanılabilir düğümleri beklerse duvar saati süresinden daha kısa olabilir. 1
result_fetch_duration_ms bigint Yürütme tamamlandıktan sonra deyim sonuçlarını getirerek milisaniye cinsinden harcanan süre. 1
start_time timestamp Databricks'in isteği aldığı zaman. Saat dilimi bilgileri, değerin sonunda kaydedilir ve +00:00 UTC'yi temsil eder. 2022-12-05T00:00:00.000+0000
end_time timestamp Sonuç getirme zamanı hariç, deyimi yürütmesinin sona ermiş olduğu saat. Saat dilimi bilgileri, değerin sonunda kaydedilir ve +00:00 UTC'yi temsil eder. 2022-12-05T00:00:00.000+00:00
update_time timestamp Beyanın son ilerleme güncellemesini aldığı zaman. Saat dilimi bilgileri, değerin sonunda kaydedilir ve +00:00 UTC'yi temsil eder. 2022-12-05T00:00:00.000+00:00
read_partitions bigint Ayıklama işleminden sonra okunan bölüm sayısı. 1
pruned_files bigint Budama dosya sayısı. 1
read_files bigint Ayıklama işleminden sonra okunan dosyaların sayısı. 1
read_rows bigint Deyimi tarafından okunan toplam satır sayısı. 1
produced_rows bigint Deyimi tarafından döndürülen toplam satır sayısı. 1
read_bytes bigint Deyimi tarafından bayt cinsinden okunan verilerin toplam boyutu. 1
read_io_cache_percent int GÇ önbelleğinden okunan kalıcı verilerin bayt yüzdesi. 50
from_result_cache boolean TRUE , deyim sonucunun önbellekten getirildiğini gösterir. TRUE
spilled_local_bytes bigint Deyimi yürütülürken diske geçici olarak yazılan verilerin bayt cinsinden boyutu. 1
written_bytes bigint Bulut nesne depolamasına yazılan kalıcı verilerin bayt cinsinden boyutu. 1
shuffle_read_bytes bigint Ağ üzerinden gönderilen bayt cinsinden toplam veri miktarı. 1
query_source struct İşler, not defterleri veya panolar gibi bu deyimin yürütülmesinde yer alan bir veya daha fazla Databricks varlığı temsil eden anahtar-değer çiftlerini içeren bir yapı. Bu alan yalnızca Databricks varlıklarını kaydeder. {
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 Dize deyimini çalıştırmak için ayrıcalığı kullanılan kullanıcı veya hizmet sorumlusunun adı. example@databricks.com
executed_as_user_id Dize deyimini çalıştırmak için ayrıcalığı kullanılan kullanıcı veya hizmet sorumlusunun kimliği. 2967555311742259

Kaydın sorgu profilini görüntüleme

Sorgu geçmişi tablosundaki bir kaydı temel alarak sorgunun sorgu profiline gitmek için aşağıdakileri yapın:

  1. İlgi alanının kaydını belirleyin ve kaydın statement_idöğesini kopyalayın.
  2. Kayıtla workspace_id aynı çalışma alanında oturum açtığınızdan emin olmak için kayıtlara başvurun.
  3. Çalışma alanı kenar çubuğunda Sorgu Geçmişi'ne tıklayın Geçmiş Simgesi.
  4. Deyim Kimliği alanına, kaydına yapıştırınstatement_id.
  5. Sorgunun adına tıklayın. Sorgu ölçümlerine genel bir bakış görüntülenir.
  6. Sorgu profilini göster'e tıklayın.

Meta veri deponuzdan sorgu geçmişinin somutlaştırılması

Aşağıdaki kod, meta veri deposundan sorgu geçmişini oluşturmak için saatlik, günlük veya haftalık çalışan bir iş oluşturmak için kullanılabilir. HISTORY_TABLE_PATH ve LOOKUP_PERIOD_DAYS değişkenlerini buna göre ayarlayın.

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()