- Categorias:
QUERY_HISTORY , QUERY_HISTORY_BY_*¶
A família QUERY_HISTORY de funções de tabela pode ser usada para consultar o histórico de consultas do Snowflake em várias dimensões:
QUERY_HISTORY retorna consultas dentro de um intervalo de tempo especificado.
QUERY_HISTORY_BY_SESSION retorna consultas dentro de uma sessão e intervalo de tempo especificados.
QUERY_HISTORY_BY_USER retorna consultas enviadas por um usuário especificado dentro de um intervalo de tempo especificado.
QUERY_HISTORY_BY_WAREHOUSE retorna consultas executadas por um warehouse especificado dentro de um intervalo de tempo especificado.
Cada função é otimizada para consulta na dimensão especificada. Os resultados podem ser ainda mais filtrados usando predicados SQL.
Consulte também:
Exibição QUERY_HISTORY (Account Usage) Monitoramento da atividade de consulta com o Histórico de consultas (painel de controle do Snowsight)
Sintaxe¶
QUERY_HISTORY(
[ END_TIME_RANGE_START => <constant_expr> ]
[, END_TIME_RANGE_END => <constant_expr> ]
[, RESULT_LIMIT => <num> ] )
QUERY_HISTORY_BY_SESSION(
[ SESSION_ID => <constant_expr> ]
[, END_TIME_RANGE_START => <constant_expr> ]
[, END_TIME_RANGE_END => <constant_expr> ]
[, RESULT_LIMIT => <num> ] )
QUERY_HISTORY_BY_USER(
[ USER_NAME => '<string>' ]
[, END_TIME_RANGE_START => <constant_expr> ]
[, END_TIME_RANGE_END => <constant_expr> ]
[, RESULT_LIMIT => <num> ] )
QUERY_HISTORY_BY_WAREHOUSE(
[ WAREHOUSE_NAME => '<string>' ]
[, END_TIME_RANGE_START => <constant_expr> ]
[, END_TIME_RANGE_END => <constant_expr> ]
[, RESULT_LIMIT => <num> ] )
Argumentos¶
Todos os argumentos são opcionais.
END_TIME_RANGE_START => constant_expr
, .END_TIME_RANGE_END => constant_expr
Intervalo de tempo (no formato TIMESTAMP_LTZ), dos últimos 7 dias, nos quais a consulta terminou em execução:
Se
END_TIME_RANGE_END
não for especificado, a função retorna todas as consultas, inclusive as que ainda estão em execução.Se
END_TIME_RANGE_END
for CURRENT_TIMESTAMP, a função retorna apenas aquelas consultas que foram concluídas.
Se o intervalo não ficar dentro dos últimos 7 dias, um erro é retornado.
Nota
Se não for especificada a hora de início ou fim, as consultas mais recentes são retornadas até o limite especificado.
SESSION_ID => constant_expr
Aplica-se somente a QUERY_HISTORY_BY_SESSION
O identificador numérico de uma sessão ou CURRENT_SESSION. Somente as consultas da sessão especificada são retornadas.
Padrão: CURRENT_SESSION
USER_NAME => 'string'
Aplica-se somente a QUERY_HISTORY_BY_USER
Uma cadeia de caracteres especificando um nome de login de usuário ou CURRENT_USER. Somente as consultas feitas pelo usuário especificado são retornadas. Observe que o nome de login deve ser delimitado por aspas simples. Além disso, se o nome de login contiver quaisquer espaços, letras maiúsculas e minúsculas misturadas ou caracteres especiais, o nome deve ser delimitado por aspas duplas dentro das aspas simples (por exemplo,
'"User 1"'
vs'user1'
).Padrão: CURRENT_USER
WAREHOUSE_NAME => 'string'
Aplica-se somente a QUERY_HISTORY_BY_WAREHOUSE
Uma cadeia de caracteres especificando um nome de warehouse ou CURRENT_WAREHOUSE. Somente as consultas executadas por esse warehouse são retornadas. Observe que o nome do warehouse deve ser delimitado por aspas simples. Além disso, se o nome do warehouse contiver quaisquer espaços, letras maiúsculas e minúsculas misturadas ou caracteres especiais, o nome deve ser delimitado por aspas duplas dentro das aspas simples (por exemplo,
'"My Warehouse"'
vs'mywarehouse'
).Padrão: CURRENT_WAREHOUSE
RESULT_LIMIT => num
Um número especificando o número máximo de linhas retornadas pela função:
Se o número de linhas correspondentes for maior que este limite, as consultas com o tempo final mais recente (ou aquelas que ainda estão em execução) são retornadas até o limite especificado.
Intervalo:
1
a10000
Padrão:
100
.
Notas de uso¶
Retorna consultas executadas pelo usuário atual. Também retorna consultas executadas por qualquer usuário quando a função de execução, ou uma função superior em uma hierarquia, tem o privilégio MONITOR ou OPERATE nos warehouses em que as consultas foram executadas. Para obter mais informações, consulte Privilégios de warehouse virtual.
Ao chamar uma função de tabela do Information Schema, a sessão deve ter um esquema INFORMATION_SCHEMA em uso ou o nome da função deve ser totalmente qualificado. Para obter mais detalhes, consulte Snowflake Information Schema.
Os valores para as colunas EXTERNAL_FUNCTION_TOTAL_INVOCATIONS, EXTERNAL_FUNCTION_TOTAL_SENT_ROWS, EXTERNAL_FUNCTION_TOTAL_RECEIVED_ROWS, EXTERNAL_FUNCTION_TOTAL_SENT_BYTES e EXTERNAL_FUNCTION_TOTAL_RECEIVED_BYTES são afetados por muitos fatores, inclusive:
O número de funções externas na instrução SQL.
O número de linhas por lote enviadas para cada serviço remoto.
O número de tentativas devido a erros transitórios (por exemplo, porque uma resposta não foi recebida dentro do tempo esperado).
Colunas de nova tentativa de consulta¶
Uma consulta pode precisar ser repetida uma ou mais vezes para ser concluída com êxito. Pode haver diversas causas que resultam em uma nova tentativa de consulta. Algumas dessas causas são acionáveis, ou seja, um usuário pode fazer alterações para reduzir ou eliminar novas tentativas de consulta para uma consulta específica. Por exemplo, se uma consulta for repetida devido a um erro de falta de memória, a modificação das configurações do warehouse poderá resolver o problema.
Algumas novas tentativas de consulta são causadas por uma falha que não é acionável. Ou seja, não há nenhuma alteração que um usuário possa fazer para impedir a repetição da consulta. Por exemplo, uma interrupção na rede pode resultar em uma nova tentativa de consulta. Neste caso, não há nenhuma alteração na consulta ou no warehouse que a executa que possa impedir a nova tentativa da consulta.
As colunas QUERY_RETRY_TIME, QUERY_RETRY_CAUSE e FAULT_HANDLING_TIME podem ajudar você a otimizar as consultas que são repetidas e a entender melhor as flutuações no desempenho da consulta.
Saída¶
A função retorna as seguintes colunas:
Nome da coluna |
Tipo de dados |
Descrição |
---|---|---|
QUERY_ID |
VARCHAR |
A ID única da instrução. |
QUERY_TEXT |
VARCHAR |
Texto da instrução SQL. |
DATABASE_NAME |
VARCHAR |
Banco de dados especificado no contexto da consulta na compilação. |
SCHEMA_NAME |
VARCHAR |
Esquema especificado no contexto da consulta na compilação. |
QUERY_TYPE |
VARCHAR |
DML, consulta etc. Se a consulta estiver atualmente em execução, ou se a consulta tiver falhado, então o tipo de consulta pode ser UNKNOWN. |
SESSION_ID |
NUMBER |
Sessão que executou a instrução. |
USER_NAME |
VARCHAR |
Usuário que emitiu a consulta. |
ROLE_NAME |
VARCHAR |
Função que estava ativa na sessão no momento da consulta. |
WAREHOUSE_NAME |
VARCHAR |
Warehouse em que a consulta foi executada, se houver. |
WAREHOUSE_SIZE |
VARCHAR |
Tamanho do warehouse quando esta instrução foi executada. |
WAREHOUSE_TYPE |
VARCHAR |
Tipo do warehouse quando esta instrução foi executada. |
CLUSTER_NUMBER |
NUMBER |
O cluster (em um warehouse multicluster) no qual esta instrução foi executada. |
QUERY_TAG |
VARCHAR |
Tag de consulta definida para esta instrução pelo parâmetro de sessão QUERY_TAG. |
EXECUTION_STATUS |
VARCHAR |
Status de execução da consulta: resuming_warehouse, running, queued, blocked, success, failed_with_error ou failed_with_incident. |
ERROR_CODE |
NUMBER |
Código de erro, se a consulta tiver retornado um erro |
ERROR_MESSAGE |
VARCHAR |
Mensagem de erro, se a consulta tiver retornado um erro |
START_TIME |
TIMESTAMP_LTZ |
Hora de início da instrução |
END_TIME |
TIMESTAMP_LTZ |
Hora de término da instrução. Se a consulta ainda estiver em execução, o END_TIME é o carimbo de data/hora de época UNIX (“1970-01-01 00:00:00”), ajustado para o fuso horário local. Por exemplo, para o fuso horário do Pacífico, isso seria “1969-12-31 16:00:00.000 -0800”. |
TOTAL_ELAPSED_TIME |
NUMBER |
Tempo decorrido (em milissegundos) |
BYTES_SCANNED |
NUMBER |
Número de bytes digitalizados por esta instrução. |
ROWS_PRODUCED |
NUMBER |
Número de linhas produzidas por esta instrução. |
COMPILATION_TIME |
NUMBER |
Tempo de compilação (em milissegundos) |
EXECUTION_TIME |
NUMBER |
Tempo de execução (em milissegundos) |
QUEUED_PROVISIONING_TIME |
NUMBER |
Tempo (em milissegundos) gasto na fila do warehouse, esperando que o warehouse compute recursos para provisionar, devido à criação, retomada ou redimensionamento do warehouse. |
QUEUED_REPAIR_TIME |
NUMBER |
Tempo (em milissegundos) gasto na fila do warehouse, esperando que os recursos computados no warehouse sejam reparados. |
QUEUED_OVERLOAD_TIME |
NUMBER |
Tempo (em milissegundos) gasto na fila de espera do warehouse, devido à sobrecarga do warehouse devido à carga de trabalho atual da consulta. |
TRANSACTION_BLOCKED_TIME |
NUMBER |
Tempo (em milissegundos) gasto bloqueado por um DML concorrente. |
OUTBOUND_DATA_TRANSFER_CLOUD |
VARCHAR |
Provedor de nuvem de destino para instruções que descarregam dados para outra região e/ou nuvem. |
OUTBOUND_DATA_TRANSFER_REGION |
VARCHAR |
Região de destino para instruções que descarregam dados para outra região e/ou nuvem. |
OUTBOUND_DATA_TRANSFER_BYTES |
NUMBER |
Número de bytes transferidos em instruções que descarregam dados para outra região e/ou nuvem. |
INBOUND_DATA_TRANSFER_CLOUD |
VARCHAR |
Provedor de nuvem de origem para instruções que carregam dados de outra região e/ou nuvem. |
INBOUND_DATA_TRANSFER_REGION |
VARCHAR |
Região de origem para instruções que carregam dados de outra região e/ou nuvem. |
INBOUND_DATA_TRANSFER_BYTES |
NUMBER |
Número de bytes transferidos em uma operação de replicação de outra conta. A conta de origem pode estar na mesma região ou em uma região diferente da conta atual. |
LIST_EXTERNAL_FILE_TIME |
NUMBER |
Tempo (em milissegundos) gasto listando arquivos externos. |
CREDITS_USED_CLOUD_SERVICES |
NUMBER |
Número de créditos usados para serviços de nuvem. |
RELEASE_VERSION |
VARCHAR |
Versão de lançamento no formato de |
EXTERNAL_FUNCTION_TOTAL_INVOCATIONS |
NUMBER |
O número agregado de vezes que esta consulta chamou serviços remotos. Para obter detalhes importantes, consulte as Notas de uso. |
EXTERNAL_FUNCTION_TOTAL_SENT_ROWS |
NUMBER |
O número total de linhas que esta consulta enviou em todas as chamadas para todos os serviços remotos. |
EXTERNAL_FUNCTION_TOTAL_RECEIVED_ROWS |
NUMBER |
O número total de linhas que esta consulta recebeu de todas as chamadas para todos os serviços remotos. |
EXTERNAL_FUNCTION_TOTAL_SENT_BYTES |
NUMBER |
O número total de bytes que esta consulta enviou em todas as chamadas para todos os serviços remotos. |
EXTERNAL_FUNCTION_TOTAL_RECEIVED_BYTES |
NUMBER |
O número total de bytes que esta consulta recebeu de todas as chamadas para todos os serviços remotos. |
IS_CLIENT_GENERATED_STATEMENT |
BOOLEAN |
Indica se a consulta foi gerada pelo cliente. |
QUERY_HASH |
VARCHAR |
O valor de hash calculado com base no texto canônico SQL. |
QUERY_HASH_VERSION |
NUMBER |
A versão da lógica usada para calcular |
QUERY_PARAMETERIZED_HASH |
VARCHAR |
O valor de hash calculado com base na consulta parametrizada. |
QUERY_PARAMETERIZED_HASH_VERSION |
NUMBER |
A versão da lógica usada para calcular |
TRANSACTION_ID |
NUMBER |
ID da transação que contém a instrução ou |
QUERY_ACCELERATION_BYTES_SCANNED |
NUMBER |
Número de bytes digitalizados por Query Acceleration Service. |
QUERY_ACCELERATION_PARTITIONS_SCANNED |
NUMBER |
Número de partições digitalizadas por Query Acceleration Service. |
QUERY_ACCELERATION_UPPER_LIMIT_SCALE_FACTOR |
NUMBER |
Fator de escala no limite superior do qual uma consulta teria se beneficiado. |
BYTES_WRITTEN_TO_RESULT |
NUMBER |
Número de bytes gravados em um objeto de resultado. Por exemplo, |
ROWS_WRITTEN_TO_RESULT |
NUMBER |
Número de linhas gravadas em um objeto de resultado. Para CREATE TABLE AS SELECT (CTAS) e todas as operações DML, esse resultado é |
ROWS_INSERTED |
NUMBER |
Número de linhas inseridas pela consulta. |
QUERY_RETRY_TIME |
NUMBER |
Tempo total de execução (em milissegundos) para novas tentativas de consulta causadas por erros acionáveis. Para obter mais informações, consulte Colunas de nova tentativa de consulta. |
QUERY_RETRY_CAUSE |
VARIANT |
Matriz de mensagens de erro para erros acionáveis. A matriz contém uma mensagem de erro para cada nova tentativa de consulta. Se não houver nova tentativa de consulta, a matriz estará vazia. Para obter mais informações, consulte Colunas de nova tentativa de consulta. |
FAULT_HANDLING_TIME |
NUMBER |
Tempo total de execução (em milissegundos) para novas tentativas de consulta causadas por erros que não são acionáveis. Para obter mais informações, consulte Colunas de nova tentativa de consulta. |
Os valores potenciais para a coluna QUERY_TYPE
incluem:
CREATE_USER
CREATE_ROLE
CREATE_NETWORK_POLICY
ALTER_ROLE
ALTER_NETWORK_POLICY
ALTER_ACCOUNT
DROP_SEQUENCE
DROP_USER
DROP_ROLE
DROP_NETWORK_POLICY
RENAME_NETWORK_POLICY
REVOKE
Exemplos¶
Recuperar até as últimas 100 consultas executadas na sessão atual:
select * from table(information_schema.query_history_by_session()) order by start_time;
Recuperar as 100 últimas consultas executadas pelo usuário atual (ou executadas por qualquer usuário em qualquer warehouse no qual o usuário atual tenha o privilégio MONITOR):
select * from table(information_schema.query_history()) order by start_time;
Recuperar as 100 últimas consultas executadas na última hora pelo usuário atual (ou executadas por qualquer usuário em qualquer warehouse no qual o usuário atual tenha o privilégio MONITOR):
select * from table(information_schema.query_history(dateadd('hours',-1,current_timestamp()),current_timestamp())) order by start_time;
Recuperar todas as consultas executadas pelo usuário atual (ou executadas por qualquer usuário em qualquer warehouse no qual o usuário atual tenha o privilégio MONITOR) dentro de um intervalo de tempo especificado de 30 minutos nos últimos 7 dias:
select * from table(information_schema.query_history( END_TIME_RANGE_START=>to_timestamp_ltz('2017-12-4 12:00:00.000 -0700'), END_TIME_RANGE_END=>to_timestamp_ltz('2017-12-4 12:30:00.000 -0700')));