Filtragem de resultados de consulta em painéis e planilhas¶
Você pode filtrar os resultados de sua consulta em painéis e planilhas SQL usando os filtros do sistema, disponíveis para todas as funções no Snowflake, ou com filtros personalizados criados por administradores.
Criação de filtros personalizados¶
Os filtros personalizados permitem alterar os resultados de uma consulta sem editar diretamente a consulta.
Os filtros são implementados como palavras-chave especiais resolvidas como uma subconsulta ou lista de valores, que são então usados na execução de uma consulta. Como resultado, existem algumas limitações ao usar um filtro em uma consulta SQL. Consulte Como especificar um filtro em uma consulta SQL.
Nota
Qualquer pessoa em sua conta pode visualizar e usar um filtro personalizado depois que ele for criado. Um filtro personalizado tem uma função associada, mas essa função não limita a visibilidade do filtro.
Concessão de permissão para criar filtros personalizados¶
Para permitir que um usuário crie filtros personalizados, um usuário com a função ACCOUNTADMIN deve conceder as permissões relevantes para uma função concedida a esse usuário. Você só pode usar o Snowsight para conceder às funções a capacidade de criar filtros personalizados.
Para conceder uma permissão de função para criar filtros personalizados para sua conta, faça o seguinte:
Faça login no Snowsight.
Selecione Projects » Worksheets para abrir a lista de planilhas e abrir uma planilha ou selecione Projects » Dashboards para abrir a lista de painéis e abrir um painel.
Selecione
e, se estiver em uma planilha, selecione Manage Filters.
Na caixa de diálogo que aparece, selecione Edit Permission.
Na caixa de diálogo Filter Permissions, selecione as funções às quais você deseja conceder permissão para criar filtros.
Selecione Save.
Criação de um filtro personalizado¶
Você deve usar o Snowsight para criar um filtro, e deve usar uma função com permissões para criar filtros personalizados.
Para criar um filtro personalizado, faça o seguinte:
Faça login no Snowsight.
Selecione Projects » Worksheets para abrir a lista de planilhas e abrir uma planilha ou selecione Projects » Dashboards para abrir a lista de painéis e abrir um painel.
Selecione
e, se estiver em uma planilha, selecione Manage Filters.
Na caixa de diálogo Filters que aparece, selecione + Filter.
Para adicionar um filtro, preencha o seguinte:
Para Display Name, insira um nome para o filtro. Este nome aparece no filtro ao selecioná-lo em uma planilha ou painel.
Para SQL Keyword, insira a palavra-chave exclusiva a ser inserida nas consultas. Use o formato
:<cadeia de caracteres>
, sem espaços. Por exemplo::page_path
.Para Description, insira uma descrição do filtro.
Para Role, selecione uma função para associar ao filtro e execute a consulta usada para preencher os valores do filtro, se o filtro for baseado em uma consulta. Somente funções com permissões para criar filtros personalizados aparecem na lista suspensa. Consulte Gerenciamento da propriedade de filtros personalizados para obter mais detalhes.
Para Warehouse, selecione um warehouse a ser usado para atualizar os valores do filtro, se o filtro for baseado em uma consulta. A função de proprietário do filtro deve ter o privilégio USAGE no warehouse que você selecionar. Se quiser executar e validar sua consulta como parte dessas etapas, o warehouse deverá estar em execução.
Para Options via, escolha se os valores do filtro serão preenchidos por uma consulta ou uma lista:
Se selecionar Query, selecione Write Query e consulte Como escrever uma consulta para preencher um filtro para orientação na escrita de uma consulta de filtro.
Se você selecionar List, faça o seguinte:
Selecione Edit List.
Opcionalmente, para Name, insira um nome para o item da lista. O nome aparece na lista suspensa do filtro. Se você não fornecer um nome, o Value é usado.
Para Value, insira o valor do nome da coluna a ser usado no filtro.
Continue adicionando pares de nome e valor até que sua lista esteja completa e selecione Save.
Na caixa de diálogo Add Filter, para Value Type, escolha se os itens da lista são os tipos de dados Text ou Number.
Se você deseja que os usuários possam selecionar vários itens na lista suspensa de opções de filtro, ative o seletor para Multiple values can be selected.
Se você deseja que os usuários vejam os resultados de todos os itens na coluna, ative o seletor para Include an «All» option e, em seguida, selecione como quer a opção All funcione:
Selecionar Any value para ter All no filtro significa que a coluna à qual o filtro se aplica pode ter qualquer valor nos resultados, independentemente de o valor existir ou não na lista de filtros.
Selecionar Any value in list of options para ter All no filtro significa que a coluna à qual o filtro se aplica contém qualquer item na lista de filtros.
Se deseja que os usuários vejam os resultados de itens não especificados no filtro, ative o seletor para Include an «Other» option.
Selecione Save.
Selecione Done, para fechar a caixa de diálogo Filters.
Como escrever uma consulta para preencher um filtro¶
Para preencher uma lista de opções de filtro a partir de uma consulta, sua consulta deve seguir certas diretrizes:
Deve retornar as colunas
name
evalue
.Pode retornar a coluna opcional
description
.Pode retornar outras colunas, mas elas não aparecem na lista de filtros suspensa.
Um filtro só pode executar uma consulta por vez. Você não pode executar várias consultas para gerar a lista de opções de filtro, por exemplo, executar uma consulta para retornar a coluna name
e uma segunda consulta para retornar a coluna value
.
Nota
A consulta usada para preencher uma lista de opções de filtro é executada como o usuário que criou (ou modificou pela última vez) o filtro. Como qualquer pessoa em sua conta pode visualizar e usar um filtro personalizado depois que ele for criado, certifique-se de que a lista de opções de filtro produzida por sua consulta não contenha dados protegidos ou confidenciais.
Após escrever sua consulta de filtro e adicioná-la na caixa de diálogo New filter, faça o seguinte para concluir a configuração de seu filtro de consulta:
Selecione Done para salvar sua consulta de filtro e retornar à caixa de diálogo Add Filter.
Opcionalmente, altere a opção de atualização padrão de Refresh hourly para Never refresh ou Refresh daily. Para obter mais detalhes e considerações sobre opções de atualização de filtro, consulte Gerenciamento da frequência de atualização para um filtro personalizado.
Retorne às etapas de criação de um filtro personalizado para finalizar a criação do filtro. Consulte Criação de um filtro personalizado.
Revisão e gerenciamento de filtros personalizados em uma conta¶
Para revisar os filtros personalizados em sua conta, abra uma planilha ou painel e selecione .
Para fazer alterações em quaisquer filtros, como mudar a frequência de atualização da consulta usada para preencher uma lista de filtros personalizados, é necessário ter a função ACCOUNTADMIN ou uma função com permissões de gerenciamento de filtros. Consulte Gerenciamento da frequência de atualização para um filtro personalizado.
Gerenciamento da propriedade de filtros personalizados¶
Cada filtro personalizado tem uma função associada. Qualquer pessoa com essa função pode editar ou excluir o filtro. Usuários com a função ACCOUNTADMIN podem visualizar e editar todos os filtros na conta.
Se a função associada a um filtro for descartada, a função que descarta a função do filtro não herda a propriedade do filtro personalizado. Em vez disso, um usuário com a função ACCOUNTADMIN pode editar o filtro e alterar a função associada ao filtro.
Gerenciamento da frequência de atualização para um filtro personalizado¶
Um filtro personalizado preenchido por uma consulta SQL também tem uma frequência de atualização. A frequência de atualização pode ser de hora em hora, diária ou nunca.
O filtro é executado com base em quando foi salvo e quanto tempo levou para executar a consulta que atualiza as opções do filtro.
Por exemplo, se você salvar um filtro que tenha uma frequência de atualização de consulta por hora às 10:07 AM, a primeira consulta de atualização será executada às 11:07 AM ou depois. Se um grande número de consultas de atualização de filtro for programado para ser executado ao mesmo tempo, as consultas serão enfileiradas para limitar o número de consultas de atualização de filtro em execução ao mesmo tempo. A próxima atualização do filtro é baseada em quando a última atualização foi concluída. Neste exemplo, se a consulta for atualizada às 11:07 AM leva 20 minutos para ser concluída, a próxima consulta de atualização será executada às 12:27 PM ou depois.
As atualizações do filtro são executadas pelo usuário que criou ou modificou o filtro pela última vez e são visíveis em Query History como um dos tipos de Queries executed by user tasks. Consulte Monitoramento da atividade de consulta com o Histórico de consultas para detalhes sobre o uso de Query History.
Para determinar qual filtro é responsável por uma atualização de consulta de filtro, você deve abrir a lista de filtros e abrir cada filtro para visualizar os detalhes.
Solução de problemas de atualizações de consulta de filtro com falha¶
As atualizações da consulta do filtro podem falhar por um dos seguintes motivos:
O usuário que criou ou modificou o filtro pela última vez foi removido ou desabilitado no Snowflake.
O usuário está inativo porque não efetua login há 3 meses.
Não é possível ver quais usuários criaram ou modificaram pela última vez um determinado filtro. Se você tiver filtros que não estão sendo atualizados, poderá ver as tentativas de autenticação bem-sucedidas pelo usuário de WORKSHEETS_APP_USER seguido por tentativas de autenticação com falha de um usuário na exibição Exibição LOGIN_HISTORY do esquema ACCOUNT_USAGE no banco de dados compartilhado SNOWFLAKE.
Por exemplo, você pode usar a seguinte consulta para identificar a atividade de login que usa um token de acesso OAuth dos dois dias anteriores:
SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.LOGIN_HISTORY
WHERE
FIRST_AUTHENTICATION_FACTOR = 'OAUTH_ACCESS_TOKEN'
AND
REPORTED_CLIENT_TYPE = 'SNOWFLAKE_UI'
AND
EVENT_TIMESTAMP > DATEADD('DAY', -2, CURRENT_DATE());
ORDER BY
EVENT_TIMESTAMP DESC;
Tentativas de autenticação com falha associadas a uma frequência de atualização de consulta com falha ocorreriam no mesmo horário todos os dias ou a cada hora, dependendo da frequência de atualização do filtro personalizado.
Como especificar um filtro em uma consulta SQL¶
Você pode usar um filtro do sistema ou um filtro personalizado em uma consulta SQL. Você não pode usar um filtro em um procedimento armazenado ou uma função definida pelo usuário (UDF).
Para adicionar um filtro à sua consulta SQL, use um dos seguintes formatos:
Especifique o filtro como parte de uma instrução SELECT, como
SELECT :<filter_name>(<col_name>)
.Especifique o filtro usando um sinal de igual como comparador. Por exemplo:
WHERE <col_name> = :<filter_name>
WHERE <:filter_name> = <col_name>
<value_a>:<value_b>::string = <:filter_name>
Você só pode usar um sinal de igual como comparador para um filtro e, como tal, não pode usar um filtro com LIKE ou CONTAINS.
A coluna à qual o filtro se aplica também deve corresponder ao tipo de valor esperado pelo filtro:
Para que um conjunto de filtros personalizados use um tipo de valor de texto, a coluna deve ser uma cadeia de caracteres de texto ou convertida em uma cadeia de cadeias de caracteres de texto na consulta. Consulte Tipos de dados para cadeias de caracteres de texto.
Para que um conjunto de filtros personalizados use um tipo de valor numérico, a coluna deve ser um tipo de dados numéricos. Consulte Tipos de dados numéricos.
Para um filtro de sistema, a coluna deve ser um tipo de dados TIMESTAMP. Consulte Tipos de dados de data e hora.
Quando você adiciona um filtro a sua consulta SQL e, em seguida, usa a lista suspensa para escolher uma opção de filtro, a sintaxe SQL de sua consulta é alterada. Para obter mais detalhes sobre como a sintaxe SQL é alterada quando diferentes opções na lista são selecionadas, consulte a tabela a seguir:
Opção de filtro selecionada |
SQL usado |
---|---|
Item da lista |
|
Vários itens da lista selecionados |
|
Todos, com Any value especificado |
|
Todos, com Any value in list of options especificado |
|
Outros |
|
Como aplicar e salvar filtros¶
Quando você altera as opções selecionadas em um filtro, a opção para aplicar suas alterações aparece. Ao selecionar Apply, a planilha ou o painel é executado e os resultados filtrados atualizados aparecem, permitindo que você revise as alterações sem salvar.
Após aplicar alterações a um filtro em um painel, a opção para salvar suas alterações é exibida. Ao selecionar Save, as alterações feitas no painel são salvas e ficam disponíveis para outros usuários do painel.
Por exemplo, você pode selecionar Apply para alterar um filtro e ver os resultados de All Time, mas você não quer que o painel execute um volume tão grande de dados na próxima vez que alguém abrir o painel, então você não seleciona Save. Após executar seu painel para todo o período, você altera o filtro de intervalo de datas para Last 7 days, selecione Apply para executar o painel e, em seguida, selecione Save para salvar esse valor de filtro padrão para usuários do painel.
Filtros do sistema Snowsight¶
Os seguintes filtros de sistema estão disponíveis para todas as funções:
:daterange
Filtra uma coluna por um intervalo de datas, como Last day, Last 7 days, Last 28 days, Last 3 months, Last 6 months, Last 12 months, All time ou um intervalo de datas personalizado.
Nota
O filtro de intervalo de datas sempre usa o fuso horário UTC e não é afetado pelo parâmetro TIMESTAMP_INPUT_FORMAT.
O padrão é Last day.
:datebucket
Os grupos agregam dados por um período, como Second, Minute, Hour, Day, Week, Month e Quarter em meses do calendário ou Year.
O padrão é Day.
Esses filtros não podem ser editados ou descartados.
Exemplo: Trabalho com filtros de data¶
Por exemplo, dada uma tabela com dados de pedidos, como a tabela ORDERS no banco de dados SNOWFLAKE_SAMPLE_DATA e no esquema TPCH_SF1, você pode querer consultar a tabela e agrupar os resultados por um intervalo específico, como por dia ou por semana, e especificar um intervalo de datas específico para recuperar os resultados.
Para fazer isso, você pode escrever uma consulta da seguinte forma:
SELECT
COUNT(O_ORDERDATE) as orders,
:datebucket(O_ORDERDATE) as bucket
FROM
SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.ORDERS
WHERE
O_ORDERDATE = :daterange
GROUP BY
:datebucket(O_ORDERDATE)
ORDER BY
bucket;
Neste exemplo, você:
Conte o número de pedidos e recupere os detalhes sobre a data do pedido na tabela ORDERS.
Filtre seus resultados por um intervalo de datas específico, incluindo o filtro
:daterange
do sistema em sua cláusula WHERE.Agrupe seus resultados por um período específico, incluindo o filtro do sistema
:datebucket
em sua cláusula GROUP BY.Classifique os resultados do período mais antigo para o mais recente, incluindo a cláusula ORDER BY.
Quando você adiciona filtros à sua consulta, os botões de filtro correspondentes aparecem na parte superior da planilha ou do painel:

Para manipular os resultados que você vê na consulta, use os filtros para selecionar valores específicos.
Para este exemplo, defina o filtro Group by, que corresponde ao filtro de intervalo de datas, para agrupar por Day
. Defina o outro filtro, que corresponde ao filtro de intervalo de datas, para All time
.
Quando você seleciona Apply e aplica o filtro aos resultados, os resultados são agrupados por dia, e resultados como a saída a seguir são exibidos:
+--------+------------+
| orders | buckets |
+--------+------------+
| 621 | 1992-01-01 |
| 612 | 1992-01-02 |
| 598 | 1992-01-03 |
| 670 | 1992-01-04 |
+--------+------------+
Você pode selecionar um intervalo de datas diferente para mostrar um agrupamento diferente de dados. Por exemplo, para visualizar dados de pedidos semanais, defina o filtro Group by para Week
e selecione Apply. Resultados como a saída a seguir são exibidos:
+--------+------------+
| orders | buckets |
+--------+------------+
| 3142 | 1991-12-30 |
| 4404 | 1992-01-06 |
| 4306 | 1992-01-13 |
| 4284 | 1992-01-20 |
+--------+------------+