Stockage des tables BigQuery par date de dernière requête
Les coûts de stockage dans BigQuery sont souvent négligés car ils sont faibles par rapport aux coûts de calcul. Mais avec le temps, l'accumulation de tables obsolètes que personne ne consulte peut représenter des dépenses mensuelles significatives. Cette requête montre chaque table triée par date de dernière consultation, avec son coût de stockage.
Pourquoi c'est important
Les grandes organisations peuvent accumuler des milliers de tables qui ne sont plus utilisées — restes d'anciens pipelines, analyses ponctuelles ou fonctionnalités dépréciées. Ces tables accumulent silencieusement des frais de stockage chaque mois. En identifiant les tables qui n'ont pas été consultées depuis des semaines ou des mois, vous pouvez les archiver, les supprimer ou les convertir en niveaux de stockage moins coûteux.
Comment ça fonctionne
La requête joint INFORMATION_SCHEMA.JOBS_BY_PROJECT (pour trouver la dernière heure de requête par table) avec TABLE_STORAGE (pour les données de taille) et TABLE_OPTIONS (pour déterminer le modèle de facturation logique vs physique). Elle calcule le coût de stockage basé sur les octets actifs vs long terme en utilisant les tarifs publiés par Go de Google.
Requête SQL
Fill in your details to get a ready-to-run query:
-- Find stale tables sorted by last query date with storage cost
DECLARE lookback_days INT64 DEFAULT 30;
-- US multi-region pricing ($/GiB/month)
DECLARE logical_active_price NUMERIC DEFAULT 0.02;
DECLARE logical_longterm_price NUMERIC DEFAULT 0.01;
DECLARE physical_active_price NUMERIC DEFAULT 0.04;
DECLARE physical_longterm_price NUMERIC DEFAULT 0.02;
WITH last_access AS (
SELECT
ref.project_id, ref.dataset_id, ref.table_id,
MAX(j.creation_time) AS last_query_at
FROM `your-project`.`region-us`.INFORMATION_SCHEMA.JOBS_BY_PROJECT j,
UNNEST(j.referenced_tables) ref
WHERE j.state = 'DONE' AND j.job_type = 'QUERY'
AND j.creation_time >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL lookback_days DAY)
GROUP BY 1, 2, 3
),
storage_info AS (
SELECT
s.project_id,
s.table_schema AS dataset_id,
s.table_name AS table_id,
IFNULL(opt.option_value, 'LOGICAL') AS model,
IF(opt.option_value = 'PHYSICAL', s.total_physical_bytes, s.total_logical_bytes) AS size_bytes,
IF(opt.option_value = 'PHYSICAL', s.active_physical_bytes, s.active_logical_bytes) AS active_bytes,
IF(opt.option_value = 'PHYSICAL', s.long_term_physical_bytes, s.long_term_logical_bytes) AS lt_bytes
FROM `your-project`.`region-us`.INFORMATION_SCHEMA.TABLE_STORAGE s
...Explication de la requête
La requête croise deux sources de données : les métadonnées de jobs (pour la dernière heure de requête par table) et les métadonnées de stockage de table (pour la taille et le modèle de facturation). Les tables qui n'ont jamais été consultées dans la fenêtre de rétention apparaissent en premier (NULLS FIRST). Le coût de stockage est calculé en utilisant les octets actifs vs long terme avec la tarification appropriée pour le modèle de facturation logique ou physique.
Points clés
Les tables en haut de la liste (jamais consultées ou consultées il y a longtemps) sont des candidates idéales pour la suppression ou l'archivage.
Les grandes tables qui n'ont pas été consultées peuvent encore être référencées par d'autres systèmes — vérifiez avant de supprimer.
Les tables de plus de 90 jours obtiennent automatiquement la tarification long terme (50 % moins cher), mais la suppression des tables inutilisées économise 100 %.
Les tables avec le modèle de facturation physique coûtent 2x par Gio mais bénéficient de la compression — vérifiez si vos tables sont hautement compressibles.
Meilleures pratiques
- 1
Configurez une revue mensuelle des tables non consultées dans les 30 derniers jours.
- 2
Implémentez des politiques d'expiration des tables (default_table_expiration_ms sur les datasets) pour les données temporaires.
- 3
Archivez les tables importantes mais inutilisées vers Google Cloud Storage (moins cher que le stockage BigQuery).
- 4
Basculez les datasets avec des ratios de compression élevés vers le modèle de facturation physique pour jusqu'à 70 % d'économies de stockage.
Voulez-vous que CloudClerk trouve ces économies automatiquement ?
Notre plateforme se connecte à votre projet BigQuery, exécute ces analyses automatiquement et fournit des recommandations d'optimisation basées sur l'IA — tout avec vos données entièrement anonymisées.
Guides associés
Analyse des coûts BigQuery par requête
Analysez le coût, l'utilisation des slots et le temps d'exécution de chaque requête individuelle. Obtenez une ventilation détaillée du coût à la demande par exécution.
Lire le guideTop requêtes BigQuery par coût
Trouvez les requêtes BigQuery les plus coûteuses par coût à la demande. Classez les requêtes par total d'octets facturés pour identifier les principaux facteurs de coût.
Lire le guideBigQuery à la demande vs Editions : comparaison des coûts par requête
Comparez la tarification à la demande et Editions BigQuery pour chaque requête. Obtenez des recommandations par requête pour les éditions Standard, Enterprise et Enterprise Plus.
Lire le guideAnalyse des coûts BigQuery par projet
Suivez les coûts BigQuery à travers les projets GCP. Utilisez INFORMATION_SCHEMA pour comparer les dépenses au niveau projet et trouver les projets les plus coûteux.
Lire le guide