Introdução à pesquisa no BigQuery
Os índices de pesquisa do BigQuery permitem-lhe usar o GoogleSQL para encontrar de forma eficiente elementos de dados únicos que estão ocultos em texto não estruturado e dados JSON semiestruturados, sem ter de conhecer os esquemas das tabelas antecipadamente.
Com os índices de pesquisa, o BigQuery oferece um poderoso armazenamento em colunas e pesquisa de texto numa única plataforma, o que permite pesquisas de linhas eficientes quando precisa de encontrar linhas de dados individuais. Um exemplo de utilização comum são as estatísticas de registos. Por exemplo, pode querer identificar as linhas de dados associadas a um utilizador para relatórios do Regulamento Geral sobre a Proteção de Dados (RGPD) ou encontrar códigos de erro específicos num payload de texto.
O BigQuery armazena e gere os seus índices, para que, quando os dados ficarem disponíveis no BigQuery, possa obtê-los imediatamente com a função SEARCH
ou outros operadores e funções, como os operadores igual (=
), IN
ou LIKE
e determinadas funções de strings e JSON. Para otimizar as suas pesquisas, leia as práticas recomendadas.
Exemplos de utilização
Os índices de pesquisa do BigQuery ajudam a realizar as seguintes tarefas:
- Pesquise registos de sistemas, redes ou aplicações armazenados em tabelas do BigQuery.
- Identificar elementos de dados para eliminação de modo a agir em conformidade com os processos regulamentares.
- Apoiar a resolução de problemas por parte dos programadores.
- Realizar auditorias de segurança.
- Criar um painel de controlo que requer filtros de pesquisa altamente seletivos.
- Pesquise dados pré-processados para encontrar correspondências exatas.
Para mais informações, consulte os artigos Crie um índice de pesquisa e Pesquise com um índice.
Preços
Não existe qualquer custo para o processamento necessário para criar e atualizar os seus índices de pesquisa quando o tamanho total das tabelas indexadas na sua organização for inferior ao limite da sua região. Para suportar a indexação além deste limite,
tem de
fornecer a sua própria reserva
para processar as tarefas de gestão de índices.
Os índices de pesquisa incorrem em custos de armazenamento quando estão ativos.
Pode encontrar o tamanho do armazenamento do índice na vista INFORMATION_SCHEMA.SEARCH_INDEXES
.
Funções e permissões
Para criar um índice de pesquisa, precisa da
bigquery.tables.createIndex
autorização de IAM
na tabela onde está a criar o índice. Para eliminar um índice de pesquisa, precisa da autorização bigquery.tables.deleteIndex
. Cada uma das seguintes funções de IAM predefinidas inclui as autorizações de que precisa 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 pode criar um índice de pesquisa diretamente numa vista ou numa vista materializada, mas
chamar a função
SEARCH
numa vista de uma tabela indexada usa o índice de pesquisa subjacente. - Não pode criar um índice de pesquisa numa tabela externa.
- Se mudar o nome de uma tabela depois de criar um índice de pesquisa na mesma, o índice torna-se inválido.
- A função
SEARCH
foi concebida para pesquisas de pontos. A pesquisa aproximada, a correção de erros ortográficos, os carateres universais e outros tipos de pesquisas de documentos não estão disponíveis. - Se o índice de pesquisa ainda não tiver uma cobertura de 100%, continua a ser cobrado por todo o armazenamento de índice comunicado 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 declaração DML, mas podem ser usados quando o predicado que é otimizável por índices de pesquisa faz parte de uma subconsulta numa declaração DML.
- Não é usado um índice de pesquisa na seguinte consulta:
DELETE FROM my_dataset.indexed_table WHERE SEARCH(user_id, '123');
- Pode usar um índice de pesquisa 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 vistas materializadas.
Os índices de pesquisa não são usados numa consulta de transação com várias declarações.
Os índices de pesquisa não são usados numa consulta de viagem no tempo.
O que se segue?
- Saiba como criar um índice de pesquisa.
- Saiba mais sobre a pesquisa numa tabela com um índice de pesquisa.