Questo documento fornisce alcuni esempi di esecuzione di 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.
Genera una query SQL da un report sulla fatturazione
Per scrivere rapidamente una query SQL che restituisca in BigQuery risultati equivalenti a quelli di un report sulla fatturazione, puoi utilizzare la funzionalità Genera query nei report sulla fatturazione, disponibile nella console Google Cloud .
Specifica 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
project-IDè l'ID del Google Cloud progetto che hai configurato che contiene il set di dati BigQuery.dataset_nameè il nome del set di dati BigQuery che hai configurato per contenere le tabelle BigQuery con i dati di fatturazione Cloud esportati.BQ_table_nameè il nome della tabella BigQuery che contiene i dati di fatturazione Cloud esportati su cui vuoi eseguire query.Alle tabelle BigQuery che contengono i dati di fatturazione Cloud esportati viene assegnato automaticamente un nome in base al tipo di esportazione che attivi:
Tabella dei costi di utilizzo standard: nel tuo set di dati BigQuery, questa tabella è denominata
gcp_billing_export_v1_<BILLING-ACCOUNT-ID>.Tabella dei costi di utilizzo dettagliati: nel set di dati BigQuery, questa tabella è denominata
gcp_billing_export_resource_v1_<BILLING-ACCOUNT-ID>.Tabella dei prezzi: nel tuo set di dati BigQuery, questa tabella è denominata
cloud_pricing_export.
Ad esempio, supponiamo che tu abbia un account di fatturazione Cloud configurato per esportare i dati di costo di utilizzo dettagliato e che i componenti della configurazione dell'esportazione della fatturazione siano i seguenti:
project-ID:my-billing-projectdataset_name:my_billing_datasetBQ_table_name:gcp_billing_export_resource_v1_<BILLING-ACCOUNT-ID>BILLING-ACCOUNT-ID:010101-F0FFF0-10X10X, ovvero l'ID dell'account di fatturazione Cloud 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 come segue:
my-billing-project.my_billing_dataset.gcp_billing_export_resource_v1_010101-F0FFF0-10X10X
Esempi di query per tipo di dati di fatturazione Cloud
Dati sui costi di utilizzo FOCUS
Per suggerimenti e indicazioni sull'utilizzo di SQL per eseguire query sull'esportazione dei dati di fatturazione FOCUS, consulta i casi d'uso FOCUS di esempio disponibili sul sito della FinOps Foundation:
Casi d'uso di FOCUS v1.2 | Casi d'uso di FOCUS v1.1 | Casi d'uso di FOCUS v1.0
Dati relativi a costo di utilizzo standard, costo di utilizzo dettagliato e prezzi
Questa sezione fornisce esempi di query per i dati di costo di utilizzo standard, i dati di costo di utilizzo dettagliato e i dati sui prezzi.
Se hai scelto di esportare i dati di costo di utilizzo dettagliati, puoi utilizzare gli esempi di query sul costo di utilizzo standard oltre agli esempi di query sul costo di utilizzo dettagliato.
Esempi di query sui costi di utilizzo standard
Questa sezione fornisce esempi di come eseguire query sui dati di costo di utilizzo standard di fatturazione Cloud esportati in BigQuery.
Questi esempi di query funzionano anche con i dati di costo di utilizzo dettagliati esportati in BigQuery, anche se non sono scritti per recuperare informazioni a livello di risorsa fornite con l'opzione di esportazione dei dati di costo di utilizzo dettagliati.
Valori comuni utilizzati nelle query di esempio sui costi standard
Gli esempi di query in questa sezione utilizzano il seguente valore per Nome tabella:
project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX
Restituisci 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
totalsomma direttamente i valori di costo e credito in virgola mobile, il che può comportare errori di arrotondamento in virgola mobile. - Il campo
total_exactconverte i valori dei costi e dei crediti in micro prima di sommarli, quindi li riconverte in dollari dopo la somma, evitando l'errore di arrotondamento della rappresentazione 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 | normale | 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
I seguenti esempi illustrano altri modi per eseguire query sui dati con le etichette.
Per gli esempi in questa sezione, supponiamo quanto segue:
- Hai due app (grapefruit-squeezer e chocolate-masher).
- Per ogni app, hai due ambienti (dev e prod).
- L'ambiente di sviluppo ha un'istanza di piccole dimensioni per app.
- L'ambiente di produzione ha un'istanza di piccole dimensioni nelle Americhe e un'istanza di piccole dimensioni 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 |
| TOTAL | $ 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 |
| TOTAL | $ 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. Utilizzando un LEFT JOIN e inserendo il filtro della chiave nella condizione JOIN (anziché WHERE), includi il costo che non contiene questa chiave e ottieni così una visualizzazione completa del costo.
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 |
| TOTAL | $ 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 doppio conteggio, ma non deve essere combinata con altre righe (tranne, eventualmente, se la chiave è la stessa o se hai la certezza che le chiavi non siano 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 |
| TOTAL | $ 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 tariffe e i crediti associati agli sconti per impegno di utilizzo nei dati di fatturazione esportati. Per capire in che modo le tariffe e i crediti per l'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 tariffe per l'impegno per i tuoi sconti per impegno di utilizzo 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 di impegno
Per visualizzare i crediti per gli sconti per impegno di utilizzo 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
Utilizza i filtri della gerarchia delle risorse per esaminare l'origine
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 derivazioni dei progetti.
Esempio 1: filtra per nome della risorsa
Questo esempio mostra query che raggruppano i costi in base all'origine del progetto e filtrano solo i costi generati in un elemento della gerarchia specificato, identificato dal nome della risorsa relativa.
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: filtra per nome visualizzato
Questo esempio mostra query che raggruppano i costi in base all'origine del progetto 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.
Calcola 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 di fatturazione.
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 su costi e crediti per progetto per un mese di fatturazione specificato
Se specifichi un mese di fatturazione specifico, ad esempio giugno 2020 (nel formato AAAAMM), questa query restituisce una visualizzazione dei costi e dei crediti raggruppati per progetto, oltre a mostrare le etichette del progetto.
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 monetizzato in ritardo per un mese di fatturazione specificato
Fornendo un mese di fatturazione specifico e filtrando per data in cui la data di utilizzo è precedente al mese di fatturazione, questa query semplificata restituisce i totali dei costi per le correzioni o l'utilizzo monetizzato in ritardo (addebiti che avrebbero dovuto essere presenti 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 monetizzato in ritardo per servizio per un mese di fatturazione specificato
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 dei costi e dei crediti per servizio per le correzioni o l'utilizzo monetizzato in ritardo (addebiti che avrebbero dovuto essere presenti 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 AAAAMM), 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 sui costi di utilizzo dettagliati
Questa sezione fornisce esempi di come eseguire query sui dati di costo di utilizzo dettagliati di fatturazione Cloud esportati in BigQuery.
Poiché lo schema dei costi di utilizzo dettagliati include tutti i campi dello schema dei costi 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 dei costi di utilizzo dettagliati. Quando crei query per i dati dettagliati, puoi utilizzare un esempio di query standard come modello, aggiornare il nome della tabella e aggiungere uno 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 esempio sui costi dettagliati
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 in una fattura
Le seguenti query mostrano due modi per visualizzare i valori di costo e credito a livello di risorsa su una fattura utilizzando i dati di fatturazione esportati.
- Il campo
totalsomma direttamente i valori di costo e credito in virgola mobile, il che può comportare errori di arrotondamento in virgola mobile. - Il campo
total_exactconverte i valori dei costi e dei crediti in micro prima della somma, quindi li riconverte in dollari dopo la somma, evitando l'errore di arrotondamento della rappresentazione in virgola mobile.
Somma i costi per ogni risorsa, per fattura
Questa query mostra il totale delle fatture di ogni resource.name per 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, 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, 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 | normale | 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 | normale | backend1 | 410,998795012082947 $ | 411,00 $ |
| 2 | 201901 | rounding_error | backend1 | –0,2404900489920378 $ | -0,24 $ |
| 3 | 201901 | tax | backend1 | 4,105840329977189 $ | 4,11 $ |
Visualizza la suddivisione dei costi dei cluster Google Kubernetes Engine (GKE)
Questa sezione fornisce esempi di filtri dei costi dei cluster GKE nei report di BigQuery Export. Per scoprire di più sui costi dei cluster GKE, consulta Visualizza la suddivisione dei costi dei cluster.
Filtra i costi di GKE
Le seguenti query di esempio 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 dei 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 di 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 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 di esempio sui prezzi
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)
Ottieni i prezzi di listino per uno SKU specifico
Questo esempio mostra una query di base che restituisce 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 |
Ottieni i prezzi di listino per uno SKU specifico e includi la descrizione del servizio
I due esempi in questa sezione mostrano query che restituiscono 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'un-nesting 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 del prezzo di listino vengono visualizzati in singole righe nidificate sotto la riga dell'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 delle 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 i dati non nidificati uniti alla stessa tabella
Questo esempio esegue una query su un singolo SKU per restituire 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 con la stessa tabella, generando una riga per 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 delle 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 | 1000000.0 | 0.0 | 0.0 | 0.0 |
| 2 | 2DA5-55D3-E679 | Richieste | 152E-C115-5142 | Cloud Run | 1000000.0 | 2000000.0 | 0,4 | 0,4 |
Utilizza 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 è costituita dai metadati geografici che si applicano a uno SKU, costituiti da valori di tipo e regione.
Ottieni 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 - Richieste).
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 delle 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 |
Recupera 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 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 delle query:
| Riga | sku_id | sku_description | service_id | service_description | product_taxonomy |
|---|---|---|---|---|---|
| 1 | 0160-BD7B-4C40 | Traffico in uscita dalla rete Cloud Tasks all'interno della regione | F3A6-D7B7-9BDA | Cloud Tasks | Google Cloud |
| Serverless | |||||
| Cloud Tasks | |||||
| Altro | |||||
| 2 | FE08-0A74-7AFD | Traffico in uscita GOOGLE-API di Cloud Tasks | F3A6-D7B7-9BDA | Cloud Tasks | Google Cloud |
| Serverless | |||||
| Cloud Tasks | |||||
| Altro | |||||
| 3 | A81A-32A2-B46D | Task Queue Storage Salt Lake City | F17B-412E-CB64 | App Engine | Google Cloud |
| Serverless | |||||
| GAE | |||||
| Altro | |||||
| TaskQueue |
Recupera tutti gli SKU per una tassonomia geografica e una tassonomia dei prodotti specifiche
Questo esempio mostra una query che restituisce tutti gli SKU che corrispondono a una regione geo_taxonomy 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 delle 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 | REGIONAL | us-east4 | Google Cloud |
| Computing | |||||||
| GCE | |||||||
| VM on demand | |||||||
| Memoria: per GB | |||||||
| 2 | C3B9-E891-85ED | RAM per istanza single-tenant in esecuzione in Virginia | 6F81-5844-456A | Compute Engine | REGIONAL | us-east4 | Google Cloud |
| Computing | |||||||
| GCE | |||||||
| VM on demand | |||||||
| Memoria: per GB | |||||||
| 3 | 6E2A-DCD9-87ED | RAM per istanza predefinita N1 in esecuzione in Virginia | 6F81-5844-456A | Compute Engine | REGIONAL | us-east4 | Google Cloud |
| Computing | |||||||
| GCE | |||||||
| VM on demand | |||||||
| Memoria: per GB |
Unisci i dati sui prezzi con i dati dettagliati sui costi di utilizzo
Questa query mostra come unire le esportazioni dei dati di prezzo e di costo 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 con i dati sui prezzi esportati (come Prices).
Utilizza il
nome della tabella dei costi di utilizzo dettagliati
per estrarre i dati Exports:
gcp_billing_export_resource_v1_<BILLING_ACCOUNT_ID>
Utilizza il nome della tabella dei 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/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/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/mese | 0,1 | USD |
Esegui query utilizzando le etichette di sistema
Le etichette di sistema per le prenotazioni Google Cloud offrono una maggiore visibilità sull'utilizzo delle prenotazioni. 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_namecompute.googleapis.com/reservation_project_id
Queste etichette sono presenti nei record di fatturazione Cloud sia delle istanze che utilizzano una prenotazione sia della parte non utilizzata di una prenotazione.
I seguenti esempi mostrano come eseguire query sull'esportazione della fatturazione di 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 in BigQuery, consulta la seguente documentazione:
- Panoramica dell'esportazione dei dati di fatturazione in BigQuery
- Configura l'esportazione dei dati di fatturazione in BigQuery
- 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 sarà in genere nel formato gcp_billing_export_resource_v1_<BILLING_ACCOUNT_ID>.
Visualizza il consumo per un'istanza specifica
Questa query ti consente di verificare se una determinata istanza ha utilizzato una prenotazione durante un determinato periodo e, in caso affermativo, di quale prenotazione si trattava.
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: limitare lo SKU ai core della CPU offre una distribuzione più chiara delle risorse. Questo valore può essere modificato per altre risorse prenotate, come RAM, SSD locale, TPU o GPU.
- Consumo on demand: quando sia reservation_name che reservation_project_id sono null, l'istanza utilizza risorse on demand.
Quando più righe con reservation_name e reservation_project_id diversi 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 descrive in dettaglio il consumo.
Analizza 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 capacità utilizzata o inutilizzata tra i diversi progettiGoogle Cloud che possono utilizzare la prenotazione.
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 dell'istanza | 14551 | secondi | 0,088158 |
| flash-freehold-292704 | Core di istanza E2 in esecuzione nelle Americhe | Utilizzo dell'istanza | 7347 | secondi | 0,044512 |
| united-sandbox-303721 | Core di istanza E2 in esecuzione nelle Americhe | Capacità inutilizzata | 7936 | secondi | 0,04808 |
Elenca tutte le istanze che utilizzano una prenotazione
Analogamente, possiamo scrivere una query per comprendere tutte le istanze, incluse quelle proprietarie (1P), 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 |
Analizza l'utilizzo delle prenotazioni di Vertex AI con BigQuery
Per analizzare il modo in cui i prodotti proprietari (1P), come Vertex AI, utilizzano le prenotazioni condivise tra i progetti in cui sono attivi i job Vertex AI, utilizza le seguenti etichette di sistema in BigQuery:
compute.googleapis.com/reservation_namecompute.googleapis.com/reservation_project_id
Per ulteriori informazioni su come condividere le prenotazioni con prodotti proprietari (1P) in Vertex AI, consulta quanto segue:
- Utilizza le prenotazioni con l'addestramento
- Utilizza le prenotazioni con l'inferenza online
- Utilizzare le prenotazioni con le istanze di Vertex AI Workbench
Le seguenti query di esempio mostrano come utilizzare queste etichette per ottenere una visibilità dettagliata sull'utilizzo delle prenotazioni, monitorare il modo in cui le istanze consumano queste prenotazioni ed eseguire un'analisi approfondita dei costi.
Elenca i tipi di SKU che utilizzano una prenotazione per un prodotto proprietario in Vertex AI
Se crei e condividi una prenotazione con Vertex AI per un job di addestramento, la seguente query restituisce l'elenco dei tipi di SKU per la data corrente.
SELECT DISTINCT
t.sku.description AS sku_description
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
TRUE
AND t.service.id = '6F81-5844-456A'
AND DATE(t.usage_start_time) = CURRENT_DATE()
AND EXISTS(
SELECT 1
FROM UNNEST(t.Tags) AS tag
WHERE
tag.key = 'gcp-product'
AND tag.value = 'vertex_ai'
AND tag.inherited = TRUE
)
AND sl_reservation.value = 'RESERVATION_NAME'
AND t.resource.name IS NOT NULL
AND t.resource.name != ''
ORDER BY sku_description ASC;
Risultati di esempio
I risultati mostrano che il job di addestramento utilizza tre tipi di SKU all'interno del servizio Vertex AI.
| sku_description |
|---|
| Core di istanza predefinita N1 in esecuzione nelle Americhe |
| RAM per istanza predefinita N1 in esecuzione nelle Americhe |
| GPU Nvidia Tesla T4 in esecuzione nelle Americhe |
Analizza le statistiche degli SKU per prenotazione per un prodotto proprietario in Vertex AI
La seguente query ti aiuta a comprendere la distribuzione delle istanze e i relativi costi di utilizzo associati a una prenotazione per un prodotto proprietario (1P) nel mese corrente.
SELECT
t.sku.description AS sku_description,
t.usage_start_time AS usage_start_time,
t.usage_end_time AS usage_end_time,
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'
LEFT JOIN
UNNEST(t.system_labels) AS sl_project_id
ON sl_project_id.key = 'compute.googleapis.com/reservation_project_id'
WHERE
TRUE
AND t.service.id = '6F81-5844-456A'
AND t.invoice.month = '202602'
AND EXISTS(
SELECT 1
FROM UNNEST(t.Tags) AS tag
WHERE
tag.key = 'gcp-product'
AND tag.value = 'vertex_ai'
AND tag.inherited = TRUE
)
AND sl_reservation.value = 'RESERVATION_NAME'
AND sl_project_id.value = 'PROJECT_ID'
AND t.resource.name IS NOT NULL
AND t.resource.name != ''
GROUP BY sku_description, usage_start_time, usage_end_time;
Risultati di esempio
L'output seguente mostra in che modo gli SKU utilizzano la prenotazione e fornisce una suddivisione dei costi di utilizzo corrispondenti.
| sku_description | usage_start_time | usage_end_time | total_usage_amount |
|---|---|---|---|
| Core di istanza predefinita N1 in esecuzione nelle Americhe | 2026-02-10 05:00:00.000000 UTC | 2026-02-10 06:00:00.000000 UTC | 5040 |
| RAM per istanza predefinita N1 in esecuzione nelle Americhe | 2026-02-10 05:00:00.000000 UTC | 2026-02-10 06:00:00.000000 UTC | 20293720473600 |
| GPU Nvidia Tesla T4 in esecuzione nelle Americhe | 2026-02-10 05:00:00.000000 UTC | 2026-02-10 06:00:00.000000 UTC | 1260 |
| Core di istanza predefinita N1 in esecuzione nelle Americhe | 2026-02-10 04:00:00.000000 UTC | 2026-02-10 05:00:00.000000 UTC | 14400 |
| RAM per istanza predefinita N1 in esecuzione nelle Americhe | 2026-02-10 04:00:00.000000 UTC | 2026-02-10 05:00:00.000000 UTC | 57982058496000 |
| GPU Nvidia Tesla T4 in esecuzione nelle Americhe | 2026-02-10 04:00:00.000000 UTC | 2026-02-10 05:00:00.000000 UTC | 3600 |
Analizza l'utilizzo delle prenotazioni per Vertex AI nei progetti condivisi
Se utilizzi una prenotazione condivisa tra più progetti proprietari in cui sono attivi job Vertex AI, puoi utilizzare la seguente query per analizzare e suddividere i costi di utilizzo per singolo progetto.
SELECT
t.project.id AS consumer_project_id,
t.sku.description AS sku_description,
t.usage.unit AS usage_unit,
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'
LEFT JOIN
UNNEST(t.system_labels) AS sl_project_id
ON sl_project_id.key = 'compute.googleapis.com/reservation_project_id'
WHERE
TRUE
AND t.service.id = '6F81-5844-456A'
AND EXISTS(
SELECT 1
FROM UNNEST(t.Tags) AS tag
WHERE
tag.key = 'gcp-product'
AND tag.value = 'vertex_ai'
AND tag.inherited = TRUE
)
AND sl_reservation.value = 'RESERVATION_NAME'
AND sl_project_id.value = 'PROJECT_ID'
GROUP BY
consumer_project_id, sku_description, usage_unit
ORDER BY consumer_project_id, sku_description, usage_unit;
Risultati di esempio
L'output seguente mostra il contributo di ogni progetto ai costi di utilizzo totali durante l'utilizzo della prenotazione.
| consumer_project_id | sku_description | usage_unit | total_usage_amount |
|---|---|---|---|
| project1 | Core di istanza predefinita N1 in esecuzione nelle Americhe | secondi | 4221572 |
| project1 | RAM per istanza predefinita N1 in esecuzione nelle Americhe | byte-secondi | 16998309356466500 |
| project1 | GPU Nvidia Tesla T4 in esecuzione nelle Americhe | secondi | 1057391 |
| project2 | Core di istanza predefinita N1 in esecuzione nelle Americhe | secondi | 3996192 |
| project2 | RAM per istanza predefinita N1 in esecuzione nelle Americhe | byte-secondi | 16009292257431300 |
| project2 | GPU Nvidia Tesla T4 in esecuzione nelle Americhe | secondi | 993985 |
Argomenti correlati
Argomenti relativi ai dati di fatturazione Cloud esportati
- Configura l'esportazione dei dati di fatturazione Cloud in BigQuery
- Informazioni sulle tabelle di dati di fatturazione Cloud in BigQuery
Report sui costi e sui prezzi disponibili nella console Google Cloud
- Visualizza i report sulla fatturazione Cloud e le tendenze dei costi
- Visualizza e scarica i dettagli dei costi di fatture o estratti conto
- Visualizza e scarica i prezzi dei servizi cloud di Google
- Informazioni sui risparmi con i report di dettaglio dei costi
- Analizza l'efficacia degli sconti per impegno di utilizzo
- Visualizza la cronologia di costi e pagamenti