Filtros

Quando lê dados do Bigtable, pode ler linhas ou intervalos específicos de linhas. No entanto, nem sempre precisa de todos os dados em todas as linhas. Pode apenas precisar de linhas que contenham um valor específico na respetiva chave de linha ou células numa família de colunas específica.

Para limitar os resultados de um pedido de leitura, inclua filtros no pedido. É aplicado um filtro aos dados antes de a resposta ser enviada, o que reduz a quantidade de dados devolvidos. Como resultado, a utilização de filtros pode significar custos de rede mais baixos e um débito mais rápido. Esta página oferece uma vista geral do funcionamento dos filtros do Bigtable e uma lista dos filtros disponíveis.

Para ver detalhes e exemplos de código para cada filtro, consulte os exemplos de filtros.

Como funcionam os filtros

Quando o pedido de leitura inclui um filtro, o Bigtable obtém uma linha ou um intervalo de linhas da tabela. Para cada uma das linhas de entrada que obtém, o Bigtable avalia a linha através do seu filtro e, em seguida, gera uma linha de saída com base nos resultados do filtro.

O Bigtable oferece vários tipos de filtros, conforme descrito nas secções seguintes. Os filtros básicos dividem-se em duas categorias: limitar e modificar. Pode combinar filtros básicos em filtros de composição.

Na maioria dos casos, é aplicado um filtro a todas as linhas, a menos que especifique a chave da linha, o intervalo de linhas ou o número de linhas ao qual o filtro deve ser aplicado. Uma exceção é o filtro regex da chave da linha, que pode restringir o intervalo de linhas em determinados casos se o regex for um prefixo fixo. Em geral, para evitar a lentidão de uma análise completa da tabela, especifique sempre as linhas para um filtro.

Limitar filtros

Um filtro de limitação controla que linhas ou células são incluídas na resposta, com base na correspondência com critérios específicos. Por exemplo, pode dizer que a resposta deve incluir apenas linhas em que a chave da linha corresponda a uma expressão regular ou que quer apenas células de uma família de colunas específica.

Muitos filtros limitadores podem excluir células de uma linha de saída. Se todas as células forem excluídas de uma linha de saída, a linha não é incluída na resposta.

Consulte o Resumo dos filtros para ver uma lista completa dos filtros de limitação.

Modificar filtros

Um filtro de modificação afeta os dados ou os metadados de células individuais.

O Bigtable oferece os seguintes filtros de modificação:

  • O filtro de valor de remoção, que substitui o valor de cada célula por uma string vazia. Este filtro é útil quando só precisa do número de linhas ou da lista de chaves de linhas que cumprem os seus critérios, em vez dos dados dessas linhas.

  • O apply label filter, que aplica uma etiqueta a cada célula para identificar que filtro produziu cada célula na resposta. A sua aplicação pode usar estas etiquetas para fazer filtragem adicional do lado do cliente.

Filtros de composição

Um filtro de composição permite combinar vários filtros básicos num só, o que torna possível aplicar mais do que um filtro a um único pedido de leitura. Por exemplo, para obter dados de utilização da CPU para os seus servidores, pode usar um filtro para incluir apenas linhas em que a chave da linha começa com SERVER, seguido de um segundo filtro para incluir apenas células na família de colunas CPU.

O Bigtable oferece os seguintes filtros de composição:

  • Uma cadeia, que aplica uma sequência de filtros a cada linha de entrada e devolve uma linha de saída. Um filtro de cadeia é como usar um E lógico.
  • Uma interleave, que envia cada linha de entrada através de vários filtros e, em seguida, combina todos os resultados dos filtros para a linha de entrada numa única linha de saída. Um filtro de intercalação é como usar um OR lógico.
  • Uma condição, que gera uma linha de saída aplicando um de dois filtros possíveis à linha de entrada. O filtro é escolhido aplicando um filtro de predicado à linha de entrada e, em seguida, verificando se a linha de saída do filtro de predicado contém células.

Filtros e desempenho

Os filtros permitem-lhe obter apenas os dados de que realmente precisa. Como resultado, os filtros podem melhorar o desempenho reduzindo a quantidade de dados enviados para a sua aplicação.

No entanto, os filtros não são uma solução universal para todos os problemas de desempenho. Em geral, os filtros devem ser usados para controlar a eficiência da taxa de transferência e não para reduzir a latência entre o envio de um pedido e a receção de uma resposta. Quando usados corretamente, os filtros podem ser uma parte eficaz de uma estratégia para melhorar o desempenho de leitura.

O filtro de condições, em particular, pode aumentar a latência, porque as condições são muito mais lentas do que outros filtros. Se o seu pedido de leitura for extremamente sensível ao desempenho, não use condições no pedido.

Resumo dos filtros

As tabelas seguintes apresentam os filtros fornecidos pelo Bigtable, incluindo links para detalhes e exemplos de código para cada filtro.

Limitar filtros
Bloquear tudo Não emite nenhuma célula. Principalmente útil para depuração.
Limite de células por coluna Inclua apenas as N versões mais recentes de uma coluna numa linha.
Células por limite de linhas Incluir apenas as primeiras N células de uma linha.
Células por deslocamento de linha Omitir as primeiras N células de uma linha.
Coluna regex da família Inclua apenas células cuja família de colunas corresponda a uma expressão regular RE2.
Expressão regular do qualificador de coluna Inclua apenas células cujo qualificador de coluna corresponda a uma expressão regular.
Intervalo de colunas Incluir apenas células numa família de colunas específica cujo qualificador de coluna esteja num intervalo específico.
Passar tudo Emitir todas as células de entrada. Principalmente útil para depuração.
Chave da linha regex Incluir apenas células cuja chave de linha corresponda a uma expressão regular.
Exemplo de linha Recupere uma amostra aleatória de linhas.
Lavatório Incluir células na linha de saída final e impedir que sejam modificadas ou removidas por um filtro subsequente.
Intervalo de tempo Incluir apenas células cuja indicação de tempo se enquadre num intervalo específico.
Intervalo de valores Incluir apenas células cujo valor se enquadre num intervalo específico.
Valor da regex Inclua apenas células cujo valor corresponda a uma expressão regular.
Modificar filtros
Aplicar etiqueta Adicione uma etiqueta a todas as células.
Valor da faixa Devolver uma string vazia para cada valor de célula.
Filtros de composição
Chain Aplicar vários filtros por ordem.
Condição Aplicar um de dois filtros possíveis a uma linha.
Interleave Combine linhas de saída de vários filtros numa única linha de saída.

O que se segue?