🤌

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

Twitter LinkedIn Nos services

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

Par Xavier le @December 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

Code 👇

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

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

Calculer le volume de tables remplissant certaines conditions

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
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

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

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

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

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

Tous les articles concernant Google BigQuery