Referentie voor querygeschiedenissysteem table
Belangrijk
Dit systeem table bevindt zich in openbare preview-versie. Als u toegang wilt krijgen tot de table, moet de schema zijn ingeschakeld in uw system
catalog. Voor meer informatie, zie Systeem table schema's inschakelen.
Dit artikel bevat informatie over het querygeschiedenissysteem table, inclusief een overzicht van de table's schema.
Belangrijk
Als u toegang wilt krijgen tot het querygeschiedenissysteem table, moet u de query
schemainschakelen. Voor instructies over het inschakelen van systeemschema's, zie Systeemschema's inschakelen table schema's.
Table pad: dit systeem table bevindt zich op system.query.history
.
De querygeschiedenis gebruiken table
De records van de querygeschiedenis table omvatten invoer voor query's die worden uitgevoerd met behulp van SQL-warehouses of serverloze berekeningen voor notebooks en taken. De table bevat records voor het hele account uit alle werkruimten in dezelfde regio waaruit u toegang hebt tot de table.
Standaard hebben alleen beheerders toegang tot het systeem table. Als u de gegevens van de tablewilt delen met een gebruiker of groep, raadt Databricks aan om een dynamische weergave te maken voor elke gebruiker of groep. Zie Een dynamische weergave maken.
Systeem voor querygeschiedenis tableschema
De querygeschiedenis table gebruikt de volgende schema:
Column naam | Gegevenstype | Beschrijving | Voorbeeld |
---|---|---|---|
account_id |
tekenreeks | Id van het account. | 11e22ba4-87b9-4cc2 -9770-d10b894b7118 |
workspace_id |
tekenreeks | De ID van de werkruimte where waarin de query is uitgevoerd. | 1234567890123456 |
statement_id |
tekenreeks | De id waarmee de uitvoering van de instructie uniek wordt geïdentificeerd. U kunt deze id gebruiken om de uitvoering van de instructie te vinden in de gebruikersinterface van querygeschiedenis . | 7a99b43c-b46c-432b -b0a7-814217701909 |
session_id |
tekenreeks | De Spark-sessie-id. | 01234567-cr06-a2mp -t0nd-a14ecfb5a9c2 |
execution_status |
tekenreeks | De beëindigingsstatus van de instructie. Mogelijke values zijn: - FINISHED : uitvoering is geslaagd- FAILED : uitvoering is mislukt met de reden voor de fout die wordt beschreven in het bijbehorende foutbericht- CANCELED : uitvoering is geannuleerd |
FINISHED |
compute |
Struct | Een struct die het type rekenresource aangeeft dat wordt gebruikt voor het uitvoeren van de instructie en de id van de resource where van toepassing. De type waarde is of WAREHOUSE SERVERLESS_COMPUTE . |
{ type: WAREHOUSE, cluster_id: NULL, warehouse_id: ec58ee3772e8d305 } |
executed_by_user_id |
tekenreeks | De id van de gebruiker die de instructie heeft uitgevoerd. | 2967555311742259 |
executed_by |
tekenreeks | Het e-mailadres of de gebruikersnaam van de gebruiker die de instructie heeft uitgevoerd. | example@databricks.com |
statement_text |
tekenreeks | Tekst van de SQL-instructie. Als u door de klant beheerde sleutels hebt geconfigureerd, statement_text is deze leeg. |
SELECT 1 |
statement_type |
tekenreeks | Het instructietype. Bijvoorbeeld: ALTER , COPY enINSERT . |
SELECT |
error_message |
tekenreeks | Bericht met een beschrijving van de foutvoorwaarde. Als u door de klant beheerde sleutels hebt geconfigureerd, error_message is deze leeg. |
[INSUFFICIENT_PERMISSIONS] Insufficient privileges: User does not have permission SELECT on table 'default.nyctaxi_trips'. |
client_application |
tekenreeks | Clienttoepassing die de instructie heeft uitgevoerd. Bijvoorbeeld: Databricks SQL Editor, Tableau en Power BI. Dit veld is afgeleid van informatie die wordt verstrekt door clienttoepassingen. Hoewel values naar verwachting in de loop van de tijd statisch blijft, kan dit niet worden gegarandeerd. | Databricks SQL Editor |
client_driver |
tekenreeks | De connector die wordt gebruikt om verbinding te maken met Azure Databricks om de instructie uit te voeren. Bijvoorbeeld: Databricks SQL-stuurprogramma voor Go, Databricks ODBC-stuurprogramma, Databricks JDBC-stuurprogramma. | Databricks JDBC Driver |
total_duration_ms |
bigint | Totale uitvoeringstijd van de instructie in milliseconden (exclusief tijd voor het ophalen van resultaten). | 1 |
waiting_for_compute_duration_ms |
bigint | Tijd die is besteed aan het wachten op het inrichten van rekenresources in milliseconden. | 1 |
waiting_at_capacity_duration_ms |
bigint | Tijd die is besteed aan wachten in de wachtrij voor de beschikbare rekencapaciteit in milliseconden. | 1 |
execution_duration_ms |
bigint | De tijd die is besteed aan het uitvoeren van de instructie in milliseconden. | 1 |
compilation_duration_ms |
bigint | Tijd besteed aan het laden van metagegevens en het optimaliseren van de instructie in milliseconden. | 1 |
total_task_duration_ms |
bigint | De som van alle taakduurs in milliseconden. Deze tijd vertegenwoordigt de gecombineerde tijd die nodig was om de query uit te voeren op alle kernen van alle knooppunten. Het kan aanzienlijk langer zijn dan de duur van de wandklok als meerdere taken parallel worden uitgevoerd. Het kan korter zijn dan de duur van de wandklok als taken wachten op beschikbare knooppunten. | 1 |
result_fetch_duration_ms |
bigint | De tijd die in milliseconden is besteed, haalt de instructieresultaten op nadat de uitvoering is voltooid. | 1 |
start_time |
timestamp | Het tijdstip waarop Databricks de aanvraag heeft ontvangen.
Timezone-gegevens worden aan het einde van de waarde vastgelegd, waarbij +00:00 UTC vertegenwoordigt. |
2022-12-05T00:00:00.000+0000 |
end_time |
timestamp | Het tijdstip waarop de uitvoering van de instructie is beëindigd, met uitzondering van de ophaaltijd van resultaten.
Timezone gegevens worden aan het einde van de waarde vastgelegd, waarbij +00:00 UTC vertegenwoordigt. |
2022-12-05T00:00:00.000+00:00 |
update_time |
timestamp | Het tijdstip waarop de verklaring voor het laatst voortgang heeft ontvangen update.
Timezone-gegevens worden vastgelegd aan het eind van de waarde, waarbij +00:00 UTC vertegenwoordigt. |
2022-12-05T00:00:00.000+00:00 |
read_partitions |
bigint | Het aantal partities dat na het verwijderen is gelezen. | 1 |
pruned_files |
bigint | Het aantal gesnoeide bestanden. | 1 |
read_files |
bigint | Het aantal bestanden dat is gelezen na het snoeien. | 1 |
read_rows |
bigint | Het totale aantal rijen dat door de instructie is gelezen. | 1 |
produced_rows |
bigint | Totaal aantal rijen dat door de instructie wordt geretourneerd. | 1 |
read_bytes |
bigint | De totale grootte van gegevens die worden gelezen door de instructie in bytes. | 1 |
read_io_cache_percent |
int | Het percentage bytes aan permanente gegevens dat wordt gelezen uit de IO-cache. | 50 |
from_result_cache |
boolean |
TRUE geeft aan dat het instructieresultaat is opgehaald uit de cache. |
TRUE |
spilled_local_bytes |
bigint | Grootte van gegevens, in bytes, tijdelijk naar schijf geschreven tijdens het uitvoeren van de instructie. | 1 |
written_bytes |
bigint | De grootte in bytes aan permanente gegevens die naar de opslag van cloudobjecten zijn geschreven. | 1 |
shuffle_read_bytes |
bigint | De totale hoeveelheid gegevens in bytes die via het netwerk worden verzonden. | 1 |
query_source |
Struct | Een struct die sleutel-waardeparen bevat die een of meer Databricks-entiteiten vertegenwoordigen die betrokken waren bij de uitvoering van deze instructie, zoals taken, notebooks of dashboards. Dit veld registreert alleen Databricks-entiteiten. | { job_info: { job_id: 64361233243479 job_run_id: 887406461287882 job_task_key: “job_task_1” job_task_run_id: 110378410199121 } |
executed_as |
tekenreeks | De naam van de gebruiker of service-principal waarvan de bevoegdheid is gebruikt om de instructie uit te voeren. | example@databricks.com |
executed_as_user_id |
tekenreeks | De id van de gebruiker of service-principal waarvan de bevoegdheid is gebruikt om de instructie uit te voeren. | 2967555311742259 |
Het queryprofiel voor een record weergeven
Ga als volgt te werk om naar het queryprofiel van een query te navigeren op basis van een record in de querygeschiedenis table:
- Identificeer de interesserecord en kopieer de record
statement_id
. - Verwijs naar de records
workspace_id
om ervoor te zorgen dat u bent aangemeld bij dezelfde werkruimte als de record. - Klik op Querygeschiedenis in de zijbalk van de werkruimte.
- Plak de record in het
statement_id
. - Klik op de naam van een query. Er wordt een overzicht van metrische querygegevens weergegeven.
- Klik op Queryprofiel weergeven.
De querygeschiedenis van uw metastore concreet maken
De volgende code kan worden gebruikt om een taak te maken die elk uur, dagelijks of wekelijks wordt uitgevoerd om de querygeschiedenis te materialiseren vanuit een metastore. Pas de HISTORY_TABLE_PATH
en LOOKUP_PERIOD_DAYS
variabelen dienovereenkomstig aan.
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()