Delen via


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 systemcatalog. 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 queryschemainschakelen. 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 WAREHOUSESERVERLESS_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, COPYenINSERT. 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:

  1. Identificeer de interesserecord en kopieer de record statement_id.
  2. Verwijs naar de records workspace_id om ervoor te zorgen dat u bent aangemeld bij dezelfde werkruimte als de record.
  3. Klik op Pictogram GeschiedenisQuerygeschiedenis in de zijbalk van de werkruimte.
  4. Plak de record in het statement_id.
  5. Klik op de naam van een query. Er wordt een overzicht van metrische querygegevens weergegeven.
  6. 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()