SQL : Comment calculer la taille de mes tables et dataset dans BigQuery

Par Xavier le Dec 17, 2021
Dans un projet BigQuery, la quantité de tables peut rapidement être importante (notamment avec des tables segmentées) et il devient difficile d'estimer rapidement le volume que cela pourrait nous coûter. Voici donc quelques scripts qui permettent de nous faciliter la vie.
Image without caption

Code 👇

Calculer le volume et le coût mensuel d'un dataset

sql
select round(sum(size_bytes /(1024*1024*1024)),3) AS taille_GB_dataset, round(sum(size_bytes /(1024*1024*1024))*0.02,2) AS monthly_cost from `NOM_DATASET.__TABLES__`
Prix calculé sur la base de $0,02/Go par mois (les 10 Go de stockage gratuit par mois ne sont pas pris en compte)
Image without caption

Calculer le volume de tables remplissant certaines conditions

sql
select round(sum(size_bytes)/(1024*1024*1024),3) as taille_GB from `VOTRE_DATASET.__TABLES__` where table_id like '%google_ads%'
like '%xyz%' permet de prendre en compte toutes les tables dont le nom contient xyz
Image without caption
sql
select round(sum(size_bytes)/(1024*1024*1024),3) as taille_GB from `VOTRE_DATASET.__TABLES__` where table_id like '%202112%'
Pour les tables segmentées (sharded) il est possible de spécifier la date période voulue, comme par exemple ici : décembre 2021
Image without caption

Lister chaque table d'un dataset, avec son volume et nombre de lignes

sql
select table_id, round(sum(size_bytes)/(1024*1024*1024),3) as taille_GB, sum(row_count) as nb_lignes from `VOTRE_DATASET.__TABLES__` group by table_id order by taille_GB desc
Image without caption

Pour plusieurs dataset, afficher le nombre de tables, le volume et le nombre de lignes respectifs

sql
select dataset_id, count(*) as tables, sum(row_count) as total_lignes, round(sum(size_bytes)/(1024*1024*1024),3) as taille_GB from ( select * from `VOTRE_DATASET.__TABLES__` union all select * from `UN_AUTRE_DATASET.__TABLES__` /*union all select * from `DATASET_TER.__TABLES__` */ ) group by 1 order by total_lignes DESC
Répéter le partie commentée pour autant de dataset souhaités
Image without caption