Présentation de la recherche dans BigQuery
Les index de recherche BigQuery vous permettent de trouver efficacement des éléments de données uniques répartis dans du texte non structuré et des données JSON semi-structurées, sans avoir à connaître les schémas de table à l'avance. Les index de recherche combinent un stockage en colonnes et une recherche de texte pour vous permettre d'effectuer des recherches de lignes efficaces pour des tâches telles que l'analyse de journaux, les audits de sécurité et les rapports réglementaires.
BigQuery stocke et gère vos index. Ainsi, lorsque les données deviennent disponibles dans BigQuery, vous pouvez les récupérer immédiatement avec la fonction SEARCH ou d'autres opérateurs et fonctions compatibles. Pour optimiser vos recherches, consultez les bonnes pratiques.
Cas d'utilisation
Les index de recherche BigQuery vous permettent d'effectuer les tâches suivantes :
- Système de recherche, réseau ou journaux d'application stockés dans des tables BigQuery.
- Identifier les éléments de données à supprimer afin de respecter des processus réglementaires.
- Aide au dépannage pour les développeurs.
- Effectuer des audits de sécurité.
- Créer un tableau de bord nécessitant des filtres de recherche très sélectifs.
- Recherche des correspondances exactes dans les données prétraitées.
Pour plus d'informations, consultez les sections Créer un index de recherche et Rechercher avec un index.
Tarifs
Le traitement requis pour créer et actualiser vos index de recherche est sans frais lorsque la taille totale des tables indexées dans votre organisation est inférieure à la limite de votre région. Pour accepter l'indexation au-delà de cette limite, vous devez fournir votre propre réservation pour la gestion des jobs de gestion des index.
Les index de recherche entraînent des coûts de stockage lorsqu'ils sont actifs.
Vous pouvez trouver la taille de stockage de l'index dans la vue INFORMATION_SCHEMA.SEARCH_INDEXES.
Rôles et autorisations
Pour créer un index de recherche, vous devez disposer de l'autorisation IAM bigquery.tables.createIndex sur la table dans laquelle vous créez l'index. Pour supprimer un index de recherche, vous devez disposer de l'autorisation bigquery.tables.deleteIndex. Chacun des rôles IAM prédéfinis suivants inclut les autorisations dont vous avez besoin pour travailler avec les index de recherche :
- Propriétaire de données BigQuery (
roles/bigquery.dataOwner) - Éditeur de données BigQuery (
roles/bigquery.dataEditor) - Administrateur BigQuery (
roles/bigquery.admin)
Limites
- Vous ne pouvez pas créer un index de recherche directement sur une vue ou une vue matérialisée, mais l'appel de la fonction
SEARCHsur une vue d'une table indexée utilise l'index de recherche sous-jacent. - Vous ne pouvez pas créer d'index de recherche sur une table externe.
- Si vous renommez une table de base après avoir créé un index de recherche, l'index devient non valide.
- La fonction
SEARCHest conçue pour les recherches de points. Les recherches floues, la correction des fautes de frappe, les caractères génériques et les autres types de recherches de documents ne sont pas disponibles. - Si l'index de recherche n'est pas encore à 100 % de la couverture, vous êtes toujours facturé pour tout le stockage d'index indiqué dans la vue
INFORMATION_SCHEMA.SEARCH_INDEXES. - Les requêtes qui utilisent la fonction
SEARCHou qui sont optimisées par des index de recherche ne sont pas accélérées par BigQuery BI Engine. Les index de recherche ne sont pas utilisés lorsque la table indexée est modifiée par une instruction LMD, mais ils peuvent être utilisés lorsque le prédicat optimisable par les index de recherche fait partie d'une sous-requête dans une instruction LMD.
- Un index de recherche n'est pas utilisé dans la requête suivante :
DELETE FROM my_dataset.indexed_table WHERE SEARCH(user_id, '123');
- Un index de recherche peut être utilisé dans la requête suivante :
DELETE FROM my_dataset.other_table WHERE user_id IN ( SELECT user_id FROM my_dataset.indexed_table WHERE SEARCH(user_id, '123') );
Les index de recherche ne sont pas utilisés lorsque la requête fait référence à des vues matérialisées.
Les index de recherche ne sont pas utilisés dans une requête de transaction multi-instructions.
Les index de recherche ne sont pas utilisés dans une requête de voyage temporel.
Étapes suivantes
- Apprenez-en plus sur la création d'un index de recherche
- En savoir plus sur la recherche dans une table avec un index de recherche.