DOCUMENTATION
/
Introdução
Guias
Desenvolvedor
Referência
Lançamentos
Tutoriais
Snowflake Open Catalog
Status
  1. Visão geral
    • Catálogo Snowflake Horizon
      • Applications and tools for connecting to Snowflake
      • Warehouses virtuais
      • Bancos de dados, tabelas e exibições
      • Tipos de dados
        • Carregamento de dados
        • Tabelas dinâmicas
        • Fluxos e tarefas
        • Descarregamento de dados
        • Consultas
            1. Junções
            2. Subconsultas
              • Consulta de dados hierárquicos
                • Expressões de tabela comuns (CTE)
                  • Consulta de dados semiestruturados
                    • Uso da pesquisa de texto completo
                      • Construção de SQL no tempo de execução
                        • Análise de dados de séries temporais
                          • Análise de dados com funções de janela
                            • Reconhecimento de compatibilidade
                              • Sequências
                                • Resultados da consulta persistente
                                  • Contagens distintas
                                  • Estimativa de similaridade
                                    • Estimativa de frequência
                                      • Estimativa de valores percentuais
                                        • Monitoramento da atividade de consulta com o Histórico de consultas
                                          • Hash de consulta
                                            • Top-K pruning
                                              • Cancelamento de instruções
                                            • Colaboração
                                            • AI e ML do Snowflake
                                            • Alertas e notificações
                                            • Segurança
                                            • Governança de dados
                                            • Privacidade
                                            • Organizações e contas
                                            • Business continuity & data recovery
                                            • Otimização do desempenho
                                            • Custo e faturamento
                                            GuiasConsultasHash de consulta

                                            Uso do hash de consulta para identificar padrões e tendências em consultas¶

                                            Para identificar, agrupar e analisar consultas semelhantes no histórico de consultas, você pode usar um hash do texto da consulta. Por exemplo, você pode:

                                            • Agrupe consultas pelo hash de consulta para identificar padrões em consultas caras.

                                            • Determine os efeitos das melhorias de desempenho (por exemplo, alterações nas chaves de clustering) em consultas repetidas.

                                            Nas exibições e funções de tabela a seguir, você pode usar as colunas query_hash e query_parameterized_hash para obter o hash do texto da consulta:

                                            • Exibições do ACCOUNT_USAGE (retenção de 1 ano)

                                              • Exibição QUERY_HISTORY

                                              • Exibição QUERY_ACCELERATION_ELIGIBLE

                                              • Exibição TASK_HISTORY

                                            • Funções de tabela do INFORMATION_SCHEMA (retenção de 7 dias)

                                              • Função de tabela QUERY_HISTORY

                                              • Função de tabela TASK_HISTORY

                                            Você pode usar esse hash para analisar consultas repetidas.

                                            Uso do hash da consulta (query_hash)¶

                                            A coluna query_hash contém um valor de hash que é calculado com base no texto canônico da instrução SQL. Consultas repetidas que têm exatamente o mesmo texto de consulta têm os mesmos valores de query_hash.

                                            Consultas repetidas também terão o mesmo query_hash se o texto de consulta for diferente apenas no seguinte:

                                            • Identificador, variável de sessão e nome de estágio que não diferenciam maiúsculas de minúsculas

                                              Observe que isso não inclui identificadores especificados usando IDENTIFIER() com variáveis de vinculação. Variáveis de vinculação com valores diferentes produzem hashes de consulta diferentes.

                                            • Espaço em branco

                                            • Comentários

                                            Se qualquer outra parte do texto de consulta de duas consultas for diferente, essas consultas terão valores de query_hash diferentes.

                                            Por exemplo, as consultas a seguir têm o mesmo valor de query_hash porque têm exatamente o mesmo texto de consulta.

                                            SELECT * FROM table1 WHERE table1.name = 'TIM'
                                            
                                            Copy
                                            SELECT * FROM table1 WHERE table1.name = 'TIM'
                                            
                                            Copy

                                            Você pode usar o valor de query_hash para encontrar padrões no desempenho da consulta que, de outra forma, não seriam óbvios. Por exemplo, embora uma consulta possa não ser excessivamente cara durante uma única execução, uma consulta repetida com frequência pode levar a custos elevados, com base no número de vezes que ela é executada. Você pode usar o valor de query_hash para identificar as consultas nas quais focar primeiro na otimização.

                                            Por exemplo, a consulta a seguir usa o valor de query_hash para identificar IDs da consulta para as 100 consultas de execução mais longa:

                                            SELECT
                                                query_hash,
                                                COUNT(*),
                                                SUM(total_elapsed_time),
                                                ANY_VALUE(query_id)
                                              FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY
                                              WHERE warehouse_name = 'MY_WAREHOUSE'
                                                AND DATE_TRUNC('day', start_time) >= CURRENT_DATE() - 7
                                              GROUP BY query_hash
                                              ORDER BY SUM(total_elapsed_time) DESC
                                              LIMIT 100;
                                            
                                            Copy

                                            Uso do hash da consulta parametrizada (query_parameterized_hash)¶

                                            query_parameterized_hash contém um valor de hash que é calculado com base na consulta parametrizada, o que significa a versão da consulta após a parametrização dos literais. Esses literais devem ser usados no predicado de consulta e com um dos seguintes operadores de comparação:

                                            • = (igual a)

                                            • != (não é igual a)

                                            • >= (é maior ou igual a)

                                            • <= (é menor ou igual a)

                                            Consultas repetidas (incluindo aquelas com valores de parâmetros diferentes) têm o mesmo valor query_parameterized_hash.

                                            Consultas repetidas também terão o mesmo query_parameterized_hash se o texto de consulta for diferente apenas no seguinte:

                                            • Identificador, variável de sessão e nome de estágio que não diferenciam maiúsculas de minúsculas

                                              Observe que isso não inclui identificadores especificados usando IDENTIFIER() com variáveis de vinculação. Variáveis de vinculação com valores diferentes produzem hashes de consulta diferentes.

                                            • Espaço em branco

                                            • Comentários

                                            Consultas que têm o mesmo valor query_hash também têm o mesmo valor query_parameterized_hash, mas não vice-versa.

                                            Por exemplo, as consultas a seguir têm o mesmo valor query_parameterized_hash porque os valores literais são a única diferença entre as consultas:

                                            SELECT * FROM table1 WHERE table1.name = 'TIM'
                                            
                                            Copy
                                            SELECT * FROM table1 WHERE table1.name = 'AIHUA'
                                            
                                            Copy

                                            Assim como o valor query_hash, você pode usar o valor query_parameterized_hash para encontrar padrões no desempenho da consulta que, de outra forma, poderiam não ser óbvios.

                                            A instrução a seguir calcula a média total_elapsed_time a cada dia para todas as consultas com um valor query_parameterized_hash específico (cbd58379a88c37ed6cc0ecfebb053b03):

                                            SELECT
                                                DATE_TRUNC('day', start_time),
                                                SUM(total_elapsed_time),
                                                ANY_VALUE(query_id)
                                              FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY
                                              WHERE query_parameterized_hash = 'cbd58379a88c37ed6cc0ecfebb053b03'
                                                AND DATE_TRUNC('day', start_time) >= CURRENT_DATE() - 30
                                              GROUP BY DATE_TRUNC('day', start_time);
                                            
                                            Copy

                                            Verificação da versão que foi usada para gerar o hash¶

                                            Com o tempo, a lógica usada pelo Snowflake para gerar o hash de consulta pode mudar. Alterações nesta lógica podem resultar em diferentes hashes produzidos para a mesma consulta. Por exemplo, para uma determinada consulta, o hash gerado pela versão 1 da lógica pode ser diferente do hash gerado pela versão 2 da lógica.

                                            As exibições e a saída da função de tabela que incluem as colunas query_hash e query_parameterized_hash também incluem as seguintes colunas que especificam a versão da lógica usada para produzir os hashes:

                                            • query_hash_version

                                            • query_parameterized_hash_version

                                            O número da versão nessas colunas é NUMBER (por exemplo, 1 para a primeira versão da lógica, 2 para a segunda versão da lógica etc.).

                                            Se essas colunas contiverem números de versão diferentes para períodos de tempo diferentes, você poderá usar essas colunas de versão para identificar os diferentes hashes para a mesma consulta. Por exemplo:

                                            ...
                                            WHERE (query_hash = 'hash_from_v1' AND query_hash_version = 1)
                                              OR (query_hash = 'hash_from_v2' AND query_hash_version = 2)
                                            
                                            Copy

                                            Esta página foi útil?

                                            Visite Snowflake
                                            Participe da conversa
                                            Como desenvolver com Snowflake
                                            Compartilhe seu feedback
                                            Leia as novidades em nosso blog
                                            Tenha sua própria certificação
                                            Aviso de privacidadeTermos do site© 2025 Snowflake, Inc. Todos os direitos reservados.
                                            1. Uso do hash da consulta (query_hash)
                                            2. Uso do hash da consulta parametrizada (query_parameterized_hash)
                                            3. Verificação da versão que foi usada para gerar o hash
                                            Linguagem: Português
                                            • English
                                            • Français
                                            • Deutsch
                                            • 日本語
                                            • 한국어
                                            • Português