Aller au contenu principal
2026 Data Bigquery Optimization

2026 Data Bigquery Optimization

1 minParcours DataLangue fr
Rédaction;
Rédaction
Publié le
Lire en anglais

Optimiser BigQuery : Performance et coûts

BigQuery est puissant, mais mal optimisé, il peut coûter cher. Voici comment améliorer les performances et réduire les coûts.

Comprendre le pricing BigQuery

Modèle de facturation

  • On-demand : Payez par requête (premiers 1 TB gratuits/mois)
  • Flat-rate : Prix fixe mensuel (slots réservés)

Coûts principaux

  1. Storage : $0.02/GB/mois
  2. Query processing : $5/TB (après 1 TB gratuit)
  3. Streaming inserts : $0.01/200 MB

Optimisations de requêtes

1. Sélectionner uniquement les colonnes nécessaires

Mauvais :

SELECT * FROM `project.dataset.table`

Bon :

SELECT id, name, email FROM `project.dataset.table`

2. Utiliser les partitions

-- Table partitionnée par date
CREATE TABLE `project.dataset.events`
(
  event_id INT64,
  event_date DATE,
  event_data STRING
)
PARTITION BY event_date;

-- Requête optimisée avec partition
SELECT * FROM `project.dataset.events`
WHERE event_date = '2024-12-15'

3. Clustering pour les filtres fréquents

CREATE TABLE `project.dataset.users`
(
  user_id INT64,
  country STRING,
  created_at TIMESTAMP
)
CLUSTER BY country;

4. Éviter les SELECT DISTINCT

Mauvais :

SELECT DISTINCT user_id FROM events

Bon :

SELECT user_id FROM events
GROUP BY user_id

Optimisations de stockage

1. Compression

  • Utilisez les formats compressés (Parquet, Avro)
  • Évitez JSON non compressé

2. Nettoyage régulier

-- Supprimer les anciennes partitions
DELETE FROM `project.dataset.events`
WHERE event_date < DATE_SUB(CURRENT_DATE(), INTERVAL 90 DAY)

3. Expiration automatique

ALTER TABLE `project.dataset.temp_data`
SET OPTIONS(expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 7 DAY));

Best Practices

1. Utiliser les vues matérialisées

CREATE MATERIALIZED VIEW `project.dataset.daily_stats`
AS
SELECT 
  DATE(created_at) as date,
  COUNT(*) as events
FROM `project.dataset.events`
GROUP BY date;

2. Cache des résultats

BigQuery cache automatiquement les résultats identiques pendant 24h. Réutilisez les requêtes quand possible.

3. Limiter les données scannées

-- Utiliser LIMIT tôt dans la requête
SELECT * FROM (
  SELECT * FROM large_table
  LIMIT 1000
) WHERE condition

Monitoring des coûts

1. BigQuery Console

  • Voir les requêtes coûteuses
  • Analyser les patterns d'utilisation
  • Identifier les optimisations possibles

2. Alerts de coût

-- Créer une alerte si coût > seuil
CREATE ALERT IF (
  SELECT SUM(total_bytes_processed) 
  FROM `region-us.INFORMATION_SCHEMA.JOBS_BY_PROJECT`
  WHERE creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY)
) > 1000000000000  -- 1 TB

Conclusion

Optimiser BigQuery nécessite de comprendre le pricing et d'appliquer les bonnes pratiques. Suivez ces conseils pour améliorer les performances et réduire les coûts.