Referência da tabela do sistema de histórico de consultas
Visualização
Essa tabela do sistema está em Pré-visualização Pública. Para acessar a tabela, o esquema deve estar habilitado em seu catálogo system
. Para obter mais informações, consulte Habilitar esquemas de tabelas do sistema.
Este artigo inclui informações sobre a tabela do sistema de histórico de consultas, incluindo um esboço do esquema da tabela.
Para acessar a tabela do sistema de histórico de consultas, o senhor deve ativar o esquema query
. Para obter instruções sobre como ativar esquemas do sistema, consulte Habilitar esquemas de tabela do sistema.
Caminho da tabela : Essa tabela do sistema está localizada em system.query.history
.
Usando a tabela de histórico de consultas
A tabela de histórico de consultas inclui registros de execução de consultas usando SQL warehouse ou serverless compute para Notebook e Job. A tabela inclui registros de todo o accountde todos os espaços de trabalho na mesma região de onde o senhor acessa a tabela.
Em default, somente os administradores têm acesso à tabela do sistema. Se quiser compartilhar os dados da tabela com um usuário ou grupo, o site Databricks recomenda a criação de um view dinâmico para cada usuário ou grupo. Consulte Criar um site dinâmico view.
Consultar o esquema da tabela do sistema histórico
A tabela de histórico de consulta usa o seguinte esquema:
Nome da coluna | Tipo de dados | Descrição | Exemplo |
---|---|---|---|
| string | ID do site account. |
|
| string | O ID do site workspace onde a consulta foi executada. |
|
| string | O ID que identifica de forma exclusiva a execução da instrução. O senhor pode usar esse ID para localizar a execução da declaração na Query History UI. |
|
| string | A ID da sessão do Spark. |
|
| string | O estado de rescisão da declaração. Os valores possíveis são: |
|
| struct | Uma estrutura que representa o tipo de compute recurso usado para executar a declaração e o ID do recurso, quando aplicável. O valor |
|
| string | O ID do usuário que executou a declaração. |
|
| string | O endereço email ou o nome de usuário do usuário que executou a declaração. |
|
| string | Texto da instrução SQL. Se o senhor tiver configurado a chave de gerenciar o cliente, |
|
| string | O tipo de declaração. Por exemplo: |
|
| string | Mensagem descrevendo a condição do erro. Se o senhor tiver configurado a chave de gerenciar o cliente, |
|
| string | Aplicativo cliente que executa a declaração. Por exemplo: Databricks SQL Editor, Tableau e Power BI. Esse campo é derivado das informações fornecidas pelos aplicativos clientes. Embora se espere que os valores permaneçam estáticos ao longo do tempo, isso não pode ser garantido. |
|
| string | O conector usado para se conectar a Databricks para executar a declaração. Por exemplo: Databricks SQL Driver for Go, Databricks ODBC Driver, Databricks JDBC Driver. |
|
| bigint | Tempo total de execução da instrução em milissegundos (excluindo o tempo de busca do resultado). |
|
| bigint | Tempo de espera para que o compute recurso seja provisionado, em milissegundos. |
|
| bigint | Tempo de espera na fila para a capacidade compute disponível, em milissegundos. |
|
| bigint | Tempo gasto executando a instrução em milissegundos. |
|
| bigint | Tempo gasto carregando metadados e otimizando a declaração em milissegundos. |
|
| bigint | A soma de toda a duração da tarefa em milissegundos. Esse tempo representa o tempo combinado que o senhor levou para executar a consulta em todos os núcleos de todos os nós. Ela pode ser significativamente mais longa do que a duração do relógio de parede se várias tarefas forem executadas em paralelo. Ela pode ser mais curta do que a duração do relógio de parede se a tarefa esperar por nós disponíveis. |
|
| bigint | Tempo gasto, em milissegundos, na busca dos resultados da declaração após o término da execução. |
|
| 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 |
|
| carimbo de data/hora | A hora em que a execução da instrução terminou, excluindo o tempo de busca do resultado. As informações de fuso horário são registradas no final do valor com |
|
| carimbo de data/hora | A hora em que a declaração recebeu pela última vez uma atualização de progresso. As informações de fuso horário são registradas no final do valor com |
|
| bigint | O número de partições lidas após a poda. |
|
| bigint | O número de arquivos removidos. |
|
| bigint | O número de arquivos lidos após a poda. |
|
| bigint | Número total de linhas lidas pela declaração. |
|
| bigint | Número total de linhas retornadas pela instrução. |
|
| bigint | Tamanho total dos dados lidos pela instrução em bytes. |
|
| int | A porcentagem de bytes de dados persistentes lidos do cache de E/S. |
|
| boolean |
|
|
| bigint | Tamanho dos dados, em bytes, gravados temporariamente no disco durante a execução da instrução. |
|
| bigint | O tamanho em bytes dos dados persistentes gravados no armazenamento de objetos na nuvem. |
|
| bigint | A quantidade total de dados em bytes enviados pela rede. |
|
| struct | Uma estrutura que contém par key-value representando uma ou mais entidades Databricks que estavam envolvidas na execução dessa declaração, como Job, Notebook ou dashboards. Esse campo registra apenas entidades da Databricks. |
|
| string | O nome do usuário ou da entidade de serviço cujo privilégio foi usado para executar a declaração. |
|
| string | O ID do usuário ou da entidade de serviço cujo privilégio foi usado para executar a declaração. |
|
visualizar o perfil de consulta de 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
- Identifique o registro de interesse e copie o
statement_id
do registro. - Consulte o
workspace_id
do registro para garantir que o senhor esteja conectado ao mesmo workspace que o registro. - Clique em
Query History na barra lateral workspace.
- No campo ID da declaração , cole o
statement_id
no registro. - Clique no nome de uma consulta. É exibida uma visão geral das métricas de consulta.
- Clique em Ver perfil de consulta .
Materializar o histórico de consultas de seu metastore
O código a seguir pode ser usado para criar um trabalho executado por hora, diariamente ou semanalmente para materializar o histórico de consultas de um metastore. Ajuste as variáveis HISTORY_TABLE_PATH
e LOOKUP_PERIOD_DAYS
adequadamente.
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()