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. - 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 contêm a função
SEARCH
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.
A seguir
- Saiba mais sobre como criar um índice de pesquisa.
- Saiba mais sobre como pesquisar em uma tabela com um índice de pesquisa.