Introdução à pesquisa no BigQuery
Os índices de pesquisa do BigQuery permitem que você use o GoogleSQL para encontrar facilmente elementos de dados exclusivos que estão enterrados em textos não estruturados e dados JSON semiestruturados, sem precisar conhecer os esquemas de tabelas com antecedência.
Com índices de pesquisa, o BigQuery fornece um armazenamento em colunas e pesquisa de texto eficientes em uma plataforma, permitindo pesquisas de linhas eficientes quando você precisa encontrar linhas individuais de dados. Um caso de uso comum é a análise de registros. Por exemplo, você pode identificar as linhas de dados associadas a um usuário para os relatórios do Regulamento geral de proteção de dados (GDPR) ou encontrar códigos de erro específicos em um payload de texto.
O BigQuery armazena e gerencia seus índices para que, quando os dados ficarem
disponíveis no BigQuery, seja possível recuperá-los imediatamente com a
função SEARCH
ou outros operadores e funções,
como os operadores de igual (=
), IN
ou LIKE
e determinados tipos de string e funções JSON. Para otimizar suas pesquisas, leia sobre
práticas recomendadas.
Casos de uso
Os índices de pesquisa do BigQuery ajudam você a realizar as seguintes tarefas:
- Pesquise registros de sistema, rede ou aplicativo armazenados em tabelas do BigQuery.
- Identifique os elementos de dados que precisam ser excluídos para obedecer aos processos regulatórios.
- Suporte à solução de problemas do desenvolvedor.
- Faça auditorias de segurança.
- Crie um painel que exija filtros de pesquisa altamente seletivos.
- Pesquise dados pré-processados para encontrar correspondências exatas.
Para mais informações, consulte Criar um índice de pesquisa e Pesquisar com um índice.
Preços
Não há cobrança para o processamento necessário para criar e atualizar índices de pesquisa quando o tamanho total das tabelas indexadas na sua organização estiver abaixo do limite da sua região. Para permitir a indexação além desse limite,
é necessário
fornecer sua própria reserva
para processar os jobs de gerenciamento de índice.
Os índices de pesquisa geram custos de armazenamento quando estão ativos.
Você pode encontrar o tamanho de armazenamento do índice na
visualização INFORMATION_SCHEMA.SEARCH_INDEXES
.
Papéis e permissões
Para criar um índice de pesquisa, é necessário ter a
permissão bigquery.tables.createIndex
do IAM
na tabela em que está criando o índice. Para remover um índice de pesquisa, é necessário ter a permissão bigquery.tables.deleteIndex
. Cada um dos
papéis do IAM predefinidos a seguir inclui as permissões
necessárias para trabalhar com índices de pesquisa:
- Proprietário de dados do BigQuery (
roles/bigquery.dataOwner
) - Editor de dados do BigQuery (
roles/bigquery.dataEditor
) - Administrador do BigQuery (
roles/bigquery.admin
)
Limitações
- Não é possível criar um índice de pesquisa diretamente em uma visualização ou visualização materializada, mas
chamar a
função
SEARCH
na visualização de uma tabela indexada faz uso do índice de pesquisa subjacente. - Não é possível criar um índice de pesquisa em uma tabela externa.
- Se você renomear uma tabela depois de criar um índice de pesquisa, esse índice se tornará inválido.
- A função
SEARCH
foi projetada para pesquisas de ponto. A pesquisa imprecisa, a correção de digitação, os caracteres curinga e outros tipos de pesquisas em documentos não estão disponíveis. - Se o índice de pesquisa ainda não tiver 100% de cobertura, você ainda será cobrado por todo
o armazenamento de índice relatado na
visualização
INFORMATION_SCHEMA.SEARCH_INDEXES
. - As consultas que usam a função
SEARCH
ou são otimizadas por índices de pesquisa não são aceleradas pelo BigQuery BI Engine. Os índices de pesquisa não são usados quando a tabela indexada é modificada por uma instrução DML, mas podem ser usados quando o predicado que pode ser otimizado por índices de pesquisa faz parte de uma subconsulta em uma instrução DML.
- Um índice de pesquisa não é usado na seguinte consulta:
DELETE FROM my_dataset.indexed_table WHERE SEARCH(user_id, '123');
- Um índice de pesquisa pode ser usado na seguinte consulta:
DELETE FROM my_dataset.other_table WHERE user_id IN ( SELECT user_id FROM my_dataset.indexed_table WHERE SEARCH(user_id, '123') );
Os índices de pesquisa não são usados quando a consulta faz referência a visualizações materializadas.
Os índices de pesquisa não são usados em uma consulta de transação de várias instruções.
Os índices de pesquisa não são usados em uma consulta de viagem no tempo.
A seguir
- Saiba mais sobre como criar um índice de pesquisa.
- Saiba mais sobre como pesquisar em uma tabela com um índice de pesquisa.