Systemtabellreferens för frågehistorik
Viktigt!
Den här systemtabellen finns i offentlig förhandsversion. För att få åtkomst till tabellen måste schemat vara aktiverat i din system
katalog. Mer information finns i Aktivera systemtabellscheman.
Den här artikeln innehåller information om systemtabellen för frågehistorik, inklusive en disposition av tabellens schema.
Viktigt!
Om du vill komma åt systemtabellen för frågehistorik måste du aktivera schemat för query
. Anvisningar om hur du aktiverar systemscheman finns i Aktivera systemtabellscheman.
Tabellsökväg: Den här systemtabellen finns på system.query.history
.
Använda frågehistoriktabellen
Frågehistoriktabellen innehåller poster för frågor som utförs med SQL-lager eller serverlös beräkning för notebooks och uppgifter. Tabellen innehåller kontoomfattande poster från alla arbetsytor i samma region som du kommer åt tabellen från.
Som standard har endast administratörer åtkomst till systemtabellen. Om du vill dela tabellens data 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.
Systemtabellschema för frågehistorik
Tabellen för frågehistorik använder följande schema:
Kolumnnamn | Datatyp | beskrivning | Exempel |
---|---|---|---|
account_id |
sträng | ID för kontot. | 11e22ba4-87b9-4cc2 -9770-d10b894b7118 |
workspace_id |
sträng | ID för arbetsytan 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 värden ä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 den typ av beräkningsresurs som används för att köra -instruktionen och ID:t för resursen i förekommande fall. 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. På grund av lagringsbegränsningar komprimeras längre instruktionstextvärden. Även med komprimering kan du nå en teckengräns. |
SELECT 1 |
statement_type |
sträng | Instruktionstypen. Till exempel: ALTER , COPY och INSERT . |
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 värden förväntas förbli statiska över tid kan detta inte garanteras. | Databricks SQL Editor |
client_driver |
sträng | Anslutningen som används för att ansluta till Databricks för att köra uttalandet. 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. Tidszonsinformation 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. Tidszonsinformation registreras i slutet av värdet med +00:00 som representerar UTC. |
2022-12-05T00:00:00.000+00:00 |
update_time |
timestamp | Tiden då uttalandet senast tog emot en förloppsuppdatering. Tidszonsinformation registreras i slutet av värdet med +00:00 som representerar UTC. |
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. | { 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 |
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ågehistoriktabellen gö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()