Pular para o conteúdo principal

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

info

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.

important

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

account_id

string

ID do site account.

11e22ba4-87b9-4cc2
-9770-d10b894b7118

workspace_id

string

O ID do site workspace onde a consulta foi executada.

1234567890123456

statement_id

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.

7a99b43c-b46c-432b
-b0a7-814217701909

session_id

string

A ID da sessão do Spark.

01234567-cr06-a2mp
-t0nd-a14ecfb5a9c2

execution_status

string

O estado de rescisã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 anexa
- CANCELED: a execução foi cancelada

FINISHED

compute

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 type será WAREHOUSE ou SERVERLESS_COMPUTE.

{
type: WAREHOUSE,
cluster_id: NULL,
warehouse_id: ec58ee3772e8d305
}

executed_by_user_id

string

O ID do usuário que executou a declaração.

2967555311742259

executed_by

string

O endereço email ou o nome de usuário do usuário que executou a declaração.

example@databricks.com

statement_text

string

Texto da instrução SQL. Se o senhor tiver configurado a chave de gerenciar o cliente, statement_text estará vazio. Devido às limitações de armazenamento, valores de texto de declaração mais longos são compactados. Mesmo com a compressão, você pode atingir um limite de caracteres.

SELECT 1

statement_type

string

O tipo de declaração. Por exemplo: ALTER, COPY e INSERT.

SELECT

error_message

string

Mensagem descrevendo a condição do erro. Se o senhor tiver configurado a chave de gerenciar o cliente, error_message estará vazio.

[INSUFFICIENT_PERMISSIONS]
Insufficient privileges:
User does not have
permission SELECT on table
'default.nyctaxi_trips'.

client_application

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.

Databricks SQL Editor

client_driver

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.

Databricks JDBC Driver

total_duration_ms

bigint

Tempo total de execução da instrução em milissegundos (excluindo o tempo de busca do resultado).

1

waiting_for_compute_duration_ms

bigint

Tempo de espera para que o compute recurso seja provisionado, em milissegundos.

1

waiting_at_capacity_duration_ms

bigint

Tempo de espera na fila para a capacidade compute disponível, em milissegundos.

1

execution_duration_ms

bigint

Tempo gasto executando a instrução em milissegundos.

1

compilation_duration_ms

bigint

Tempo gasto carregando metadados e otimizando a declaração em milissegundos.

1

total_task_duration_ms

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.

1

result_fetch_duration_ms

bigint

Tempo gasto, em milissegundos, na busca dos resultados da declaração após o término 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 busca do resultado. 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 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 +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 declaração.

1

produced_rows

bigint

Número total de linhas retornadas pela instrução.

1

read_bytes

bigint

Tamanho total dos dados lidos pela instrução em bytes.

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 do 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 dos 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

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.

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

executed_as

string

O nome do usuário ou da entidade de serviço cujo privilégio foi usado para executar a declaração.

example@databricks.com

executed_as_user_id

string

O ID do usuário ou da entidade de serviço cujo privilégio foi usado para executar a declaração.

2967555311742259

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

  1. Identifique o registro de interesse e copie o statement_id do registro.
  2. Consulte o workspace_id do registro para garantir que o senhor esteja conectado ao mesmo workspace que o registro.
  3. Clique em Ícone de história Query History na barra lateral workspace.
  4. No campo ID da declaração , cole o statement_id no registro.
  5. Clique no nome de uma consulta. É exibida uma visão geral das métricas de consulta.
  6. 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.

Python
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()