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.history
konumunda 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 WAREHOUSE SERVERLESS_COMPUTE olur. |
{ 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 , COPY ve 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:
- İlgi alanının kaydını belirleyin ve kaydın
statement_id
öğesini kopyalayın. - Kayıtla
workspace_id
aynı çalışma alanında oturum açtığınızdan emin olmak için kayıtlara başvurun. - Çalışma alanı kenar çubuğunda Sorgu Geçmişi'ne tıklayın
.
-
Deyim Kimliği alanına, kaydına yapıştırın
statement_id
. - Sorgunun adına tıklayın. Sorgu ölçümlerine genel bir bakış görüntülenir.
- 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()