Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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 |
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:
|
{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:
- Identificeer de record van interesse en kopieer record
statement_id. - Verwijs naar het record's
workspace_idzodat u zich in dezelfde werkruimte bevindt als het record. - Klik op
Querygeschiedenis in de zijbalk van de werkruimte.
- Plak het in het veld
statement_idop het record. - Klik op de naam van een query. Er wordt een overzicht van metrische querygegevens weergegeven.
- 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 alspruned_files_bytes + read_files_bytes. -
table_files: Het totale aantal bestanden in de gescande tabellen. Berekend alsread_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_infostruct:{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_idenalert_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 neejob_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}