Esempi di query per l'esportazione dei dati di fatturazione Cloud

Questo documento fornisce alcuni esempi di come eseguire query sui dati di fatturazione Cloud esportati e archiviati in BigQuery.

Per ulteriori informazioni sull'esportazione dei dati di fatturazione in BigQuery, consulta la panoramica e le limitazioni.

Generare una query SQL da un report sulla fatturazione

Per scrivere rapidamente una query SQL che restituisca risultati equivalenti in BigQuery a quelli di un report sulla fatturazione, puoi utilizzare la funzionalità Genera query nei report sulla fatturazione, disponibile nella console Google Cloud .

Specificare il nome tabella da utilizzare nelle query

In questi esempi, per eseguire query sui dati di fatturazione Cloud esportati in BigQuery, devi specificare il percorso completo del nome della tabella nella clausola FROM. Il nome della tabella viene determinato utilizzando tre valori separati da punti:

project-ID.dataset_name.BQ_table_name

Ad esempio, supponiamo di avere un account di fatturazione Cloud configurato per l'esportazione dei dati di costo di utilizzo dettagliato e che i componenti della configurazione dell'esportazione della fatturazione siano i seguenti:

  • project-ID: my-billing-project
  • dataset_name: my_billing_dataset
  • BQ_table_name: gcp_billing_export_resource_v1_<BILLING-ACCOUNT-ID>
  • BILLING-ACCOUNT-ID: 010101-F0FFF0-10X10X: l'ID dell'account di fatturazione Cloudg che contiene i dati di fatturazione che stai esportando. Scopri come trovare l'ID account di fatturazione.

In base ai valori di esempio, scriveresti la clausola FROM nel seguente modo:

my-billing-project.my_billing_dataset.gcp_billing_export_resource_v1_010101-F0FFF0-10X10X

Esempi di query per tipo di dati di fatturazione Cloud

Questa sezione fornisce esempi di query per i tuoi dati di costo di utilizzo standard, i dati di costo di utilizzo dettagliato e i dati di prezzo.

Se hai scelto di esportare i dati di costo di utilizzo dettagliati, puoi utilizzare gli esempi di query Costo di utilizzo standard oltre a quelli Costo di utilizzo dettagliato.

Dati di costo di utilizzo standard Dati dettagliati sui costi di utilizzo Dati sui prezzi
Esempi di query sul costo di utilizzo standard Esempi di query sul costo di utilizzo dettagliato Esempi di query sui dati dei prezzi

Esempi di query sul costo di utilizzo standard

Questa sezione fornisce esempi di come eseguire query sui dati sul costo di utilizzo standard della fatturazione Cloud esportati in BigQuery.

Questi esempi di query funzionano anche con i dati sul costo di utilizzo dettagliato esportati in BigQuery, anche se non sono scritti per recuperare nessuna delle informazioni a livello di risorsa fornite con l'opzione di esportazione del costo di utilizzo dettagliato.

Valori comuni utilizzati nelle query di costo standard di esempio

Gli esempi di query in questa sezione utilizzano il seguente valore per Nome tabella: project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX

Restituire i costi totali di una fattura

Le seguenti query mostrano due modi per visualizzare i valori di costi e crediti utilizzando i dati di fatturazione esportati.

  • Il campo total somma direttamente i valori di costo e credito in virgola mobile, il che può comportare errori di arrotondamento in virgola mobile.
  • Il campo total_exact converte i costi e i valori del credito in micro prima di sommarli, poi li riconverte in dollari dopo la somma, evitando l'errore di arrotondamento in virgola mobile.

Esempio 1: somma di tutti i costi per fattura

Questa query mostra il totale delle fatture di ogni mese, come somma di costi, tasse, aggiustamenti ed errori di arrotondamento standard.

SQL standard

SELECT
  invoice.month,
  SUM(cost)
    + SUM(IFNULL((SELECT SUM(c.amount)
                  FROM UNNEST(credits) c), 0))
    AS total,
  (SUM(CAST(cost AS NUMERIC))
    + SUM(IFNULL((SELECT SUM(CAST(c.amount AS NUMERIC))
                  FROM UNNEST(credits) AS c), 0)))
    AS total_exact
FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX`
GROUP BY 1
ORDER BY 1 ASC
;

Ad esempio, il risultato della query precedente potrebbe essere:

Riga mese totale total_exact
1 201901 1005,004832999999984 $ 1005,00 $
2 201902 992,3101739999999717 $ 992,31 $
3 201903 1220,761089999999642 $ 1220,76 $

Esempio 2: restituisci i dettagli per tipo di costo, per mese di fatturazione

Questa query mostra i totali per ogni cost_type per ogni mese. I tipi di costo includono costi standard, tasse, aggiustamenti ed errori di arrotondamento.

SQL standard

SELECT
  invoice.month,
  cost_type,
  SUM(cost)
    + SUM(IFNULL((SELECT SUM(c.amount)
                  FROM   UNNEST(credits) c), 0))
    AS total,
  (SUM(CAST(cost AS NUMERIC))
    + SUM(IFNULL((SELECT SUM(CAST(c.amount AS NUMERIC))
                  FROM UNNEST(credits) AS c), 0)))
    AS total_exact
FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX`
GROUP BY 1, 2
ORDER BY 1 ASC, 2 ASC
;

Ad esempio, il risultato della query precedente potrebbe essere:

Riga mese cost_type totale total_exact
1 201901 standard 1000,501209987994782 $ 1000,50 $
2 201901 rounding_error –$0,500489920049387 –0,50 $
3 201901 tax 10,000329958477891 $ $ 10,00
4 201901 aggiustamento –$5.002572999387045 –5,00 $

Esempi di query con etichette

Gli esempi seguenti illustrano altri modi per eseguire query sui dati con le etichette.

Per gli esempi in questa sezione, supponi quanto segue:

  • Hai due app (spremipompelmo e schiacciacioccolato).
  • Per ogni app, hai due ambienti (sviluppo e produzione).
  • L'ambiente di sviluppo ha una piccola istanza per app.
  • L'ambiente di produzione ha una piccola istanza nelle Americhe e una piccola istanza in Asia.
  • Ogni istanza è etichettata con l'app e l'ambiente.
  • Hai un'istanza senza etichette che utilizzi per la sperimentazione.

La tua fattura totale è di 24 $con la seguente suddivisione:

Istanza Etichette Costo totale
Piccola istanza con una vCPU in esecuzione nelle Americhe Nessuna $ 4
Piccola istanza con una vCPU in esecuzione nelle Americhe app: chocolate-masher
environment: dev
2 $
Piccola istanza con una vCPU in esecuzione nelle Americhe app: grapefruit-squeezer
environment: dev
3 $
Piccola istanza con una vCPU in esecuzione nelle Americhe app: chocolate-masher
environment: prod
$ 3,25
Piccola istanza con una vCPU in esecuzione in Asia app: chocolate-masher
environment: prod
$ 3,75
Piccola istanza con una vCPU in esecuzione nelle Americhe app: grapefruit-squeezer
environment: prod
$ 3,50
Piccola istanza con una vCPU in esecuzione in Asia app: grapefruit-squeezer
environment: prod
$ 4,50

Esecuzione di query su ogni riga senza raggruppamento

La visualizzazione più granulare di questi costi si otterrebbe eseguendo una query su ogni riga senza raggruppamento. Supponi che tutti i campi, eccetto le etichette e la descrizione della SKU, siano gli stessi (progetto, servizio e così via).

SQL standard

SELECT
  sku.description,
  TO_JSON_STRING(labels) as labels,
 cost as cost
FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX`;

SQL precedente

TO_JSON_STRING not supported.
Riga sku.description etichette costo
1 Piccola istanza con una vCPU in esecuzione nelle Americhe [] $ 4
2 Piccola istanza con una vCPU in esecuzione nelle Americhe [{"key":"app","value":"chocolate-masher"},{"key":"environment","value":"dev"}] $ 2
3 Piccola istanza con una vCPU in esecuzione nelle Americhe [{"key":"app","value":"grapefruit-squeezer"},{"key":"environment","value":"dev"}] $ 3
4 Piccola istanza con una vCPU in esecuzione nelle Americhe [{"key":"app","value":"chocolate-masher"},{"key":"environment","value":"prod"}] $ 3,25
5 Piccola istanza con una vCPU in esecuzione in Asia [{"key":"app","value":"chocolate-masher"},{"key":"environment","value":"prod"}] $ 3,75
6 Piccola istanza con una vCPU in esecuzione nelle Americhe [{"key":"app","value":"grapefruit-squeezer"},{"key":"environment","value":"prod"}] $ 3,50
7 Piccola istanza con una vCPU in esecuzione in Asia [{"key":"app","value":"grapefruit-squeezer"},{"key":"environment","value":"prod"}] $ 4,50
TOTALE $ 24

Raggruppamento per mappa di etichetta sotto forma di stringa JSON

Questo è un modo semplice per suddividere i costi in base a ogni combinazione di etichette.

SQL standard

SELECT
  TO_JSON_STRING(labels) as labels,
  sum(cost) as cost
FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX`
GROUP BY labels;

SQL precedente

TO_JSON_STRING not supported.
Riga etichette costo
1 [] $ 4
2 [{"key":"app","value":"chocolate-masher"},{"key":"environment","value":"dev"}] $ 2
3 [{"key":"app","value":"grapefruit-squeezer"},{"key":"environment","value":"dev"}] $ 3
4 [{"key":"app","value":"chocolate-masher"},{"key":"environment","value":"prod"}] $ 7
5 [{"key":"app","value":"grapefruit-squeezer"},{"key":"environment","value":"prod"}] $ 8
TOTALE $ 24

Raggruppamento per valore di etichetta per una chiave specifica

La ripartizione dei costi per i valori di una chiave di etichetta specifica è un caso d'uso comune. Se utilizzi un LEFT JOIN e inserisci il filtro della chiave nella condizione JOIN (anziché WHERE), includi i costi che non contengono questa chiave e ricevi una visione completa dei costi.

SQL standard

SELECT
  labels.value as environment,
  SUM(cost) as cost
FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX`
LEFT JOIN UNNEST(labels) as labels
  ON labels.key = "environment"
GROUP BY environment;

SQL precedente

SELECT
  labels.value as environment,
  SUM(cost) as cost
FROM [project-ID:dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX]
WHERE labels.key = "environment" OR labels.key IS NULL
GROUP BY environment;
Riga ambiente costo
1 prod $ 15
2 dev $ 5
3 null $ 4
TOTALE $ 24

Raggruppamento per coppie chiave/valore

Fai attenzione al momento di interpretare o esportare questi risultati. Una singola riga qui mostra una somma valida senza conteggi doppi, ma non deve essere combinata con altre righe (tranne se la chiave è la stessa o se hai la certezza che le chiavi non vengano mai impostate sulla stessa risorsa).

SQL standard

SELECT
  labels.key as key,
  labels.value as value,
  SUM(cost) as cost
FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX`
LEFT JOIN UNNEST(labels) as labels
GROUP BY key, value;

SQL precedente

SELECT
  labels.key as key,
  labels.value as value,
  SUM(cost)
FROM [project-ID:dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX]
GROUP BY key, value;
Riga chiave valore costo
1 null null $ 4
2 app chocolate-masher $ 9
3 app grapefruit-squeezer $ 11
4 environment dev $ 5
5 environment prod $ 15
TOTALE $ 44

Nota come la somma totale sia maggiore dell'importo della tua fattura.

Query sugli sconti per impegno di utilizzo

Le seguenti query mostrano i modi per visualizzare le commissioni e i crediti associati agli sconti per impegno di utilizzo nei dati di fatturazione esportati. Per capire come le commissioni e i crediti per impegno vengono attribuiti al tuo account di fatturazione Cloud e ai tuoi progetti, consulta Attribuzione degli sconti per impegno di utilizzo.

Visualizzazione delle tariffe di impegno

Per visualizzare le commissioni per l'impegno per gli sconti per utilizzo garantito nell'esportazione dei dati di fatturazione, utilizza la seguente query di esempio.

SQL standard

SELECT
    invoice.month AS invoice_month,
    SUM(cost) as commitment_fees
FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX`
WHERE LOWER(sku.description) LIKE "commitment%"
GROUP BY 1

Visualizzazione dei crediti per impegno

Per visualizzare i crediti dello sconto per utilizzo di cui è stato eseguito il commit nell'esportazione dei dati di fatturazione, utilizza la seguente query di esempio.

SQL standard

SELECT
    invoice.month AS invoice_month,
    SUM(credits.amount) as CUD_credits
FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX`
LEFT JOIN UNNEST(credits) AS credits
WHERE credits.type = "COMMITTED_USAGE_DISCOUNT"
GROUP BY 1

Utilizzare i filtri della gerarchia delle risorse per esaminare la discendenza

Puoi utilizzare i filtri della gerarchia delle risorse per aggregare i costi in base agli elementi della gerarchia, come progetti, cartelle e organizzazioni. Questi esempi di query mostrano i metodi per sommare i costi filtrati in base agli elementi della gerarchia delle risorse e visualizzare le genealogie dei progetti.

Esempio 1: filtrare per nome risorsa

Questo esempio mostra query che raggruppano i costi in base alla gerarchia del progetto e filtrano solo i costi generati in un elemento della gerarchia specificato, identificato dal nome della risorsa relativo.

Metodo stringa

SELECT
    invoice.month AS invoice_month,
    TO_JSON_STRING(project.ancestors) as ancestors,
    SUM(cost)
        + SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0))
        AS net_cost
  FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX` as bq
  WHERE TO_JSON_STRING(project.ancestors) like "%resource_name\":\"folders/1234"
  GROUP BY invoice_month, ancestors
  ORDER BY invoice_month, ancestors

Metodo UNNEST

SELECT
    invoice.month AS invoice_month,
    TO_JSON_STRING(project.ancestors) as ancestors,
    SUM(cost)
        + SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0))
        AS net_cost
  FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX` as bq, UNNEST(project.ancestors) as ancestor
  WHERE ancestor.resource_name = "folders/1234"
  GROUP BY invoice_month, ancestors
  ORDER BY invoice_month, ancestors

Esempio 2: filtrare in base al nome visualizzato

Questo esempio mostra query che raggruppano i costi in base alla gerarchia dei progetti e filtrano solo i costi generati in un elemento della gerarchia specificato, identificato dal nome visualizzato fornito dall'utente.

Metodo di corrispondenza delle stringhe

SELECT
    invoice.month AS invoice_month,
    TO_JSON_STRING(project.ancestors) as ancestors,
    SUM(cost)
        + SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0))
        AS net_cost
  FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX` as bq
  WHERE TO_JSON_STRING(project.ancestors) like "%display_name\":\"MyFolderName%"
  GROUP BY invoice_month, ancestors
  ORDER BY invoice_month, ancestors

Metodo UNNEST

SELECT
    invoice.month AS invoice_month,
    TO_JSON_STRING(project.ancestors) as ancestors,
    SUM(cost)
        + SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0))
        AS net_cost
  FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX` as bq, UNNEST(project.ancestors) as ancestor
  WHERE ancestor.display_name = "MyFolderName"
  GROUP BY invoice_month, ancestors
  ORDER BY invoice_month, ancestors

Esempi di query con tag

I seguenti esempi illustrano i modi per eseguire query sui dati con i tag.

Calcolare i costi per mese di fatturazione con i tag

La seguente query mostra come utilizzare i costi di reso per mese di fatturazione per il tag cost_center.

SELECT
  invoice.month AS invoice_month,
  tag.value AS cost_center,
  ROUND((SUM(CAST(cost AS NUMERIC))
    + SUM(IFNULL((SELECT SUM (CAST(c.amount AS NUMERIC))
                  FROM UNNEST(credits) AS c), 0))), 2)
    AS net_cost
FROM `project-ID.dataset.gcp_billing_export_resource_v1_XXXXXX-XXXXXX-XXXXXX`, UNNEST(tags) AS tag
WHERE tag.key = "cost_center" AND tag.namespace = "821092389413"
GROUP BY invoice.month, tag.value
ORDER BY invoice.month, tag.value;

Ad esempio, il risultato della query precedente potrebbe essere:

Riga invoice_month cost_center net_cost
1 202208 android_mobile_apps 9,93
2 202208 ios_mobile_apps 9,93
3 202209 android_mobile_apps 25,42
4 202209 ios_mobile_apps 25,4
5 202209 personalizzazione 16.08

Visualizza i costi delle risorse senza tag

Questa query mostra il totale delle fatture per le risorse senza tag, raggruppate per mese della fattura.

SELECT
 invoice.month AS invoice_month,
 ROUND((SUM(CAST(cost AS NUMERIC))
   + SUM(IFNULL((SELECT SUM(CAST(c.amount AS NUMERIC))
                 FROM UNNEST(credits) AS c), 0))), 2)
   AS net_cost
FROM
 `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX`
WHERE "color" NOT IN (SELECT key FROM UNNEST(tags))
GROUP BY invoice_month
ORDER BY invoice_month;

Ad esempio, il risultato della query precedente potrebbe essere:

Riga invoice_month net_cost
1 202202 0
2 202203 16,81
3 202204 54,09
4 202205 55,82
5 202206 54,09
6 202207 55,83
7 202208 31,49

Altri esempi di query

Esegui query sui costi e sui crediti per progetto per un mese di fatturazione specificato

Fornendo un mese di fatturazione specifico, giugno 2020 (nel formato AAAAMM), questa query restituisce una visualizzazione dei costi e dei crediti raggruppati per progetto, oltre a mostrare le etichette dei progetti.

SQL standard

SELECT
  project.name,
  TO_JSON_STRING(project.labels) as project_labels,
  sum(cost) as total_cost,
  SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0)) as total_credits
FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX`
WHERE invoice.month = "202006"
GROUP BY 1, 2
ORDER BY 1;
Riga name project_labels total_cost total_credits
1 CTG - Dev [{"key":"ctg_p_env","value":"dev"}] 79.140979 -4.763796
2 CTG - Prod [{"key":"ctg_p_env","value":"prod"},{"key":"ctg_team","value":"eng"}] 32.466272 -3.073356
3 CTG - Sandbox [{"key":"ctg_p_env","value":"dev"}] 0 0
4 CTG - Storage [{"key":"ctg_p_env","value":"prod"},{"key":"ctg_team","value":"data"}] 7.645793 -0.003761

Esegui query sui costi per visualizzare le correzioni o l'utilizzo con monetizzazione tardiva per un determinato mese di fatturazione

Fornendo un mese di fatturazione specifico e filtrando per data in cui si è verificata la data di utilizzo prima del mese di fatturazione, questa query semplificata restituisce i totali dei costi per le correzioni o l'utilizzo con monetizzazione tardiva (addebiti che avrebbero dovuto essere inclusi in una fattura precedente).

SQL standard

SELECT
  SUM(cost)
    + SUM(IFNULL((SELECT SUM(c.amount)
      FROM   UNNEST(credits) c), 0))
    AS total
FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX`
WHERE
  invoice.month = '202403' AND
    DATE(TIMESTAMP_TRUNC(usage_start_time, Day, 'US/Pacific')) < '2024-03-01';

Ad esempio, il risultato della query precedente potrebbe essere:

Riga totale
1 3,531752

Esegui query sui dettagli dei costi per visualizzare le correzioni o l'utilizzo con monetizzazione tardiva per servizio per un determinato mese di fatturazione

Questo esempio mostra una query che restituisce una suddivisione dei costi per servizio, per gli addebiti della fattura, in cui la data di utilizzo è precedente al mese della fattura. Questa query restituisce i totali di costi e crediti per servizio per le correzioni o l'utilizzo con monetizzazione tardiva (addebiti che avrebbero dovuto essere inclusi in una fattura precedente).

In questo esempio di query, la clausola WHERE filtra tutti gli addebiti con un mese di fatturazione di marzo 2024 (nel formato AAAA MM), quindi perfeziona ulteriormente i risultati per restituire solo gli addebiti del mese di fatturazione che hanno una data di utilizzo precedente al 1° marzo 2024.

SELECT
  DATE(TIMESTAMP_TRUNC(usage_start_time, Day, 'US/Pacific')) AS `Day`,
  service.description AS `Service Description`,
  SUM(CAST(cost_at_list AS NUMERIC)) AS `List cost`,
  SUM(CAST(cost AS NUMERIC)) - SUM(CAST(cost_at_list AS NUMERIC)) AS `Negotiated savings`,
  SUM(IFNULL((SELECT SUM(CAST(c.amount AS numeric)) FROM UNNEST(credits) c WHERE c.type IN ('SUSTAINED_USAGE_DISCOUNT', 'DISCOUNT', 'SPENDING_BASED_DISCOUNT', 'COMMITTED_USAGE_DISCOUNT', 'FREE_TIER', 'COMMITTED_USAGE_DISCOUNT_DOLLAR_BASE', 'SUBSCRIPTION_BENEFIT', 'RESELLER_MARGIN')), 0)) AS `Discounts`,
  SUM(IFNULL((SELECT SUM(CAST(c.amount AS numeric)) FROM UNNEST(credits) c WHERE c.type IN ('CREDIT_TYPE_UNSPECIFIED', 'PROMOTION')), 0)) AS `Promotions and others`,
  SUM(CAST(cost_at_list AS NUMERIC)) + SUM(IFNULL((SELECT SUM(CAST(c.amount AS numeric)) FROM UNNEST(credits) c WHERE c.type IN ('SUSTAINED_USAGE_DISCOUNT', 'DISCOUNT', 'SPENDING_BASED_DISCOUNT', 'COMMITTED_USAGE_DISCOUNT', 'FREE_TIER', 'COMMITTED_USAGE_DISCOUNT_DOLLAR_BASE', 'SUBSCRIPTION_BENEFIT', 'RESELLER_MARGIN')), 0)) + SUM(CAST(cost AS NUMERIC)) - SUM(CAST(cost_at_list AS NUMERIC))+ SUM(IFNULL((SELECT SUM(CAST(c.amount AS numeric)) FROM UNNEST(credits) c WHERE c.type IN ('CREDIT_TYPE_UNSPECIFIED', 'PROMOTION')), 0)) AS `Subtotal`
FROM
  `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX`
WHERE
  invoice.month = '202403' AND
  DATE(TIMESTAMP_TRUNC(usage_start_time, Day, 'US/Pacific')) < '2024-03-01'
GROUP BY
  Day,
  service.description
ORDER BY
  Day DESC,
  Subtotal DESC;

Ad esempio, il risultato della query precedente potrebbe essere:

Riga Giorno Descrizione del servizio Costo di listino Risparmi negoziati Sconti Promozioni e altro Subtotale
1 2024-02-29 Compute Engine 4,39916 0 -1.00916 0 3,39000
2 2024-02-29 Assistenza 0,131969 0 0 0 0,131969
3 2024-02-29 BigQuery 0,005502 0 0 0 0,005502
4 2024-02-29 Networking 0,010972 0 -0.006691 0 0,004281

Esempi di query sul costo di utilizzo dettagliato

Questa sezione fornisce esempi di come eseguire query sui dati dettagliati sui costi di utilizzo della fatturazione Cloud esportati in BigQuery.

Poiché lo schema del costo di utilizzo dettagliato include tutti i campi dello schema del costo di utilizzo standard, gli esempi di query forniti per i dati standard esportati in BigQuery funzionano anche con i dati dettagliati esportati. Gli esempi di query standard non sono scritti per recuperare le informazioni a livello di risorsa fornite con l'opzione di esportazione del costo di utilizzo dettagliato. Quando crei query per i dati dettagliati, puoi utilizzare un esempio di query standard come modello, aggiornare il nome della tabella e aggiungere uno qualsiasi dei campi disponibili nello schema dei costi di utilizzo dettagliati.

Per ulteriori requisiti e limitazioni relativi ai dati dettagliati esportati, consulta Schema dei dati di costo di utilizzo dettagliati.

Valori comuni utilizzati nelle query di costo dettagliate di esempio

Gli esempi di query in questa sezione utilizzano il seguente valore per Nome tabella: project-ID.dataset.gcp_billing_export_resource_v1_XXXXXX-XXXXXX-XXXXXX

Restituisci i costi a livello di risorsa su una fattura

Le seguenti query mostrano due modi per visualizzare i valori di costo e credito a livello di risorsa in una fattura utilizzando i dati di fatturazione esportati.

  • Il campo total somma direttamente i valori di costo e credito in virgola mobile, il che può comportare errori di arrotondamento in virgola mobile.
  • Il campo total_exact converte i costi e i valori del credito in micro prima di sommarli, poi li riconverte in dollari dopo la somma, evitando l'errore di arrotondamento in virgola mobile.

Somma dei costi per ogni risorsa, per fattura

Questa query mostra il totale delle fatture per ogni resource.name al mese, come somma di costi, tasse, aggiustamenti ed errori di arrotondamento standard. Tutti i costi non associati a un elemento a livello di risorsa vengono aggregati sotto il nome null per il mese.

SQL standard

SELECT
  invoice.month,
  resource.name,
  SUM(cost)
    + SUM(IFNULL((SELECT SUM(c.amount)
                  FROM UNNEST(credits) c), 0))
    AS total,
  (SUM(CAST(cost AS NUMERIC))
    + SUM(IFNULL((SELECT SUM(CAST(c.amount AS NUMERIC))
                  FROM UNNEST(credits) AS c), 0)))
    AS total_exact
FROM `project-ID.dataset.gcp_billing_export_resource_v1_XXXXXX-XXXXXX-XXXXXX`
GROUP BY 1, 2
ORDER BY 1 ASC, 2 ASC
;

Ad esempio, il risultato della query precedente potrebbe essere:

Riga mese nome totale total_exact
1 201901 null 1005,004832999999984 $ 1005,00 $
2 201901 backend1 781,8499760000028 $ 781,85 $
3 201902 null 953.0034923645475983 $ 953,03 $
4 201902 backend1 992,3101739999999717 $ 992,31 $
5 201902 bitnami-launchpad-wordpress-1-wordpress 1,2817819999999998 $ 1,28 $

Restituisce i dettagli per tipo di costo per ogni risorsa, per mese di fatturazione

Questa query mostra i totali per ogni cost_type per ogni resource.name al mese. I tipi di costi includono costi regolari, tasse, aggiustamenti ed errori di arrotondamento. Tutti i costi non associati a un elemento a livello di risorsa vengono aggregati nella denominazione null per il mese.

SQL standard

SELECT
  invoice.month,
  cost_type,
  resource.name,
  SUM(cost)
    + SUM(IFNULL((SELECT SUM(c.amount)
                  FROM   UNNEST(credits) c), 0))
    AS total,
  (SUM(CAST(cost AS NUMERIC))
    + SUM(IFNULL((SELECT SUM(CAST(c.amount AS NUMERIC))
                  FROM UNNEST(credits) AS c), 0)))
    AS total_exact
FROM `project-ID.dataset.gcp_billing_export_resource_v1_XXXXXX-XXXXXX-XXXXXX`
GROUP BY 1, 2, 3
ORDER BY 1 ASC, 2 ASC, 3 ASC
;

Ad esempio, il risultato della query precedente potrebbe essere:

Riga mese cost_type nome totale total_exact
1 201901 standard null 1000,501209987994782 $ 1000,50 $
2 201901 rounding_error null –$0,500489920049387 –0,50 $
3 201901 tax null 10,000329958477891 $ $ 10,00
4 201901 aggiustamento null –$5.002572999387045 –5,00 $
5 201901 standard backend1 410,998795012082947 $ 411 $
2 201901 rounding_error backend1 –$0.2404900489920378 –0,24 $
3 201901 tax backend1 $4,105840329977189 4,11 $

Visualizzare la suddivisione dei costi del cluster Google Kubernetes Engine (GKE)

Questa sezione fornisce esempi di filtraggio dei costi dei cluster GKE nei report di esportazione BigQuery. Per scoprire di più sui costi dei cluster GKE, visita la pagina Visualizzare la suddivisione dei costi dei cluster.

Filtra i costi di GKE

Gli esempi di query riportati di seguito mostrano come filtrare e raggruppare i costi di GKE per i tipi di risorse supportati in base al nome del cluster, allo spazio dei nomi e all'etichetta.

Costi del cluster GKE prima dei crediti

SELECT
  SUM(cost) AS cost_before_credits,
  labels.value AS cluster_name
FROM  `project-ID.dataset.gcp_billing_export_resource_v1_XXXXXX-XXXXXX-XXXXXX`
LEFT JOIN UNNEST(labels) as labels
  ON labels.key = "goog-k8s-cluster-name"
GROUP BY labels.value
;

Costi GKE inclusi i crediti per spazio dei nomi

SELECT
  labels.value as namespace,
  SUM(cost) + SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0)) AS cost_after_credits,
FROM `project-ID.dataset.gcp_billing_export_resource_v1_XXXXXX-XXXXXX-XXXXXX`
LEFT JOIN UNNEST(labels) as labels
  ON labels.key = "k8s-namespace"
GROUP BY namespace
;

Costi di GKE per SKU

SELECT
  project.id AS project_id,
  labels.value AS cluster_name,
  sku.id AS sku_id,
  sku.description AS sku_description,
  SUM(cost) AS cost
FROM `project-ID.dataset.gcp_billing_export_resource_v1_XXXXXX-XXXXXX-XXXXXX`
JOIN UNNEST(labels) AS labels
  ON labels.key = "goog-k8s-cluster-name"
GROUP BY
  cluster_name, project_id, sku_description, sku_id
;

Esempi di query sui dati dei prezzi

Questa sezione fornisce diversi esempi di come eseguire query sui dati sui prezzi di fatturazione Cloud esportati in BigQuery.

Valori comuni utilizzati nelle query sui prezzi di esempio

Gli esempi di query in questa sezione utilizzano i seguenti valori:

  • Nome tabella: project-ID.dataset.cloud_pricing_export
  • ID SKU: 2DA5-55D3-E679 (Cloud Run - Requests)

Visualizzare i prezzi di listino per uno SKU specifico

Questo esempio mostra una query di base che restituisce il list_price per ogni livello di prezzo per uno SKU specificato.

SQL standard

SELECT sku.id,  sku.description, list_price.*
FROM `project-ID.dataset.cloud_pricing_export`
WHERE DATE(_PARTITIONTIME) = "2020-07-20"
      AND sku.id = "2DA5-55D3-E679"
;

_PARTITIONTIME è un campo generato automaticamente da BigQuery e rappresenta la data a cui appartengono i dati. Anziché _PARTITIONTIME, puoi utilizzare un campo generato esplicitamente dall'esportazione della fatturazione Cloud, ad esempio pricing_as_of_time.

Ecco la stessa query configurata per utilizzare il campo pricing_as_of_time:

SELECT sku.id,  sku.description, list_price.*
FROM `project-ID.dataset.cloud_pricing_export`
WHERE DATE(pricing_as_of_time) = "2020-07-20"
      AND sku.id = "2DA5-55D3-E679"
;

Risultati delle query

Riga id descrizione pricing_unit aggregation_info.
aggregation_level
aggregation_info.
aggregation_interval
tiered_rates.
pricing_unit_quantity
tiered_rates.
start_usage_amount
tiered_rates.
usd_amount
tiered_rates.
account_currency_amount
1 2DA5-55D3-E679 Richieste COUNT ACCOUNT MENSILE 1000000 0 0 0
          1000000 2000000 0,4 0,4

Recuperare i prezzi di listino per uno SKU specifico e includere la descrizione del servizio

I due esempi in questa sezione mostrano query che restituiscono il list_price per ogni livello di prezzo per uno SKU specificato e includono la descrizione dello SKU e la descrizione del servizio.

  • L'esempio 1 restituisce uno SKU per riga, con i livelli di prezzo visualizzati come dati nidificati.
  • L'esempio 2 mostra l'estrazione dei dati per restituire una riga per SKU per livello di prezzo.

Esempio 1: restituisce dati nidificati

Questo esempio esegue una query su un singolo SKU per restituire i dati list_price. Questo SKU ha più livelli di prezzo. I valori del campo Prezzo di listino vengono visualizzati in singole righe nidificate sotto la riga ID SKU.

SQL standard

SELECT sku.id AS sku_id,
       sku.description AS sku_description,
       service.id AS service_id,
       service.description as service_description,
       list_price.*
FROM project-ID.dataset.cloud_pricing_export
WHERE DATE(_PARTITIONTIME) = "2020-07-20"
      AND sku.id = "2DA5-55D3-E679"
;

Risultati della query:

Riga sku_id sku_description service_id service_description aggregation_info.
aggregation_level
aggregation_info.
aggregation_interval
tiered_rates.
pricing_unit_quantity
tiered_rates.
start_usage_amount
tiered_rates.
usd_amount
tiered_rates.
account_currency_amount
1 2DA5-55D3-E679 Richieste 152E-C115-5142 Cloud Run ACCOUNT MENSILE 1000000 0 0 0
            1000000 2000000 0,4 0,4

Esempio 2: restituisce dati non nidificati uniti alla stessa tabella

Questo esempio esegue una query su un singolo SKU per restituire il list price. Lo SKU ha più livelli di prezzo. La query mostra l'utilizzo dell'operatore UNNEST per appiattire l'array tiered_rates e unire i campi alla stessa tabella, ottenendo una riga per ogni livello di prezzo.

SQL standard

SELECT sku.id AS sku_id,
       sku.description AS sku_description,
       service.id AS service_id,
       service.description as service_description,
       tier.*
FROM `project-ID.dataset.cloud_pricing_export` as sku_pricing, UNNEST (sku_pricing.list_price.tiered_rates) as tier
WHERE DATE(_PARTITIONTIME) = "2020-07-20"
      AND sku.id = "2DA5-55D3-E679"
;

Risultati della query:

Riga sku_id sku_description service_id service_description pricing_unit_quantity start_usage_amount usd_amount account_currency_amount
1 2DA5-55D3-E679 Richieste 152E-C115-5142 Cloud Run 1.000.000,0 0.0 0.0 0.0
2 2DA5-55D3-E679 Richieste 152E-C115-5142 Cloud Run 1.000.000,0 2.000.000,0 0,4 0,4

Utilizzare la tassonomia dei prodotti e la tassonomia geografica per eseguire query sugli SKU

  • La tassonomia dei prodotti è un elenco di categorie di prodotti che si applicano allo SKU, ad esempio Serverless, Cloud Run o VM on demand.
  • La tassonomia geografica sono i metadati geografici che si applicano a uno SKU e che consistono in valori di tipo e regione.

Ottenere la tassonomia dei prodotti di uno SKU

Questo esempio mostra una query che restituisce l'elenco product_taxonomy per uno SKU specificato, dove l'ID SKU = 2DA5-55D3-E679 (Cloud Run - Requests).

SQL standard

SELECT sku.id AS sku_id,
       sku.description AS sku_description,
       service.id AS service_id,
       service.description as service_description,
       product_taxonomy
FROM `project-ID.dataset.cloud_pricing_export`
WHERE DATE(_PARTITIONTIME) = "2020-07-20"
      AND sku.id = "2DA5-55D3-E679"
;

Risultati della query:

Riga sku_id sku_description service_id service_description product_taxonomy
1 2DA5-55D3-E679 Richieste 152E-C115-5142 Cloud Run Google Cloud
        Serverless
        Cloud Run
        Altro

Recuperare tutti gli SKU per una tassonomia dei prodotti specifica

Questo esempio mostra una query che restituisce tutti gli SKU che corrispondono a un product_taxonomy specificato. In questa query, imposta Serverless come valore di product taxonomy.

SQL standard

SELECT sku.id AS sku_id,
       sku.description AS sku_description,
       service.id AS service_id,
       service.description as service_description,
       product_taxonomy
FROM `project-ID.dataset.cloud_pricing_export`
WHERE DATE(_PARTITIONTIME) = "2020-07-20"
     AND "Serverless" in UNNEST(product_taxonomy)
LIMIT 10
;

Risultati della query:

Riga sku_id sku_description service_id service_description product_taxonomy
1 0160-BD7B-4C40 Traffico in uscita dalla rete intraregionale di Cloud Tasks F3A6-D7B7-9BDA Cloud Tasks Google Cloud
        Serverless
        Cloud Tasks
        Altro
2 FE08-0A74-7AFD Traffico GOOGLE-API Cloud Tasks in uscita F3A6-D7B7-9BDA Cloud Tasks Google Cloud
        Serverless
        Cloud Tasks
        Altro
3 A81A-32A2-B46D Archiviazione coda di attività Salt Lake City F17B-412E-CB64 App Engine Google Cloud
        Serverless
        GAE
        Altro
        TaskQueue

Recuperare tutti gli SKU per una tassonomia geografica e una tassonomia prodotto specifiche

Questo esempio mostra una query che restituisce tutti gli SKU che corrispondono a una geo_taxonomy regione specificata e a un product_taxonomy>specificato, dove region = us-east4 e product_taxonomy = VMs On Demand.

SQL standard

SELECT sku.id AS sku_id,
       sku.description AS sku_description,
       service.id AS service_id,
       service.description as service_description,
       geo_taxonomy,
       product_taxonomy
FROM `project-ID.dataset.cloud_pricing_export`
WHERE DATE(_PARTITIONTIME) = "2020-07-20"
      AND "VMs On Demand" in UNNEST(product_taxonomy)
      AND geo_taxonomy.type = "REGIONAL"
      AND "us-east4" in UNNEST (geo_taxonomy.regions)
;

Risultati della query:

Riga sku_id sku_description service_id service_description geo_taxonomy.type geo_taxonomy.regions product_taxonomy
1 9174-81EE-425B Premium per modalità single-tenant per RAM di istanza single-tenant in esecuzione in Virginia 6F81-5844-456A Compute Engine REGIONALE us-east4 Google Cloud
            Computing
            GCE
            VM on demand
            Memoria: per GB
2 C3B9-E891-85ED RAM di istanza con tenancy esclusiva in esecuzione in Virginia 6F81-5844-456A Compute Engine REGIONALE us-east4 Google Cloud
            Computing
            GCE
            VM on demand
            Memoria: per GB
3 6E2A-DCD9-87ED RAM di istanza predefinita N1 in esecuzione in Virginia 6F81-5844-456A Compute Engine REGIONALE us-east4 Google Cloud
            Computing
            GCE
            VM on demand
            Memoria: per GB

Unire i dati sui prezzi con i dati dettagliati sui costi di utilizzo

Questa query mostra come unire le esportazioni dei dati su prezzi e costi per visualizzare informazioni dettagliate sui prezzi in linea con i costi. Puoi configurare questa query per estrarre i dati esportati dai tuoi dati di costo di utilizzo dettagliati (come Exports), e unire i dati di costo di utilizzo ai tuoi dati sui prezzi esportati (come Prices).

Utilizza il nome della tabella costo di utilizzo dettagliato per estrarre i dati Exports: gcp_billing_export_resource_v1_<BILLING_ACCOUNT_ID>

Utilizza il nome della tabella prezzi per i dati Prices: project-ID.dataset.cloud_pricing_export

WITH
  Exports AS (
    SELECT *
    FROM `project-ID.dataset.gcp_billing_export_resource_v1_XXXXXX-XXXXXX-XXXXXX`
  ),
  Prices AS (
    SELECT *
    FROM `project-ID.dataset.cloud_pricing_export`
  )
SELECT
  Exports.sku.description AS sku_description,
  Exports.cost,
  Exports.usage,
  FlattenedPrices.pricing_unit_description,
  FlattenedPrices.account_currency_amount,
  FlattenedPrices.account_currency_code,
FROM Exports
JOIN (SELECT * FROM Prices CROSS JOIN UNNEST(Prices.list_price.tiered_rates)) AS FlattenedPrices
  ON
    Exports.sku.id = FlattenedPrices.sku.id
    AND Exports.price.tier_start_amount = FlattenedPrices.start_usage_amount
WHERE
  DATE(Exports.export_time) = '2023-06-30'
  AND DATE(FlattenedPrices.export_time) = '2023-06-30'
  AND cost > 0
LIMIT 1000

Ad esempio, il risultato della query precedente potrebbe essere:

sku_description costo utilizzo pricing_unit_description account_currency_amount account_currency_code
Capacità DP bilanciato 0,001345 { "usage": { "amount": "38654705664000.0", "unit": "byte-seconds", "amount_in_pricing_units": "0.01345895", "pricing_unit": "gibibyte month" } } gibibyte al mese 0,1 USD
Capacità DP bilanciato 0,001344 { "usage": { "amount": "38654705664000.0", "unit": "byte-seconds", "amount_in_pricing_units": "0.01345895", "pricing_unit": "gibibyte month" } } gibibyte al mese 0,1 USD
Capacità DP bilanciato 0,001346 { "usage": { "amount": "38654705664000.0", "unit": "byte-seconds", "amount_in_pricing_units": "0.01345895", "pricing_unit": "gibibyte month" } } gibibyte al mese 0,1 USD

Query che utilizza le etichette di sistema

Le etichette di sistema per le prenotazioni offrono una maggiore visibilità sull'utilizzo delle prenotazioni. Google Cloud Ti consentono di monitorare quali istanze utilizzano quali prenotazioni e di analizzare i costi associati alla capacità utilizzata e non utilizzata direttamente in BigQuery.

Questi esempi utilizzano due etichette di sistema:

  • compute.googleapis.com/reservation_name
  • compute.googleapis.com/reservation_project_id

Queste etichette sono presenti nei record del fatturazione Cloud di entrambe le istanze che consumano una prenotazione e della parte inutilizzata di una prenotazione.

Gli esempi riportati di seguito mostrano come eseguire query sull'esportazione della fatturazione BigQuery per analizzare il consumo delle prenotazioni utilizzando le etichette di sistema.

Prima di iniziare

Per eseguire query utilizzando le etichette di sistema, devi aver attivato l'esportazione della fatturazione Cloud in BigQuery, in particolare l'esportazione dei Dati di costo di utilizzo dettagliati. Questa esportazione contiene le informazioni a livello di risorsa, incluse le etichette di sistema, necessarie per visualizzare le nuove etichette di prenotazione.

Per configurare o verificare l'esportazione BigQuery, consulta la seguente documentazione:

  1. Panoramica dell'esportazione dei dati di fatturazione in BigQuery
  2. Configurare l'esportazione dei dati di fatturazione in BigQuery
  3. Informazioni sullo schema di esportazione dei dati dettagliati

Assicurati che il set di dati BigQuery sia configurato per ricevere l'esportazione dettagliata. Il nome della tabella in genere è nel formato gcp_billing_export_resource_v1_<BILLING_ACCOUNT_ID>.

Visualizza il consumo per una determinata istanza

Questa query ti consente di verificare se una determinata istanza ha utilizzato una prenotazione durante un periodo specifico e, in caso affermativo, quale prenotazione.


SELECT
  t.usage_start_time,
  sl_reservation.value AS reservation_name,
  t.sku.description AS sku_description,
  SUM(t.usage.amount) AS total_usage_amount
FROM
  project-ID.dataset.gcp_billing_export_resource_v1_X AS t
  LEFT JOIN
  UNNEST(t.system_labels) AS sl_reservation
  ON sl_reservation.key = 'compute.googleapis.com/reservation_name'
WHERE
  t.service.id = '6F81-5844-456A' AND DATE(TIMESTAMP_TRUNC(t._PARTITIONTIME, DAY)) = '2025-09-16' AND t.sku.description LIKE '%Core%' AND
  t.resource.name LIKE '%tc-billing-case1-instance-1757983787%'
GROUP BY t.usage_start_time, reservation_name, t.sku.description
ORDER BY t.usage_start_time, reservation_name, t.sku.description;

Risultato di esempio:

usage_start_time reservation_name sku_description total_usage_amount
2025-09-16 00:00:00.000000 UTC Core di istanza E2 in esecuzione nelle Americhe 597
2025-09-16 01:00:00.000000 UTC Core di istanza E2 in esecuzione nelle Americhe 3009
2025-09-16 01:00:00.000000 UTC tc-billing-case1-res0-1757983787 Core di istanza E2 in esecuzione nelle Americhe 591
2025-09-16 02:00:00.000000 UTC Core di istanza E2 in esecuzione nelle Americhe 10
2025-09-16 02:00:00.000000 UTC tc-billing-case1-res0-1757983787 Core di istanza E2 in esecuzione nelle Americhe 3054
2025-09-16 02:00:00.000000 UTC tc-billing-case1-res1-1757983787 Core di istanza E2 in esecuzione nelle Americhe 37

Nota:

  • Filtro SKU: la limitazione dello SKU ai core della CPU offre una distribuzione più chiara delle risorse. Questo valore può essere modificato in base ad altre risorse riservate, come RAM, LocalSSD, TPU o GPU.
  • Consumo on demand: quando sia reservation_name che reservation_project_id sono nulli, l'istanza consuma risorse on demand.

Quando più righe con valori diversi di reservation_name e reservation_project_id corrispondono a un'istanza specifica in un determinato periodo di tempo, significa che la prenotazione utilizzata dall'istanza è cambiata durante quel periodo. La sezione Utilizzo mostrerà i dettagli del consumo.

Analizzare la distribuzione dell'utilizzo per una determinata prenotazione

Questa query ti aiuta a comprendere la distribuzione dell'utilizzo per una determinata prenotazione condivisa, mostrando la quantità di capacità utilizzata o inutilizzata tra i diversi progettiGoogle Cloud che possono utilizzare la prenotazione specificata.


SELECT
  t.project.id AS consumer_project_id,
  t.sku.description AS sku_description,
  CASE
    WHEN t.resource.global_name NOT LIKE '%instances/%' THEN 'Unused Capacity'
    WHEN t.resource.name IS NOT NULL AND t.resource.name != '' THEN 'Instance Usage'
    ELSE 'Other Reservation Cost'
  END AS usage_category,
  SUM(t.usage.amount) AS total_usage_amount,
  t.usage.unit AS usage_unit,
  SUM(t.cost) AS total_cost_usd
FROM
  project-ID.dataset.gcp_billing_export_resource_v1_X AS t
  LEFT JOIN
  UNNEST(t.system_labels) AS sl_reservation
  ON sl_reservation.key = 'compute.googleapis.com/reservation_name'
  LEFT JOIN
  UNNEST(t.system_labels) AS sl_project_id
  ON sl_project_id.key = 'compute.googleapis.com/reservation_project_id'
WHERE
  t.service.id = '6F81-5844-456A' AND DATE(TIMESTAMP_TRUNC(t._PARTITIONTIME, DAY)) = '2025-09-16' AND t.sku.description LIKE '%Core%' AND
  sl_reservation.value LIKE '%tc-billing-case2-res-1757983801%'
GROUP BY consumer_project_id, t.sku.description, usage_category,
  usage_unit
ORDER BY consumer_project_id, usage_category;

Risultati di esempio:

consumer_project_id sku_description usage_category total_usage_amount usage_unit total_cost_usd
disco-sector-292704 Core di istanza E2 in esecuzione nelle Americhe Utilizzo istanza 14551 secondi 0,088158
flash-freehold-292704 Core di istanza E2 in esecuzione nelle Americhe Utilizzo istanza 7347 secondi 0,044512
united-sandbox-303721 Core di istanza E2 in esecuzione nelle Americhe Capacità inutilizzata 7936 secondi 0,04808

Elenco di tutte le istanze che utilizzano una prenotazione

Allo stesso modo, possiamo scrivere una query per comprendere tutte le istanze che hanno utilizzato una determinata prenotazione durante un determinato periodo di tempo.


SELECT
  t.usage_start_time,
  t.usage_end_time,
  t.project.id AS consumer_project_id,
  t.resource.name AS instance_name,
  t.usage.amount AS usage_amount
FROM
  project-ID.dataset.gcp_billing_export_resource_v1_X AS t
  LEFT JOIN
  UNNEST(t.system_labels) AS sl_reservation
  ON sl_reservation.key = 'compute.googleapis.com/reservation_name'
WHERE
  t.service.id = '6F81-5844-456A' AND DATE(TIMESTAMP_TRUNC(t._PARTITIONTIME, DAY)) = '2025-09-16' AND t.sku.description LIKE '%Core%' AND
  sl_reservation.value LIKE '%tc-billing-case2-res-1757983801%' AND t.resource.global_name NOT LIKE '%allocation/%' AND
  t.resource.name IS NOT NULL AND t.resource.name != ''
ORDER BY t.usage_start_time, t.project.id, t.resource.name;

Risultati di esempio:

usage_start_time usage_end_time consumer_project_id instance_name usage_amount
2025-09-16 00:00:00.000000 UTC 2025-09-16 01:00:00.000000 UTC disco-sector-292704 projects/204187533293/instances/tc-billing-case2-ins0-1757983801 552
2025-09-16 00:00:00.000000 UTC 2025-09-16 01:00:00.000000 UTC disco-sector-292704 projects/204187533293/instances/tc-billing-case2-ins1-1757983801 533
2025-09-16 00:00:00.000000 UTC 2025-09-16 01:00:00.000000 UTC flash-freehold-292704 projects/978655420110/instances/tc-billing-case2-ins2-1757983801 517
2025-09-16 01:00:00.000000 UTC 2025-09-16 02:00:00.000000 UTC disco-sector-292704 projects/204187533293/instances/tc-billing-case2-ins0-1757983801 3600
2025-09-16 01:00:00.000000 UTC 2025-09-16 02:00:00.000000 UTC disco-sector-292704 projects/204187533293/instances/tc-billing-case2-ins1-1757983801 3600
2025-09-16 01:00:00.000000 UTC 2025-09-16 02:00:00.000000 UTC flash-freehold-292704 projects/978655420110/instances/tc-billing-case2-ins2-1757983801 3600
2025-09-16 02:00:00.000000 UTC 2025-09-16 03:00:00.000000 UTC disco-sector-292704 projects/204187533293/instances/tc-billing-case2-ins0-1757983801 3022
2025-09-16 02:00:00.000000 UTC 2025-09-16 03:00:00.000000 UTC disco-sector-292704 projects/204187533293/instances/tc-billing-case2-ins0-1757983801 79
2025-09-16 02:00:00.000000 UTC 2025-09-16 03:00:00.000000 UTC disco-sector-292704 projects/204187533293/instances/tc-billing-case2-ins1-1757983801 79
2025-09-16 02:00:00.000000 UTC 2025-09-16 03:00:00.000000 UTC disco-sector-292704 projects/204187533293/instances/tc-billing-case2-ins1-1757983801 3086
2025-09-16 02:00:00.000000 UTC 2025-09-16 03:00:00.000000 UTC flash-freehold-292704 projects/978655420110/instances/tc-billing-case2-ins2-1757983801 3151
2025-09-16 02:00:00.000000 UTC 2025-09-16 03:00:00.000000 UTC flash-freehold-292704 projects/978655420110/instances/tc-billing-case2-ins2-1757983801 79