Interroger et analyser des données Bigtable avec BigQuery

BigQuery est un entrepôt de données géré qui peut vous aider à interroger et analyser vos données Bigtable à l'aide de requêtes SQL. BigQuery est utile pour les analystes et ingénieurs de données, ou à toute personne voulant utiliser les données Bigtable pour répondre les questions commerciales.

BigQuery vous permet d'interroger vos données Bigtable depuis BigQuery. Cette fonctionnalité est utile lorsque vous souhaitez joindre vos données Bigtable à des tables BigQuery.

Ce document explique comment interroger des données Bigtable avec dans BigQuery. Avant de lire cette page, vous devez connaître la Présentation de Bigtable et Présentation de BigQuery

Utiliser BigQuery pour interroger une table Bigtable est idéal pour les tables ayant les mêmes familles de colonnes et qualificatifs de colonne dans toutes les ligne.

Création de tables externes

Pour pouvoir interroger vos données Bigtable, vous (ou un administrateur) votre organisation, vous devez créer Table externe, qui est une table BigQuery contenant des métadonnées vers la table Bigtable à laquelle vous envoyez vos requêtes. Pour en savoir plus sur les tables externes, consultez la page Présentation des sources de données externes.

Vous devez créer la table externe dans la même région que la table table Bigtable. Par exemple, cela signifie que si la table se trouve dans une instance qui comporte des clusters dans europe-central2-a (Varsovie), europe-west1-c (Belgique) et asia-east1-a (Tokyo), vous devez créer la table externe à Varsovie, en Belgique ou à Tokyo.

Dans la plupart des cas, lorsque vous créez une table externe, définissez readRowkeyAsString et ignoreUnspecifiedColumnFamilies sur true.

Lorsque ignoreUnspecifiedColumnFamilies est défini sur "true", lorsque vous créez une définition de table qui n'inclut que certaines colonnes d'une famille de colonnes, seules les colonnes sélectionnées sont promues en tant que colonnes dans la table externe. Les données des colonnes non sélectionnées sont regroupées dans une colonne column générale.

Pour créer votre table externe, suivez les instructions de la section Créer une table externe Bigtable.

Interroger les données de la table externe

Une fois que vous avez une table externe pour votre table Bigtable, vous pouvez lui envoyer des requêtes SQL à l'aide de l'une des méthodes suivantes :

Pour savoir comment composer et exécuter une requête, consultez Exécutez une requête. Pour les instructions spécifiques à Bigtable, y compris les autorisations requises et des exemples de code, consultez Interroger des données Bigtable

Requêtes programmées

Les requêtes planifiées sont utiles lorsque vous souhaitez importer des données Bigtable dans BigQuery de manière récurrente. Ils sont également utiles pour les cas d'utilisation qui pourraient vous obliger à créer un pipeline de données diffuser les données vers BigQuery. Pour savoir comment gérer les requêtes planifiées, consultez la section Planifier des requêtes.

Éviter les analyses complètes de table

Semblable à l'envoi de requêtes de lecture directement à votre Bigtable lorsque vous interrogez la table externe pour la table, d'éviter les analyses complètes de tables. Les analyses de table complètes augmentent l'utilisation du processeur beaucoup plus long que les requêtes sélectives. Elles nécessitent également un débit BigQuery plus important.

Si votre requête implique toutes les lignes, elle déclenche une analyse complète de la table. En revanche, si vous limitez la requête et demandez une plage de lignes ou des lignes non contiguës spécifiées, l'intégralité de la table n'est pas analysée. Exemples dans La syntaxe GoogleSQL qui permet de limiter la requête est la suivante:

  • WHERE rowkey = "abc123"
  • WHERE rowkey BETWEEN "abc123" PRECEDING AND "abc999" FOLLOWING
  • WHERE rowkey > 999999 (si vous lisez la clé de ligne sous forme de chaîne)

Jointures

Si vous prévoyez d'utiliser une jointure pour analyser les données de votre table Bigtable avec des données provenant d'une autre source, vous devez créer une sous-requête qui extrait de Bigtable les champs pertinents pour la jointure prévue. Pour découvrir d'autres bonnes pratiques de jointure de tables, consultez Optimisez le calcul des requêtes.

Coûts

Lorsque vous créez une table externe et l'interrogez, les coûts BigQuery et l'augmentation du nombre de nœuds Bigtable requis pour gérer le trafic vous sont facturés. En effet, votre table externe se trouve dans la même région que votre table Bigtable, aucuns frais de réseau ne sont facturés.

Si vous avez tendance à exécuter vos requêtes en heures ouvrables, envisagez d'activer l'autoscaling Bigtable afin que le nombre de nœuds augmente si nécessaire, puis diminue lorsque les tâches sont terminées. L'autoscaling est également une tactique efficace si vous exécutez des requêtes planifiées sans échéances strictes.

Une autre façon de limiter les coûts éviter une analyse complète de la table.

Pour en savoir plus sur l'optimisation des coûts pour BigQuery, consultez la page Estimer et contrôler les coûts.

Limites

Les limites suivantes s'appliquent :

  • Vous ne pouvez pas utiliser BigQuery pour interroger les données Bigtable stockées au format JSON.
  • Les résultats de requête contenant des données sérialisées avec des types imbriqués, tels que les tampons de protocole (protobufs) et les formats Avro, peuvent s'afficher de manière incorrecte ou être difficiles à lire dans la console Google Cloud.

Étape suivante