Get a free observability report to evaluate the potential savingsContact us →
Analyse des coûts3 min de lecture

Analyse des coûts BigQuery par projet

Lorsque votre organisation exécute BigQuery sur plusieurs projets GCP, comprendre quel projet génère le plus de coûts est essentiel pour l'allocation budgétaire et la refacturation. Cette requête fournit une attribution des coûts au niveau projet en utilisant INFORMATION_SCHEMA.

Pourquoi c'est important

Les environnements multi-projets sont la norme dans les configurations GCP matures — projets séparés pour la production, le staging, l'analytique et la data science. Sans visibilité des coûts au niveau projet, les équipes ne peuvent pas effectuer de refacturation précise, définir des budgets significatifs ni identifier quel projet nécessite en premier une attention d'optimisation.

Comment ça fonctionne

Cette requête lit depuis INFORMATION_SCHEMA.JOBS_BY_PROJECT et regroupe les coûts par project_id. Pour une visibilité à l'échelle de l'organisation, vous exécuteriez des requêtes similaires contre JOBS_BY_ORGANIZATION (requiert un accès au niveau organisation). Le coût à la demande total de chaque projet est calculé à partir des octets facturés à 6,25 $/Tio.

Requête SQL

Fill in your details to get a ready-to-run query:

SQL
-- Aggregate on-demand cost per GCP project

DECLARE lookback_days INT64 DEFAULT 30;

WITH jobs AS (
  SELECT
    project_id,
    job_id,
    COALESCE(total_bytes_billed, 0) AS bytes_billed,
    ROW_NUMBER() OVER (PARTITION BY job_id ORDER BY end_time DESC) AS rn
  FROM `your-project`.`region-us`.INFORMATION_SCHEMA.JOBS_BY_PROJECT
  WHERE creation_time >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL lookback_days DAY)
    AND job_type = 'QUERY' AND state = 'DONE' AND total_slot_ms IS NOT NULL
),
deduplicated AS (
  SELECT project_id, job_id, bytes_billed FROM jobs WHERE rn = 1
)
SELECT
  project_id,
  COUNT(DISTINCT job_id) AS total_jobs,
  ROUND(SUM(bytes_billed) / POW(1024, 3), 2) AS gib_scanned,
  ROUND(SUM(bytes_billed) / POW(1024, 4) * 6.25, 2) AS estimated_cost_usd
FROM deduplicated
GROUP BY project_id
ORDER BY estimated_cost_usd DESC
Remplacez your-project et region-us par votre projet GCP et la région de votre dataset.

Explication de la requête

La requête collecte tous les jobs de requête terminés, déduplique par job_id, regroupe par project_id et additionne total_bytes_billed. Elle compte également les jobs distincts par projet pour voir quels projets exécutent le plus de requêtes. La formule du coût à la demande est octets / 1024^4 * 6,25 $.

Points clés

  • lightbulb

    Les projets de staging et de développement peuvent parfois coûter plus que la production si les ingénieurs exécutent des requêtes exploratoires non optimisées.

  • lightbulb

    Les projets avec un nombre élevé de jobs mais un faible coût exécutent des requêtes efficaces — étudiez leurs modèles.

  • lightbulb

    Les projets avec peu de jobs mais un coût élevé ont des requêtes individuelles coûteuses qui méritent d'être investiguées.

  • lightbulb

    Croisez avec la requête par utilisateur pour voir quels utilisateurs sont responsables des coûts dans chaque projet.

Meilleures pratiques

  1. 1

    Configurez des alertes budgétaires par projet dans la console de facturation GCP.

  2. 2

    Utilisez des comptes de facturation séparés ou des labels pour la refacturation aux unités commerciales.

  3. 3

    Envisagez d'utiliser BigQuery Editions avec des réservations assignées par projet pour des coûts prévisibles.

  4. 4

    Examinez les coûts au niveau projet mensuellement et signalez tout projet avec une augmentation >20 % d'un mois à l'autre.

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