Categorias:

Information Schema , Funções de tabela

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.

Nota

Estas funções retornam a atividade de consulta dos últimos 7 dias.

Consulte também:

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> ] )
Copy

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 a 10000

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).

Saída

A função retorna as seguintes colunas:

Nome da coluna

Tipo de dados

Descrição

QUERY_ID

TEXT

A ID única da instrução.

QUERY_TEXT

TEXT

Texto da instrução SQL.

DATABASE_NAME

TEXT

Banco de dados especificado no contexto da consulta na compilação.

SCHEMA_NAME

TEXT

Esquema especificado no contexto da consulta na compilação.

QUERY_TYPE

TEXT

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

TEXT

Usuário que emitiu a consulta.

ROLE_NAME

TEXT

Função que estava ativa na sessão no momento da consulta.

WAREHOUSE_NAME

TEXT

Warehouse em que a consulta foi executada, se houver.

WAREHOUSE_SIZE

TEXT

Tamanho do warehouse quando esta instrução foi executada.

WAREHOUSE_TYPE

TEXT

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

TEXT

Tag de consulta definida para esta instrução pelo parâmetro de sessão QUERY_TAG.

EXECUTION_STATUS

TEXT

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

TEXT

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

TEXT

Provedor de nuvem de destino para instruções que descarregam dados para outra região e/ou nuvem.

OUTBOUND_DATA_TRANSFER_REGION

TEXT

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

TEXT

Provedor de nuvem de origem para instruções que carregam dados de outra região e/ou nuvem.

INBOUND_DATA_TRANSFER_REGION

TEXT

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

TEXT

Versão de lançamento no formato de major_release.minor_release.patch_release.

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

TEXT

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_HASH.

QUERY_PARAMETERIZED_HASH

TEXT

O valor de hash calculado com base na consulta parametrizada.

QUERY_PARAMETERIZED_HASH_VERSION

NUMBER

A versão da lógica usada para calcular QUERY_PARAMETERIZED_HASH.

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;
Copy

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;
Copy

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;
Copy

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')));
Copy