Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Important
Questa tabella di sistema si trova in versione di anteprima pubblica.
Questo articolo include informazioni sulla tabella di sistema della cronologia delle query, compresa una sintesi dello schema della tabella.
percorso tabella: questa tabella di sistema si trova in system.query.history.
Uso della tabella cronologia query
La tabella della cronologia delle query include i record per le query eseguite utilizzando SQL Warehouses o Serverless Compute per i notebook e i processi . La tabella include record globali dell'account di tutti gli spazi di lavoro nella stessa regione da cui si accede alla tabella.
Per impostazione predefinita, solo gli amministratori hanno accesso alla tabella di sistema. Se si desidera condividere i dati della tabella con un utente o un gruppo, Databricks consiglia di creare una visualizzazione dinamica per ogni utente o gruppo. Vedere Creare una visualizzazione dinamica.
Schema della cronologia delle query nella tabella di sistema
La tabella della cronologia delle query utilizza la seguente struttura:
| Nome della colonna | Tipo di dati | Description | Example |
|---|---|---|---|
account_id |
string | ID dell'account. | 11e22ba4-87b9-4cc2-9770-d10b894b7118 |
workspace_id |
string | ID dell'area di lavoro in cui è stata eseguita la query. | 1234567890123456 |
statement_id |
string | ID che identifica in modo univoco l'esecuzione dell'istruzione. È possibile usare questo ID per trovare l'esecuzione dell'istruzione nell'interfaccia utente della cronologia query . | 7a99b43c-b46c-432b-b0a7-814217701909 |
session_id |
string | L'ID sessione Spark. | 01234567-cr06-a2mp-t0nd-a14ecfb5a9c2 |
execution_status |
string | Stato di terminazione della dichiarazione. I valori possibili sono:
|
FINISHED |
compute |
struct | Una struct che rappresenta il tipo di risorsa di calcolo utilizzata per eseguire il statement e l'ID della risorsa, dove applicabile. Il type valore sarà WAREHOUSE o SERVERLESS_COMPUTE. |
{type: WAREHOUSE,cluster_id: NULL,warehouse_id: ec58ee3772e8d305} |
executed_by_user_id |
string | ID dell'utente che ha eseguito l'istruzione. | 2967555311742259 |
executed_by |
string | Indirizzo di posta elettronica o nome utente dell'utente che ha eseguito la dichiarazione. | example@databricks.com |
statement_text |
string | Testo dell'istruzione SQL. Di default, questo campo restituisce <REDACTED> a meno che tu non sia un amministratore dell'account o un membro del databricks_pii_access gruppo a livello account. Vedi Accesso testo della dichiarazione mascherata. Se sono state configurate chiavi gestite dal cliente, statement_text è vuoto. A causa delle limitazioni di archiviazione, i valori di testo delle istruzioni più lunghi vengono compressi. Anche con la compressione, è possibile raggiungere un limite di caratteri. |
SELECT 1 |
statement_type |
string | Tipo di dichiarazione. Ad esempio: ALTER, COPYe INSERT. |
SELECT |
error_message |
string | Messaggio che descrive la condizione di errore. Se sono state configurate chiavi gestite dal cliente, error_message è vuoto. |
[INSUFFICIENT_PERMISSIONS] Insufficient privileges: User does not have permission SELECT on table 'default.nyctaxi_trips'. |
client_application |
string | Applicazione client che ha eseguito l'istruzione. Ad esempio, Editor SQL di Databricks, Tableau e Power BI. Questo campo è derivato dalle informazioni fornite dalle applicazioni client. Sebbene i valori rimangano statici nel corso del tempo, questo non può essere garantito. | Databricks SQL Editor |
client_driver |
string | Connettore usato per connettersi a Databricks per eseguire l'istruzione . Ad esempio: Driver SQL di Databricks per Go, driver ODBC di Databricks, driver JDBC di Databricks. | Databricks JDBC Driver |
cache_origin_statement_id |
string | Per i risultati della query recuperati dalla cache, questo campo contiene l'ID istruzione della query che originariamente ha inserito il risultato nella cache. Se il risultato della query non viene recuperato dalla cache, questo campo contiene l'ID della dichiarazione della query stessa. | 01f034de-5e17-162d-a176-1f319b12707b |
total_duration_ms |
bigint | Tempo di esecuzione totale dell'istruzione in millisecondi (escluso il tempo di recupero dei risultati). | 1 |
waiting_for_compute_duration_ms |
bigint | Tempo impiegato in attesa del provisioning delle risorse di calcolo in millisecondi. | 1 |
waiting_at_capacity_duration_ms |
bigint | Tempo impiegato in attesa in coda per la capacità di calcolo disponibile in millisecondi. | 1 |
execution_duration_ms |
bigint | Tempo impiegato per l'esecuzione dell'istruzione in millisecondi. | 1 |
compilation_duration_ms |
bigint | Tempo impiegato per caricare i metadati e ottimizzare l'istruzione in millisecondi. | 1 |
total_task_duration_ms |
bigint | Somma di tutte le durate dell'attività in millisecondi. Questo tempo rappresenta il tempo combinato impiegato per eseguire la query in tutti i core di tutti i nodi. Può essere significativamente più lungo della durata del tempo a muro se più attività vengono eseguite in parallelo. Può essere più breve della durata del tempo in tempo reale se le attività attendono i nodi disponibili. | 1 |
result_fetch_duration_ms |
bigint | Tempo trascorso, in millisecondi, durante il recupero dei risultati dell'istruzione al termine dell'esecuzione. | 1 |
start_time |
timestamp | Ora in cui Databricks ha ricevuto la richiesta. Le informazioni sul fuso orario vengono registrate alla fine del valore con +00:00 che rappresenta l'ora UTC. |
2022-12-05T00:00:00.000+0000 |
end_time |
timestamp | Ora di termine dell'esecuzione della dichiarazione, escluso il tempo di recupero dei dati. Le informazioni sul fuso orario vengono registrate alla fine del valore con +00:00 che rappresenta l'ora UTC. |
2022-12-05T00:00:00.000+00:00 |
update_time |
timestamp | Ora dell'ultimo aggiornamento del resoconto. Le informazioni sul fuso orario vengono registrate alla fine del valore con +00:00 che rappresenta l'ora UTC. |
2022-12-05T00:00:00.000+00:00 |
read_partitions |
bigint | Numero di partizioni lette dopo la potatura. | 1 |
pruned_files |
bigint | Numero di file eliminati. | 1 |
read_files |
bigint | Numero di file letti dopo la potatura. | 1 |
read_rows |
bigint | Numero totale di righe lette dalla query. | 1 |
produced_rows |
bigint | Numero totale di righe restituite dall'istruzione. | 1 |
read_bytes |
bigint | Dimensione totale dei dati letti dalla dichiarazione in byte. | 1 |
read_io_cache_percent |
int | La percentuale di byte di dati persistenti letti dalla memoria cache di I/O. | 50 |
from_result_cache |
boolean |
TRUE indica che il risultato dell'istruzione è stato recuperato dalla cache. |
TRUE |
spilled_local_bytes |
bigint | Dimensioni dei dati, in byte, scritte temporaneamente su disco durante l'esecuzione dell'istruzione. | 1 |
written_bytes |
bigint | Dimensione in byte dei dati persistenti scritti nello storage di oggetti cloud. | 1 |
written_rows |
bigint | Numero di righe di dati persistenti scritti nell'archiviazione di oggetti cloud. | 1 |
written_files |
bigint | Numero di file di dati persistenti scritti nell'archiviazione di oggetti cloud. | 1 |
shuffle_read_bytes |
bigint | Quantità totale di dati in byte inviati in rete. | 1 |
query_source |
struct | Un struct che contiene coppie chiave-valore che rappresentano le entità Databricks coinvolte nella dichiarazione, ad esempio job, notebook o dashboard. Questo campo registra solo le entità di Databricks. | {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 | Struct contenente parametri denominati e posizionali usati nelle query parametrizzate. I parametri denominati vengono rappresentati come coppie chiave-valore che eseguono il mapping dei nomi dei parametri ai valori. I parametri posizionali sono rappresentati come un elenco in cui l'indice indica la posizione del parametro. Un solo tipo (denominato o posizionale) può essere presente alla volta. | {named_parameters: { "param-1": 1, "param-2": "hello"},pos_parameters: null,is_truncated: false} |
executed_as |
string | Nome dell'utente o dell'entità del servizio il cui privilegio è stato usato per eseguire l'istruzione. | example@databricks.com |
executed_as_user_id |
string | ID dell'utente o del principale del servizio il cui privilegio è stato utilizzato per eseguire il comando. | 2967555311742259 |
query_tags |
map<string, string> |
Tag chiave-valore personalizzati applicati alla query per raggruppamento, filtro e attribuzione dei costi. I tag possono essere impostati usando i parametri di configurazione della sessione o l'istruzione SET QUERY_TAGS SQL. I tag di sola chiave hanno un null valore. Questa colonna viene popolata solo per le query eseguite in SQL Warehouse. Consulta Tag di query. |
{"team": "engineering","cost_center": "701","env": "prod"} |
Accedi al testo della dichiarazione mascherata
Le istruzioni SQL possono contenere informazioni sensibili come nomi clienti, indirizzi email o altre informazioni personali identificabili (PII). Il statement_text campo restituisce <REDACTED> di default. Gli account admin e i membri del databricks_pii_access gruppo possono leggere il testo SQL completo.
Il databricks_pii_access gruppo non è creato per te. Un amministratore dell'account deve crearlo. Il nome del gruppo è distinto dalla mazzevolezza e la maiuscola.
Crea il gruppo e gestisci l'iscrizione utilizzando uno qualsiasi di questi metodi:
- Console account. Vedi Aggiungi gruppi al tuo account.
- API dei gruppi account. Vedi Gestisci gruppi usando l'API.
- Sistema per la Gestione dell'Identità Cross-domain (SCIM). Consulta Sincronizzare utenti e gruppi da Microsoft Entra ID utilizzando SCIM.
- Gestione automatica dell'identità. Vedere Gestione automatica delle identità.
Important
Crea databricks_pii_access nella console dell'account, oppure provina dal tuo fornitore di identità come amministratore dell'account. Non creare questo gruppo dalle impostazioni di amministrazione dello spazio di lavoro. Gli amministratori di workspace che creano un gruppo ricevono automaticamente il permesso di Gestione su quel gruppo e possono cambiare chi vede il testo della query non mascherato.
Se databricks_pii_access è stato creato dalle impostazioni di amministratore dello spazio di lavoro, un amministratore dell'account può revocare il permesso di gestione dell'amministratore dello spazio sul gruppo:
- Accedere alla console dell'account come amministratore dell'account.
- Nella barra laterale, fare clic su Gestione utenti.
- Nella scheda Gruppi , clicca
databricks_pii_accesssu . - Fare clic sulla scheda Permessi.
- Rimuovi la Gestione dagli amministratori dello spazio di lavoro. Vedere Gestire le autorizzazioni per un gruppo.
Dopo aver aggiunto membri, i presidi possono databricks_pii_access leggere senza maschera statement_text. Rivedi dashboard, avvisi e job che leggono statement_text e confermano che il principale che gestisce ogni carico di lavoro è nel gruppo.
Annotazioni
Gli amministratori dell'area di lavoro non sono automaticamente membri di databricks_pii_access.
Poiché le istruzioni SQL possono contenere informazioni sensibili come nomi clienti, indirizzi email o altre informazioni personali (PII), il statement_text campo restituisce <Redacted> di default per la maggior parte degli utenti.
Solo gli amministratori dell'account e i membri del gruppo databricks_pii_access possono leggere il testo SQL completo. Questi utenti hanno accesso non oscurato al statement_text campo.
Il databricks_pii_access gruppo non è disponibile per impostazione predefinita. Un amministratore dell'account deve creare manualmente il gruppo nel tuo account:
- Come amministratore dell'account, creare un nuovo gruppo.
- Nel campo Nuovo nome gruppo immettere
databricks_pii_access(con distinzione tra maiuscole e minuscole). - Fare clic su Aggiungi gruppo.
- Aggiungere gli utenti o le entità servizio che devono visualizzare il testo SQL completo al gruppo.
Gli amministratori degli account possono anche creare il gruppo utilizzando l'API Account Groups, il provisioning SCIM o la gestione automatica delle identità.
Dopo aver creato il gruppo, l'amministratore dell'account deve aggiungere gli utenti o i principali del servizio che richiedono l'accesso all'intero testo SQL al gruppo. Controllare l'account per dashboard, avvisi e processi che leggono statement_text e confermano che l'entità che esegue i carichi di lavoro appartiene al gruppo.
Rimuovi i permessi di amministrazione accidentali dello spazio di lavoro
Il databricks_pii_access gruppo non dovrebbe essere creato dalle impostazioni amministrative dello spazio di lavoro. Gli amministratori di workspace che creano un gruppo ricevono automaticamente il permesso di Gestione per quel gruppo e possono quindi controllare chi può vedere il testo della query non mascherato.
Se databricks_pii_access è stato creato a livello di workspace nel tuo account, un amministratore dell'account dovrebbe revocare il permesso di gestione dell'amministratore dello spazio di lavoro sul gruppo:
- Accedere alla console dell'account come amministratore dell'account.
- Nella barra laterale, fare clic su Gestione utenti.
- Nella scheda Gruppi , clicca
databricks_pii_accesssu . - Fare clic sulla scheda Permessi.
- Rimuovi la Gestione dagli amministratori dello spazio di lavoro. Vedere Gestire le autorizzazioni per un gruppo.
Risoluzione dei problemi delle maschere a colonna sovrapposte
Se hai già applicato una column mask a statement_text, ad esempio con una policy di controllo di accesso basata su attributi (ABAC), le query contro system.query.history possono fallire con COLUMN_MASKS_FEATURE_NOT_SUPPORTED.MULTIPLE_MASKS. Solo una maschera di colonna può applicarsi a una colonna per un dato utente.
Per risolvere il conflitto, devi essere un amministratore del metastore o avere MANAGE qualcosa da pensare. Usa le Regole per più filtri e mascherine per identificare le politiche sovrapposte, poi restringi o rimuovi la mascherina su statement_text.
Lettura dei campi crittografati
Important
Questa funzionalità è in Anteprima Pubblica.
Quando le aree di lavoro usano chiavi gestite dal cliente per i servizi gestiti, i statement_text campi e error_message nella tabella di sistema vengono crittografati per impostazione predefinita. Ciò è dovuto al fatto che le tabelle di sistema archiviano i dati da e possono essere accessibili da tutte le aree di lavoro nell'area. Per decrittografare e visualizzare i campi della tabella di sistema crittografati, gli amministratori dell'account devono aggiungere una configurazione della chiave al system catalogo stesso. Per eseguire questa operazione, è necessario disporre dell'autorizzazione MANAGE sul system catalogo.
Warning
L'aggiunta di una configurazione chiave al system catalogo rimuove tutte le concessioni di system.query Catalogo Unity applicate in precedenza allo schema e alla system.query.history tabella, reimpostandole sulle concessioni predefinite. Poiché le concessioni sono a livello di metastore, questo influisce su tutte le aree di lavoro collegate al metastore, incluse le aree di lavoro in cui non è stato eseguito il comando. Dopo aver abilitato le chiavi gestite dal cliente, riapplicare le concessioni personalizzate in system.query e system.query.history.
È possibile creare una nuova chiave o riutilizzare una chiave esistente. Usando l'ID chiave completo, eseguire il comando seguente:
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"
}
}
}'
Attendere fino a 24 ore per system.query.history iniziare a visualizzare i campi crittografati.
Annotazioni
Il system catalogo è diverso per ogni metastore, quindi la chiave gestita dal cliente deve essere configurata separatamente per ogni metastore. Tuttavia, i metastore nella stessa area possono essere configurati per l'uso della stessa chiave.
::::
Visualizza il profilo di query per un record
Per passare al profilo di una query basato su un record nella tabella della cronologia delle query, seguire i passaggi seguenti:
- Identifica il record di interesse, quindi copia il
statement_iddel record. - Fare riferimento al record
workspace_idper assicurarsi di essere connessi alla stessa area di lavoro del record. - Fare clic
Cronologia delle query nella barra laterale dell'area di lavoro.
- Nel campo Statement ID incolla
statement_idal record. - Fare clic sul nome di una query. Viene visualizzata una panoramica delle metriche di query.
- Fare clic su Vedere profilo delle query.
Comprendere la colonna query_source
La colonna query_source contiene un set di identificatori univoci di Azure Databricks entità coinvolte nell'esecuzione dell'istruzione.
Se la query_source colonna contiene più ID, significa che l'esecuzione dell'istruzione è stata attivata da più entità. Ad esempio, un risultato del lavoro può attivare un avviso che chiama una query SQL. In questo esempio tutti e tre gli ID verranno popolati all'interno di query_source. I valori di questa colonna non vengono ordinati in base all'ordine di esecuzione.
Le possibili origini di query sono:
- alert_id: istruzione attivata da un avviso
- sql_query_id: istruzione eseguita dall'interno di questa sessione dell'editor SQL
- dashboard_id: istruzione eseguita da un dashboard
- genie_space_id: istruzione eseguita da un agente Genie
- notebook_id: istruzione eseguita da un notebook
- job_info.job_id: istruzione eseguita all'interno di un processo
- job_info.job_run_id: istruzione eseguita da un'esecuzione di un lavoro
- job_info.job_task_run_id: Istruzione eseguita all'interno di un'esecuzione di un compito lavorativo
Combinazioni valide di query_source
Gli esempi seguenti illustrano come la query_source colonna viene popolata a seconda della modalità di esecuzione della query:
Le query eseguite durante un'esecuzione di un processo includono una struttura popolata
job_info.{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}Le query dagli avvisi includono un
sql_query_ide unalert_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}Le interrogazioni dai cruscotti includono
dashboard_id, ma nonjob_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}