Referentie systeemtabel voor queryhistorie

Dit artikel bevat informatie over de tabel met querygeschiedenissystemen, inclusief een overzicht van het schema van de tabel.

tabelpad: deze systeemtabel bevindt zich op system.query.history.

Beschikbaarheid van platen

Records zijn meestal binnen een uur beschikbaar. Datalevering voor nieuwe werkplekken kan langer duren dan dit.

Wanneer de querygeschiedenistabel klantbeheerde sleutels gebruikt, geldt deze beschikbaarheid niet. Zie Versleutelde velden lezen.

De querygeschiedenistabel gebruiken

De querygeschiedenistabel bevat records voor queries die worden uitgevoerd met SQL-warehouses, serverless compute voor notebooks en jobs, en Lakeflow-pijplijnen die serverless of classic compute gebruiken. De tabel bevat records van alle werkruimtes in je account die in dezelfde regio liggen als de werkruimte die je gebruikt om toegang te krijgen tot de tabel.

Standaard hebben alleen beheerders toegang tot de systeemtabel. Als u de gegevens van de tabel wilt delen met een gebruiker of groep, raadt Databricks u aan een dynamische weergave te maken voor elke gebruiker of groep. Zie Een dynamische weergave maken.

Schema van systeemtabel voor querygeschiedenis

De tabel querygeschiedenis maakt gebruik van het volgende schema:

Kolomnaam Gegevenstype Description Example
account_id string Id van het account. 11e22ba4-87b9-4cc2
-9770-d10b894b7118
workspace_id string De id van de werkruimte waarop de query is uitgevoerd. 1234567890123456
statement_id string De ID die de uitvoering van de instructie uniek identificeert. U kunt deze ID gebruiken om de uitvoering van de query te vinden in de Querygeschiedenis-interface. 7a99b43c-b46c-432b
-b0a7-814217701909
session_id string De Spark-sessie-id. 01234567-cr06-a2mp
-t0nd-a14ecfb5a9c2
execution_status string De beëindigingsstatus van de verklaring. Mogelijke waarden 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 om de instructie en de id van de resource uit te voeren, indien van toepassing. De type waarde is een van:
  • WAREHOUSE: draait op een SQL-warehouse.
  • SERVERLESS_COMPUTE: draaien op serverless compute, zoals notebooks, jobs of serverless Lakeflow-pijplijnen.
  • CLASSIC_COMPUTE: draaien op klassieke rekenkracht, zoals klassieke Lakeflow-pijpleidingen.
    Het warehouse_id veld wordt alleen gevuld wanneer type is WAREHOUSE. Het cluster_id veld is nooit bevolkt.
{
type: WAREHOUSE,
cluster_id: NULL,
warehouse_id: ec58ee3772e8d305
}
executed_by_user_id string De ID van de gebruiker die de statement heeft uitgevoerd. 2967555311742259
executed_by string Het e-mailadres of de gebruikersnaam van de gebruiker die de instructie heeft uitgevoerd. example@databricks.com
statement_text string Tekst van de SQL-instructie. Standaard wordt dit veld teruggegeven <REDACTED> , tenzij je accountbeheerder bent of lid van de databricks_pii_access account-level groep. Zie Access gemaskeerde verklaringstekst. Als u klantbeheerde sleutels heeft geconfigureerd, zie dan 'Lezen versleutelde velden'. Vanwege opslagbeperkingen worden tekstwaarden voor langere instructies gecomprimeerd. Zelfs met compressie bereikt u mogelijk een tekenlimiet. SELECT 1
statement_type string Het verklaringstype. Bijvoorbeeld: ALTER, COPYen INSERT. SELECT
error_message string Bericht met een beschrijving van de fouttoestand. Als u klantbeheerde sleutels heeft geconfigureerd, zie dan 'Lezen versleutelde velden'. [INSUFFICIENT_PERMISSIONS]
Insufficient privileges:
User does not have
permission SELECT on table
'default.nyctaxi_trips'.
client_application string Clienttoepassing die de opdracht heeft uitgevoerd. Bijvoorbeeld: Databricks SQL Editor, Tableau en Power BI. Dit veld is afgeleid van informatie die wordt verstrekt door clienttoepassingen. Hoewel waarden naar verwachting statisch blijven in de loop van de tijd, kan dit niet worden gegarandeerd. Databricks SQL Editor
client_driver string De connector die wordt gebruikt om verbinding te maken met Databricks ten behoeve van het uitvoeren van de instructie. Bijvoorbeeld: Databricks SQL-stuurprogramma voor Go, Databricks ODBC-stuurprogramma, Databricks JDBC-stuurprogramma. Databricks JDBC Driver
cache_origin_statement_id string Voor queryresultaten die zijn opgehaald uit de cache, bevat dit veld de instructie-id van de query die het resultaat oorspronkelijk in de cache heeft ingevoegd. Als het resultaat van de query niet uit de cache wordt opgehaald, bevat dit veld het instructie-ID van de query zelf. 01f034de-5e17-162d
-a176-1f319b12707b
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 weergegeven tijd op 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. Tijdzonegegevens worden vastgelegd aan het einde van de waarde, waarbij +00:00 UTC vertegenwoordigt. 2022-12-05T00:00:00.000+0000
end_time timestamp Het tijdstip waarop de uitvoering van de opdracht eindigde, exclusief de tijd die nodig is voor het ophalen van resultaten. Tijdzonegegevens worden vastgelegd aan het einde van de waarde, waarbij +00:00 UTC vertegenwoordigt. 2022-12-05T00:00:00.000+00:00
update_time timestamp Het moment waarop de verklaring het laatst een voortgangsupdate heeft ontvangen. Tijdzonegegevens worden vastgelegd aan het einde 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 snoeien 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 statement wordt teruggegeven. 1
read_bytes bigint De totale grootte van gegevens die worden gelezen door de opdracht in bytes. 1
pruned_files_bytes bigint Het aantal bytes bestanden dat wordt geprunt na tabelpartition en bestandspruting. 1
read_files_bytes bigint Het aantal bytes bestanden dat wordt gelezen na tabelpartitie en bestandspruning. 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 resultaat van de instructie 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 van persistente gegevens die naar de cloudopslag zijn geschreven. 1
written_rows bigint Het aantal rijen met permanente gegevens dat naar de opslag van cloudobjecten is geschreven. 1
written_files bigint Aantal bestanden met 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 Databricks-objecten vertegenwoordigen die betrokken waren bij de uitvoering van deze opdracht, zoals taken, notebooks of dashboards. Dit veld registreert alleen Databricks-entiteiten. {
alert_id: 81191d77-184f-4c4e-9998-b6a4b5f4cef1,
sql_query_id: null,
dashboard_id: null,
notebook_id: null,
job_info: {
job_id: 12781233243479,
job_run_id: null,
job_task_run_id: 110373910199121
},
legacy_dashboard_id: null,
genie_space_id: null
}
query_parameters struct Een struct met benoemde en positionele parameters die worden gebruikt in geparameteriseerde query's. Benoemde parameters worden weergegeven als sleutel-waardeparen die parameternamen toewijzen aan waarden. Positionele parameters worden weergegeven als een lijst waarin de index de parameterpositie aangeeft. Slechts één type (benoemd of positioneel) kan tegelijk aanwezig zijn. {
named_parameters: {
"param-1": 1,
"param-2": "hello"
},
pos_parameters: null,
is_truncated: false
}
executed_as string 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 string De id van de gebruiker of service-principal waarvan de bevoegdheid is gebruikt om de instructie uit te voeren. 2967555311742259
query_tags map<string, string> Aangepaste sleutelwaardetags die zijn toegepast op de query voor het groeperen, filteren en toewijzen van kosten. Tags kunnen worden ingesteld met behulp van sessieconfiguratieparameters of de SET QUERY_TAGS SQL-instructie. Tags met alleen sleutels hebben een null waarde. Deze kolom is gevuld voor queries die draaien op SQL-warehouses en serverless compute voor notebooks en jobs. Zie Querytags. {
"team": "engineering",
"cost_center": "701",
"env": "prod"
}

Toegang tot gemaskeerde statementtekst

SQL-statements kunnen gevoelige informatie bevatten zoals klantnamen, e-mailadressen of andere persoonlijk identificeerbare informatie (PII). Het veld keert statement_text standaard terug.<REDACTED> Accountbeheerders en leden van de databricks_pii_access groep kunnen de volledige querytekst lezen.

Om de groep aan te maken en het lidmaatschap en de rechten te beheren, zie Create and manage the databricks_pii_access group.

Probleemoplossing voor overlappende kolommaskers

Als je al een kolommasker hebt toegepast op statement_text, bijvoorbeeld met een attribuutgebaseerd toegangscontrolebeleid (ABAC), kunnen queries tegen system.query.history falen met COLUMN_MASKS_FEATURE_NOT_SUPPORTED.MULTIPLE_MASKS. Er kan slechts één kolommasker op een kolom van toepassing zijn voor een bepaalde gebruiker.

Om het conflict op te lossen, moet je een metastore-admin zijn of een enkele op MANAGE tafel liggen. Gebruik Conflicterende filters en maskers om overlappende beleidsregels te identificeren, en beperk of verwijder vervolgens je masker op statement_text.

Versleutelde velden lezen

Wanneer werkruimten door de klant beheerde sleutels gebruiken voor beheerde services, worden de statement_text en error_message velden in de systeemtabel standaard versleuteld. Dit komt doordat systeemtabellen gegevens opslaan uit en toegankelijk zijn voor alle werkruimten in de regio. Als u versleutelde systeemtabelvelden wilt ontsleutelen en weergeven, moeten accountbeheerders een sleutelconfiguratie toevoegen aan de system catalogus zelf. U moet MANAGE toestemming hebben op de system catalogus om deze bewerking uit te voeren.

Wanneer de querygeschiedenistabel klantbeheerde sleutels gebruikt, geldt de gebruikelijke recordbeschikbaarheid in Recordbeschikbaarheid niet.

Warning

Als u een sleutelconfiguratie toevoegt aan de system catalogus, worden alle Unity Catalog-subsidies verwijderd die u eerder hebt toegepast op het system.query schema en de system.query.history tabel, waarbij u ze opnieuw kunt instellen op de standaardtoekenningen. Omdat subsidies metastore-niveau zijn, is dit van invloed op alle werkruimten die zijn gekoppeld aan de metastore, inclusief werkruimten waarop u de opdracht niet hebt uitgevoerd. Nadat u door de klant beheerde sleutels hebt ingeschakeld, past u eventuele aangepaste subsidies opnieuw toe op system.query en system.query.history.

U kunt een nieuwe sleutel maken of een bestaande sleutel opnieuw gebruiken. Voer de volgende opdracht uit met behulp van de volledige sleutel-id:

curl -v -X PATCH https://my-workspace-url/api/2.1/unity-catalog/catalogs/system -H 'Authorization: Bearer <pat token>' --data '{
"managed_encryption_settings": {
        "azure_key_vault_key_id": "https://my-key-vault.vault.azure.net/keys/my-key-name/my-key-version",
        "azure_encryption_settings": {
          "azure_tenant_id": "my-tenant-id"
        }
      }
}'

Reken tot 24 uur in voor de voltooiing van de activatie. Na voltooiing system.query.history van enablement begint het de versleutelde velden voor alle nieuwe records weer te geven. Records die vóór de enablement zijn aangemaakt, kunnen niet worden ontsleuteld.

Opmerking

De system catalogus verschilt voor elke metastore, dus de door de klant beheerde sleutel moet afzonderlijk worden geconfigureerd voor elke metastore. Metastores in dezelfde regio kunnen echter worden geconfigureerd voor het gebruik van dezelfde sleutel.

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 tabel querygeschiedenis:

  1. Identificeer de record van interesse en kopieer record statement_id.
  2. Verwijs naar het record's workspace_id zodat u zich in dezelfde werkruimte bevindt als het record.
  3. Klik op het pictogram Geschiedenis.Querygeschiedenis in de zijbalk van de werkruimte.
  4. Plak het in het veld statement_id op het record.
  5. Klik op de naam van een query. Er wordt een overzicht van metrische querygegevens weergegeven.
  6. Klik op Bekijk queryprofiel.

Inzicht in scanmetrieken

De querygeschiedenistabel bevat meerdere metrieken die tijdens de scan zijn verzameld. Je kunt de volgende extra metrieken berekenen uit de kolommen van de tabel:

  • table_bytes: De totale gecomprimeerde grootte, in bytes, van de bestanden in de gescande tabellen. Berekend als pruned_files_bytes + read_files_bytes.
  • table_files: Het totale aantal bestanden in de gescande tabellen. Berekend als read_files + pruned_files.

Opmerking

read_bytes is niet direct vergelijkbaar met table_bytes. table_bytes, read_files_bytes, en pruned_files_bytes zijn gecomprimeerde, on-disk bestandsgroottes. In tegenstelling tot die bestandsgroottes read_bytes meet het daadwerkelijk gelezen data na het snoeien van kolom- en rijgroepen. Het combineert gecomprimeerde data die uit cloudopslag wordt gelezen met ongecomprimeerde data die uit de schijfcache wordt geleverd, en het kan verder stijgen wanneer de leesopdrachten opnieuw worden geprobeerd. Als gevolg hiervan kan overschrijden read_bytestable_bytes.

Inzicht in query_source kolom

De kolom query_source bevat een set unieke id's van Azure Databricks entiteiten die betrokken zijn bij de uitvoering van de instructie.

Als de query_source kolom meerdere id's bevat, betekent dit dat de uitvoering van de instructie is geactiveerd door meerdere entiteiten. Een taakresultaat kan bijvoorbeeld een waarschuwing activeren die een SQL-query aanroept. In dit voorbeeld worden alle drie de id's ingevuld binnen query_source. De waarden van deze kolom worden niet gesorteerd op uitvoeringsvolgorde.

Mogelijke querybronnen zijn:

  • alert_id: Instructie geactiveerd vanuit een waarschuwing
  • sql_query_id: Instructie uitgevoerd vanuit deze SQL-editorsessie
  • dashboard_id: Instructie uitgevoerd vanuit een dashboard
  • genie_space_id: Instructie uitgevoerd van een Genie-agent
  • notebook_id: Instructie uitgevoerd vanuit een notebook
  • job_info.job_id: Instructie uitgevoerd binnen een taak
  • job_info.job_run_id: Instructie uitgevoerd vanaf een taakuitvoering
  • job_info.job_task_run_id: Instructie uitgevoerd binnen een taakuitvoering

Geldige combinaties van query_source

In de volgende voorbeelden ziet u hoe de query_source kolom wordt ingevuld, afhankelijk van hoe de query wordt uitgevoerd:

  • Query's die tijdens een taakuitvoering worden uitgevoerd, bevatten een gevulde job_info struct:

    {
    alert_id: null,
    sql_query_id: null,
    dashboard_id: null,
    notebook_id: null,
    job_info: {
    job_id: 64361233243479,
    job_run_id: null,
    job_task_run_id: 110378410199121
    },
    legacy_dashboard_id: null,
    genie_space_id: null
    }

  • Query's van waarschuwingen omvatten een sql_query_id en alert_id:

    {
    alert_id: e906c0c6-2bcc-473a-a5d7-f18b2aee6e34,
    sql_query_id: 7336ab80-1a3d-46d4-9c79-e27c45ce9a15,
    dashboard_id: null,
    notebook_id: null,
    job_info: null,
    legacy_dashboard_id: null,
    genie_space_id: null
    }

  • Query's van dashboards bevatten een dashboard_id, maar nee job_info:

    {
    alert_id: null,
    sql_query_id: null,
    dashboard_id: 887406461287882,
    notebook_id: null,
    job_info: null,
    legacy_dashboard_id: null,
    genie_space_id: null
    }