Frågehistoriksystem table referens
Viktigt!
Det här systemet table finns i offentlig förhandsversion. Om du vill komma åt tablemåste schema aktiveras i din system
catalog. Mer information finns i Aktivera systemscheman table.
Den här artikeln innehåller information om frågehistoriksystemet table, inklusive en översikt över tableschema.
Viktigt!
Om du vill komma åt frågehistoriksystemet tablemåste du aktivera query
schema. Anvisningar om hur du aktiverar systemscheman finns i Aktivera systemscheman table.
Table sökväg: Det här systemet table finns på system.query.history
.
Använda frågehistoriken table
Frågehistoriken table innehåller poster för varje SQL-instruktion som körs med hjälp av SQL-lager. table innehåller kontoomfattande poster från alla arbetsytor i samma region som du har åtkomst till table.
Som standard har endast administratörer åtkomst till systemet table. Om du vill dela tabledata med en användare eller grupp rekommenderar Databricks att du skapar en dynamisk vy för varje användare eller grupp. Se Skapa en dynamisk vy.
System för frågehistorik tableschema
Frågehistoriken table använder följande schema:
Column namn | Datatyp | beskrivning | Exempel |
---|---|---|---|
account_id |
sträng | ID för kontot. | 11e22ba4-87b9-4cc2 -9770-d10b894b7118 |
workspace_id |
sträng | ID för arbetsytan where där frågan kördes. | 1234567890123456 |
statement_id |
sträng | Det ID som unikt identifierar körningen av -instruktionen. Du kan använda det här ID:t för att hitta instruktionskörningen i användargränssnittet för frågehistorik . | 7a99b43c-b46c-432b -b0a7-814217701909 |
session_id |
sträng | Spark-sessions-ID. | 01234567-cr06-a2mp -t0nd-a14ecfb5a9c2 |
execution_status |
sträng | Instruktionens avslutningstillstånd. Möjliga values är: - FINISHED : körningen lyckades- FAILED : körningen misslyckades med orsaken till felet som beskrivs i det medföljande felmeddelandet- CANCELED : körningen avbröts |
FINISHED |
compute |
Struct | En struct som representerar typen av beräkningsresurs som används för att köra instruktionen och ID:t för resursen where som är tillämpligt. Värdet type blir antingen WAREHOUSE eller SERVERLESS_COMPUTE . |
{ type: WAREHOUSE, cluster_id: NULL, warehouse_id: ec58ee3772e8d305 } |
executed_by_user_id |
sträng | ID:t för användaren som körde -instruktionen. | 2967555311742259 |
executed_by |
sträng | E-postadressen eller användarnamnet för användaren som körde -instruktionen. | example@databricks.com |
statement_text |
sträng | Text för SQL-instruktionen. Om du har konfigurerat kundhanterade nycklar statement_text är det tomt. |
SELECT 1 |
statement_type |
sträng | Instruktionstypen. Till exempel: ALTER , COPY ochINSERT . |
SELECT |
error_message |
sträng | Meddelande som beskriver feltillståndet. Om du har konfigurerat kundhanterade nycklar error_message är det tomt. |
[INSUFFICIENT_PERMISSIONS] Insufficient privileges: User does not have permission SELECT on table 'default.nyctaxi_trips'. |
client_application |
sträng | Klientprogram som körde -instruktionen. Till exempel: Databricks SQL Editor, Tableau och Power BI. Det här fältet härleds från information som tillhandahålls av klientprogram. Även om values förväntas förbli statiska över tid kan detta inte garanteras. | Databricks SQL Editor |
client_driver |
sträng | Anslutningsappen som används för att ansluta till Azure Databricks för att köra -instruktionen. Till exempel: Databricks SQL Driver for Go, Databricks ODBC Driver, Databricks JDBC Driver. | Databricks JDBC Driver |
total_duration_ms |
bigint | Total körningstid för -instruktionen i millisekunder ( exklusive resultathämtningstid ). | 1 |
waiting_for_compute_duration_ms |
bigint | Tid som ägnas åt att vänta på att beräkningsresurser ska etableras i millisekunder. | 1 |
waiting_at_capacity_duration_ms |
bigint | Tid i kö för tillgänglig beräkningskapacitet i millisekunder. | 1 |
execution_duration_ms |
bigint | Tid som ägnas åt att köra -instruktionen i millisekunder. | 1 |
compilation_duration_ms |
bigint | Tid som ägnas åt att läsa in metadata och optimera -instruktionen i millisekunder. | 1 |
total_task_duration_ms |
bigint | Summan av alla varaktigheter för aktiviteter i millisekunder. Den här gången representerar den kombinerade tid det tog att köra frågan över alla kärnor i alla noder. Det kan vara betydligt längre än varaktigheten för väggklockan om flera uppgifter körs parallellt. Den kan vara kortare än varaktigheten för väggklockan om aktiviteter väntar på tillgängliga noder. | 1 |
result_fetch_duration_ms |
bigint | Tid i millisekunder som hämtar instruktionsresultatet när körningen har slutförts. | 1 |
start_time |
timestamp | Tiden då Databricks tog emot begäran.
Timezone information registreras i slutet av värdet med +00:00 som representerar UTC. |
2022-12-05T00:00:00.000+0000 |
end_time |
timestamp | Den tid då instruktionens körning avslutades, exklusive resultathämtningstid.
Timezone-information registreras vid slutet av värdet, där +00:00 representerar UTC. |
2022-12-05T00:00:00.000+00:00 |
update_time |
timestamp | Den tid då uttalandet senast tog emot framsteg update.
Timezone-information registreras i slutet av värdet, där +00:00 representerar UTC-tid. |
2022-12-05T00:00:00.000+00:00 |
read_partitions |
bigint | Antalet partitioner som lästs efter beskärning. | 1 |
pruned_files |
bigint | Antalet beskärde filer. | 1 |
read_files |
bigint | Antalet filer som lästs efter beskärning. | 1 |
read_rows |
bigint | Totalt antal rader som lästs av -instruktionen. | 1 |
produced_rows |
bigint | Totalt antal rader som returneras av -instruktionen. | 1 |
read_bytes |
bigint | Total storlek på data som lästs av instruktionen i byte. | 1 |
read_io_cache_percent |
heltal | Procentandelen byte av beständiga data som lästs från I/O-cachen. | 50 |
from_result_cache |
boolean |
TRUE anger att instruktionsresultatet hämtades från cacheminnet. |
TRUE |
spilled_local_bytes |
bigint | Storleken på data, i byte, skrivs tillfälligt till disk när instruktionen körs. | 1 |
written_bytes |
bigint | Storleken i byte av beständiga data som skrivits till molnobjektlagring. | 1 |
shuffle_read_bytes |
bigint | Den totala mängden data i byte som skickas via nätverket. | 1 |
query_source |
Struct | En struct som innehåller nyckel/värde-par som representerar en eller flera Databricks-entiteter som var inblandade i körningen av den här instruktionen, till exempel jobb, notebook-filer eller instrumentpaneler. Det här fältet registrerar endast Databricks-entiteter. | { job_info: { job_id: 64361233243479 job_run_id: 887406461287882 job_task_key: “job_task_1” job_task_run_id: 110378410199121 } |
executed_as |
sträng | Namnet på användaren eller tjänstens huvudnamn vars behörighet användes för att köra -instruktionen. | example@databricks.com |
executed_as_user_id |
sträng | ID:t för användaren eller tjänstens huvudnamn vars behörighet användes för att köra -instruktionen. | 2967555311742259 |
Visa frågeprofilen för en post
Om du vill navigera till en frågas frågeprofil baserat på en post i frågehistoriken tablegör du följande:
- Identifiera intresseposten och kopiera sedan postens
statement_id
. - Referera till postens
workspace_id
för att se till att du är inloggad på samma arbetsyta som posten. - Klicka på Frågehistorik i arbetsytans sidofält.
- I fältet Instruktions-ID klistrar du in på
statement_id
posten. - Klicka på namnet på en fråga. En översikt över frågemått visas.
- Klicka på Se frågeprofil.
Materialisera frågehistoriken från metaarkivet
Följande kod kan användas för att skapa ett jobb som körs varje timme, varje dag eller varje vecka för att materialisera frågehistoriken från ett metaarkiv. Justera variablerna HISTORY_TABLE_PATH
och LOOKUP_PERIOD_DAYS
därefter.
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()