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 :
- Dans la ligne de commande à l'aide de
bq
, la CLI BigQuery - Appels à l'API BigQuery
- L'une des bibliothèques clientes BigQuery
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
- Découvrez la différence entre les tables externes et les requêtes fédérées.
- Créez une table externe Bigtable.
- Interroger des données Bigtable stockées dans une table externe
- Exporter des données de BigQuery vers Bigtable