Si vous êtes un gros utilisateur de BigQuery , vous avez très souvent connu de fort pic de consommation lors de la mise en place de vos projets. Ceci implique un monitoring des coûts des requêtes liés à votre projet. Ce suivi vous permettra de répondre aux questions suivantes : Combien de fois chaque requête/rapport a été exécuté et qui l’a exécuté ? Quel a été le coût des requêtes pour les tables, les ensembles de données (par ex. production/staging/analytics) ?
Suivre les coûts générés par vos différents traitements dans BigQuery est nécessaire si vous souhaitez optimiser les coûts de l’ensemble de votre projet. En effet, faire des requêtes ‘Select *’ sur une base GA4 sur les deux dernières années peut très rapidement vous coûter cher, très cher. Il nous est déjà arrivé de rencontrer des requêtes à 300$ ou 400$ lors de nos différentes expériences. Entre l’ingestion de données , tous les traitements de consolidation et de transformation de données dans BigQuery les coûts peuvent rapidement exploser.
La façon la plus simple de récupérer les données de coûts sur l’ensemble de votre projet GCP est d’exporter les données via Cloud Billing. Les données exportées via Cloud Billing vont concerner l’ensemble des services activées au sein de votre projet GCP. Par contre, suivant le partenaire avec lequel vous travaillez, l’accès à l’ensemble de ces données est géré par les équipes IT pour des raisons de sécurité.
Pour le coup, si vous souhaitez simplement suivre les coûts de votre consommation BigQuery, il suffit d’une requête SQL qui permettra d’analyser les coûts par :
- Dataset
- Table
- Utilisateur
- Date
SELECT
DATE(creation_time) creation_date,
FORMAT_TIMESTAMP("%F %H:%I:%S", creation_time) as query_time,
job_id,
job_type,
statement_type,
destination_table.dataset_id,
destination_table.table_id,
query,
ROUND(total_bytes_processed / 1073741824,2) as bytes_processed_in_gb,
IF(cache_hit != true, ROUND(total_bytes_processed * (5/1099511627776),4), 0) as cost_in_dollar,
project_id,
user_email,
FROM
`region-eu`.INFORMATION_SCHEMA.JOBS_BY_PROJECT --Adapter la région
WHERE
DATE(creation_time) BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 90 DAY) and CURRENT_DATE()
ORDER BY
creation_date DESC
Cette requête peut être enregistrée en tant que vue dans BigQuery et connecter à Google DataStudio :
Le reporting va permettre de suivre les pics de consommation, d’identifier la table ou le dataset concerné par la requête les plus gourmandes et aussi identifier l’utilisateur responsable de ces requêtes.
En quelques minutes, ce reporting peut être mis en place pour piloter la consommation de votre utilisation de BigQuery et estimer le budget qu’il vous faudrait pour mener à bien vos projets en utilisant BigQuery comme Data Warehouse et Data Mart.