Referência à tabela de histórico de consultas do sistema

Este artigo inclui informações sobre a tabela do sistema de histórico de consultas, incluindo um resumo do esquema da tabela.

Caminho da tabela: Esta tabela do sistema encontra-se em system.query.history.

Disponibilidade de recordes

Os registos estão normalmente disponíveis dentro de uma hora. A entrega de dados para novos espaços de trabalho pode demorar mais do que isto.

Quando a tabela de histórico de consultas utiliza chaves geridas pelo cliente, esta disponibilidade não se aplica. Ver Leitura de campos encriptados.

Usando a tabela de histórico de consultas

A tabela de histórico de consultas inclui registos para consultas executadas usando SQL warehouses, computação serverless para notebooks e jobs, e pipelines Lakeflow que utilizam computação serverless ou clássica . A tabela inclui registos de todos os espaços de trabalho da sua conta que estão na mesma região do espaço de trabalho que usa para aceder à tabela.

Por padrão, apenas os administradores têm acesso à tabela do sistema. Se você quiser compartilhar os dados da tabela com um usuário ou grupo, o Databricks recomenda a criação de uma exibição dinâmica para cada usuário ou grupo. Consulte Criar uma vista dinâmica.

Esquema da tabela do sistema do histórico de consultas

A tabela de histórico de consultas usa o seguinte esquema:

Nome da coluna Tipo de dados Description Example
account_id cadeia (de caracteres) ID da conta. 11e22ba4-87b9-4cc2
-9770-d10b894b7118
workspace_id cadeia (de caracteres) A ID do espaço de trabalho onde a consulta foi executada. 1234567890123456
statement_id cadeia (de caracteres) O ID que identifica exclusivamente a execução da instrução. Você pode usar este ID para localizar a execução da instrução na interface de utilizador do Histórico de Consultas. 7a99b43c-b46c-432b
-b0a7-814217701909
session_id cadeia (de caracteres) O ID da sessão do Spark. 01234567-cr06-a2mp
-t0nd-a14ecfb5a9c2
execution_status cadeia (de caracteres) O estado de terminação da declaração. Os valores possíveis são:
  • FINISHED: a execução foi bem sucedida
  • FAILED: a execução falhou com o motivo da falha descrito na mensagem de erro que acompanha o documento
  • CANCELED: a execução foi cancelada
FINISHED
compute estrutura Um struct que representa o tipo de recurso de computação usado para executar a instrução e a ID do recurso, quando aplicável. O type valor é um dos seguintes:
  • WAREHOUSE: corre num armazém SQL.
  • SERVERLESS_COMPUTE: funcionam em computação serverless, como notebooks, jobs ou pipelines serverless Lakeflow.
  • CLASSIC_COMPUTE: executa em computação clássica, como pipelines clássicos de Lakeflow.
    O warehouse_id campo só é preenchido quando type é WAREHOUSE. O cluster_id campo nunca é povoado.
{
type: WAREHOUSE,
cluster_id: NULL,
warehouse_id: ec58ee3772e8d305
}
executed_by_user_id cadeia (de caracteres) O ID do utilizador que executou a instrução. 2967555311742259
executed_by cadeia (de caracteres) O endereço de e-mail ou nome de usuário do usuário que executou a instrução. example@databricks.com
statement_text cadeia (de caracteres) Texto da instrução SQL. Por defeito, este campo devolve, <REDACTED> a menos que seja administrador de conta ou membro do databricks_pii_access grupo ao nível da conta. Ver texto da declaração mascarada Acessar. Se tiver chaves geridas pelo cliente configuradas, consulte Leitura de campos encriptados. Devido a limitações de armazenamento, valores de texto de instrução mais longos são compactados. Mesmo com a compressão, você pode atingir um limite de caracteres. SELECT 1
statement_type cadeia (de caracteres) O tipo de instrução. Por exemplo: ALTER, COPYe INSERT. SELECT
error_message cadeia (de caracteres) Mensagem descrevendo a condição de erro. Se tiver chaves geridas pelo cliente configuradas, consulte Leitura de campos encriptados. [INSUFFICIENT_PERMISSIONS]
Insufficient privileges:
User does not have
permission SELECT on table
'default.nyctaxi_trips'.
client_application cadeia (de caracteres) Aplicativo cliente que executou a instrução. Por exemplo: Databricks SQL Editor, Tableau e Power BI. Este campo é derivado de informações fornecidas por aplicativos cliente. Embora se espere que os valores permaneçam estáticos ao longo do tempo, isso não pode ser garantido. Databricks SQL Editor
client_driver cadeia (de caracteres) O conector usado para se conectar ao Databricks para executar a instrução. Por exemplo: Databricks SQL Driver for Go, Databricks ODBC Driver, Databricks JDBC Driver. Databricks JDBC Driver
cache_origin_statement_id cadeia (de caracteres) Para resultados de consulta obtidos do cache, este campo contém a ID da instrução da consulta que originalmente inseriu o resultado no cache. Se o resultado da consulta não for recuperado do cache, este campo conterá a ID da instrução da própria consulta. 01f034de-5e17-162d
-a176-1f319b12707b
total_duration_ms bigint Tempo total de execução da instrução em milissegundos (excluindo o tempo de busca de resultados). 1
waiting_for_compute_duration_ms bigint Tempo gasto aguardando que os recursos de computação sejam provisionados em milissegundos. 1
waiting_at_capacity_duration_ms bigint Tempo gasto na fila de espera pela capacidade de computação disponível em milissegundos. 1
execution_duration_ms bigint Tempo gasto na execução da instrução em milissegundos. 1
compilation_duration_ms bigint Tempo gasto carregando metadados e otimizando a instrução em milissegundos. 1
total_task_duration_ms bigint A soma de todas as durações de tarefas em milissegundos. Esse tempo representa o tempo combinado necessário para executar a consulta em todos os núcleos de todos os nós. Pode ser significativamente maior do que a duração do relógio de parede se várias tarefas forem executadas em paralelo. Pode ser menor do que a duração do relógio de parede se as tarefas aguardarem pelos nós disponíveis. 1
result_fetch_duration_ms bigint Tempo gasto, em milissegundos, para buscar os resultados da instrução após a conclusão da execução. 1
start_time carimbo de data/hora A hora em que a Databricks recebeu a solicitação. As informações de fuso horário são registradas no final do valor com +00:00 representando UTC. 2022-12-05T00:00:00.000+0000
end_time carimbo de data/hora A hora em que a execução da instrução terminou, excluindo o tempo de obtenção dos resultados. As informações de fuso horário são registradas no final do valor com +00:00 representando UTC. 2022-12-05T00:00:00.000+00:00
update_time carimbo de data/hora A última vez que a declaração recebeu uma atualização de progresso. As informações de fuso horário são registradas no final do valor com +00:00 representando UTC. 2022-12-05T00:00:00.000+00:00
read_partitions bigint O número de partições lidas após a poda. 1
pruned_files bigint O número de arquivos removidos. 1
read_files bigint O número de arquivos lidos após a poda. 1
read_rows bigint Número total de linhas lidas pela instrução. 1
produced_rows bigint Número total de linhas retornadas pela instrução. 1
read_bytes bigint Tamanho total dos dados lidos pelo comando em bytes. 1
pruned_files_bytes bigint O número de bytes de ficheiros podados após a partição de tabelas e a poda de ficheiros. 1
read_files_bytes bigint O número de bytes de ficheiros lidos após a partição da tabela e a poda dos ficheiros. 1
read_io_cache_percent int A porcentagem de bytes de dados persistentes lidos do cache de E/S. 50
from_result_cache boolean TRUE indica que o resultado da instrução foi obtido no cache. TRUE
spilled_local_bytes bigint Tamanho dos dados, em bytes, gravados temporariamente no disco durante a execução da instrução. 1
written_bytes bigint O tamanho em bytes de dados persistentes gravados no armazenamento de objetos na nuvem. 1
written_rows bigint O número de linhas de dados persistentes gravados no armazenamento de objetos na nuvem. 1
written_files bigint Número de arquivos de dados persistentes gravados no armazenamento de objetos na nuvem. 1
shuffle_read_bytes bigint A quantidade total de dados em bytes enviados pela rede. 1
query_source estrutura Uma estrutura que contém pares chave-valor que representam entidades Databricks que estiveram envolvidas na execução desta instrução, como tarefas, blocos de anotações ou painéis. Este campo regista apenas entidades 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 estrutura Uma estrutura que contém parâmetros nomeados e posicionais usados em consultas parametrizadas. Os parâmetros nomeados são representados como pares chave-valor que mapeiam os nomes de parâmetros aos valores. Os parâmetros posicionais são representados como uma lista onde o índice indica a posição do parâmetro. Apenas um tipo (nomeado ou posicional) pode estar presente ao mesmo tempo. {
named_parameters: {
"param-1": 1,
"param-2": "hello"
},
pos_parameters: null,
is_truncated: false
}
executed_as cadeia (de caracteres) O nome do utilizador ou entidade de serviço cuja prerrogativa foi usada para executar a declaração. example@databricks.com
executed_as_user_id cadeia (de caracteres) O ID do utilizador ou principal de serviço cujo privilégio foi usado para executar a instrução. 2967555311742259
query_tags map<string, string> Etiquetas-chave-valor personalizadas aplicadas à consulta para agrupamento, filtragem e atribuição de custos. As etiquetas podem ser definidas usando parâmetros de configuração de sessão ou a SET QUERY_TAGS instrução SQL. Etiquetas somente de chave têm um valor null. Esta coluna é preenchida apenas para consultas executadas em armazéns SQL. Ver etiquetas de consulta. {
"team": "engineering",
"cost_center": "701",
"env": "prod"
}

Aceder ao texto da declaração mascarada

As instruções SQL podem conter informações sensíveis, como nomes de clientes, endereços de email ou outras informações pessoais identificáveis (PII). O statement_text campo devolve <REDACTED> por defeito. Administradores de contas e membros do databricks_pii_access grupo podem ler o texto completo da consulta.

Para criar o grupo e gerir a sua membresia e permissões, consulte Criar e gerir o databricks_pii_access grupo.

Resolução de problemas de máscaras de coluna sobrepostas

Se já aplicou uma máscara de coluna a statement_text, por exemplo, com uma política de controlo de acesso baseada em atributos (ABAC), consultas contra system.query.history podem falhar com COLUMN_MASKS_FEATURE_NOT_SUPPORTED.MULTIPLE_MASKS. Apenas uma máscara de coluna pode aplicar-se a uma coluna para um dado utilizador.

Para resolver o conflito, tens de ser administrador da metastore ou ter MANAGE disponível. Use filtros e máscaras conflitantes para identificar políticas sobrepostas, depois estreite ou remova a máscara em statement_text.

Leitura de campos encriptados

Quando os espaços de trabalho utilizam chaves geridas pelo cliente para serviços geridos, os statement_text campos e error_message na tabela do sistema são encriptados por defeito. Isto deve-se ao facto de as tabelas do sistema armazenarem dados e podem ser acedidas por todos os espaços de trabalho da região. Para desencriptar e exibir campos de tabelas de sistema encriptadas, os administradores de contas devem adicionar uma configuração de chave ao system próprio catálogo. Deve ter MANAGE permissão no system catálogo para realizar esta operação.

Quando a tabela de histórico de consultas utiliza chaves geridas pelo cliente, a disponibilidade típica de registos em Disponibilidade de Registo não se aplica.

Advertência

Adicionar uma configuração de chave ao system catálogo remove qualquer concessão do Unity Catalog que tenha aplicado anteriormente ao system.query esquema e à system.query.history tabela, redefinindo-os para as concessões padrão. Como os subsídios são ao nível da metastore, isto afeta todos os espaços de trabalho ligados à metastore, incluindo os espaços de trabalho onde não executou o comando. Depois de ativar as chaves geridas pelo cliente, volte a aplicar quaisquer concessões personalizadas em system.query e system.query.history.

Podes criar uma nova chave ou reutilizar uma já existente. Usando o ID da chave completo, execute o seguinte comando:

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"
        }
      }
}'

Espere até 24 horas para que a habilitação seja completada. Após a conclusão da habilitação, system.query.history começa a mostrar os campos encriptados para todos os novos registos. Registos criados antes da habilitação não podem ser desencriptados.

Observação

O system catálogo é diferente para cada metastore, pelo que a chave gerida pelo cliente deve ser configurada separadamente para cada metastore. No entanto, metastores na mesma região podem ser configurados para usar a mesma chave.

Exibir o perfil de consulta para um registro

Para navegar até o perfil de consulta de uma consulta com base em um registro na tabela de histórico de consultas, faça o seguinte:

  1. Identifique o registo de interesse e, em seguida, copie o statement_id.
  2. Faça referência ao registro workspace_id para garantir que você esteja conectado ao mesmo espaço de trabalho que o registro.
  3. Clique no ícone Histórico.Histórico de consultas na barra lateral do espaço de trabalho.
  4. No campo ID da declaração, cole o statement_id no registo.
  5. Clique no nome de uma consulta. Uma visão geral das métricas de consulta é exibida.
  6. Clique em Ver perfil da consulta.

Compreender métricas de varrimento

A tabela de histórico de consultas contém múltiplas métricas recolhidas durante a varredura. Pode calcular as seguintes métricas adicionais a partir das colunas da tabela:

  • table_bytes: O tamanho total comprimido, em bytes, dos ficheiros nas tabelas digitalizadas. Calculado como pruned_files_bytes + read_files_bytes.
  • table_files: O número total de ficheiros nas tabelas digitalizadas. Calculado como read_files + pruned_files.

Observação

read_bytes não é diretamente comparável a table_bytes. table_bytes, read_files_bytes, e pruned_files_bytes são tamanhos comprimidos de ficheiros no disco. Ao contrário desses tamanhos de ficheiro, read_bytes mede os dados realmente lidos após a poda de colunas e grupos de linhas. Combina dados comprimidos lidos do armazenamento em nuvem com dados não comprimidos servidos a partir da cache do disco, e pode aumentar ainda mais quando as leituras são tentadas novamente. Como resultado, read_bytes pode exceder table_bytes.

Noções básicas sobre query_source coluna

A coluna query_source contém um conjunto de identificadores únicos de Azure Databricks entidades envolvidas na execução da instrução.

Se a query_source coluna contiver vários IDs, isso significa que a execução da instrução foi acionada por várias entidades. Por exemplo, um resultado de trabalho pode disparar um alerta que chama uma consulta SQL. Neste exemplo, todos os três IDs serão preenchidos em query_source. Os valores desta coluna não são ordenados por ordem de execução.

As possíveis fontes de consulta são:

Combinações válidas de query_source

Os exemplos a seguir mostram como a query_source coluna é preenchida dependendo de como a consulta é executada:

  • As consultas executadas durante uma execução de trabalho incluem uma estrutura preenchida 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
    }

  • Consultas dos alertas incluem sql_query_id e 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
    }

  • As consultas dos painéis incluem um dashboard_id, mas não 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
    }