Questa pagina fornisce alcuni esempi di come eseguire query sul fatturazione Cloud esportati e archiviati in BigQuery.
Per ulteriori informazioni sull'esportazione dei dati di fatturazione in BigQuery, consulta Panoramica e le limitazioni.
Generare una query SQL da un report di fatturazione
scrivere rapidamente una query SQL che restituisca risultati equivalenti in BigQuery come risultati in un report di fatturazione, puoi utilizzare Genera query nel Report sulla fatturazione, disponibili nella console Google Cloud.
Specifica il nome della 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
la clausola FROM
. Il nome della tabella viene determinato utilizzando tre valori separati
per punti:
project-ID.dataset_name.BQ_table_name
- project-ID è l'ID del Progetto Google Cloud che hai configurato che contiene il tuo set di dati BigQuery.
- dataset_name è il nome del Set di dati BigQuery che hai configurato per contenere le tabelle BigQuery con i file Dati di fatturazione Cloud.
BQ_table_name è il nome del Tabella BigQuery contenente i dati di fatturazione Cloud esportati su cui vuoi eseguire una query.
Le tabelle BigQuery che contengono i file Ai dati di fatturazione Cloud viene assegnato automaticamente un nome, in base alla tipo di esportazione che attivi:
Tabella dei costi di utilizzo standard: Nel set di dati BigQuery, questa tabella è denominata
gcp_billing_export_v1_<BILLING-ACCOUNT-ID>
.Tabella dei costi di utilizzo dettagliata: Nel set di dati BigQuery, questa tabella è denominata
gcp_billing_export_resource_v1_<BILLING-ACCOUNT-ID>
.Tabella dei prezzi: Nel set di dati BigQuery, questa tabella è denominata
cloud_pricing_export
.
Ad esempio, supponiamo che tu abbia un account di fatturazione Cloud configurate per l'esportazione dati sui costi di utilizzo dettagliati e i componenti dell'esportazione della fatturazione configurazione sono i seguenti:
- ID-progetto:
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
. Questo è l'ID del Account di fatturazione Cloud che contiene i dati di fatturazione esportando. Scopri come cerca il tuo ID account di fatturazione.
In base ai valori di esempio, dovresti scrivere 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
Questa pagina fornisce esempi di query dati di costo per utilizzo standard, dati dettagliati sui costi di utilizzo, e dati sui prezzi.
Se hai scelto l'esportazione dati dettagliati sui costi di utilizzo puoi utilizzare gli esempi di query relativi al costo di utilizzo standard oltre alla Esempi di query relative al costo di utilizzo dettagliato.
Esempi di query sui costi di utilizzo standard
Questa sezione fornisce esempi di come eseguire query sul Dati di costo per l'utilizzo standard della fatturazione Cloud esportati in BigQuery.
Questi esempi di query funzionano anche dati dettagliati sui costi di utilizzo esportate in BigQuery, anche se non sono scritte per informazioni a livello di risorsa fornite insieme alle informazioni l'opzione di esportazione dei costi di utilizzo.
Valori comuni utilizzati nelle query di esempio relative ai 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
Restituire i costi totali in una fattura
Le seguenti query mostrano due modi per visualizzare i valori di costo e credito utilizzando i dati di fatturazione esportati.
- Il campo
total
somma direttamente i valori di costo e credito in virgola mobile, che possono causare errori di arrotondamento in virgola mobile. - Il campo
total_exact
converte i costi e i valori del credito in micro prima del giorno somma, poi converte di nuovo in dollari dopo la somma, evitando errore di arrotondamento con 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: dettagli sui resi per tipo di costo, per mese di fatturazione
Questa query mostra i totali per ogni cost_type
per ogni mese. Tipi di costo
includono costi, tasse, aggiustamenti ed errori di arrotondamento standard.
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 | regolare | 1000,501209987994782 | 1000,50 $ |
2 | 201901 | rounding_error | –$0,500489920049387 | –0,50 $ |
3 | 201901 | tasse | 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 di questa sezione, supponiamo che:
- Hai due app (grapefruit-squeezer e chocolate-masher).
- 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 in Asia.
- Ogni istanza è etichettata con l'app e l'ambiente.
- Hai una istanza senza etichette che usi per la sperimentazione.
Il tuo conto totale è di $ 24 con la seguente ripartizione:
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 ambiente: sviluppo |
$ 2 |
Piccola istanza con una vCPU in esecuzione nelle Americhe | app: spremiagrumi ambiente: sviluppo |
$ 3 |
Piccola istanza con una vCPU in esecuzione nelle Americhe | app: chocolate-masher ambiente: produzione |
$ 3,25 |
Piccola istanza con una vCPU in esecuzione in Asia | app: chocolate-masher ambiente: produzione |
$ 3,75 |
Piccola istanza con una vCPU in esecuzione nelle Americhe | app: spremiagrumi ambiente: produzione |
$ 3,50 |
Piccola istanza con una vCPU in esecuzione in Asia | app: spremiagrumi ambiente: produzione |
$ 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
Si tratta di un metodo rapido e di base 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 per la chiave ("key") nella condizione JOIN (anziché WHERE), includi il costo che non contiene questa chiave, in modo da ottenere una visione 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 |
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 un doppio conteggio, ma non deve essere combinata con altre righe (tranne se la chiave è la stessa o se hai la certezza che non vengono 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 sullo sconto per impegno di utilizzo
Le seguenti query mostrano come visualizzare le commissioni e i crediti associati a sconti per impegno di utilizzo nei dati di fatturazione esportati. Per comprendere le tariffe e i crediti del tuo impegno sono attribuite 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 dell'impegno per 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 per impegno
Per visualizzare sconto 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 la discendenza
Puoi utilizzare i filtri della gerarchia delle risorse per aggregare i costi in base agli elementi gerarchici ad esempio progetti, cartelle e organizzazioni. Questi esempi di query mostrano metodi per sommare i costi filtrati in base agli elementi della gerarchia delle risorse e visualizzare il progetto antenati.
Esempio 1: filtrare per nome risorsa
Questo esempio illustra le query che raggruppano i costi in base all'origine del progetto e filtra solo i costi generati per uno specifico elemento gerarchico, 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: filtrare per nome visualizzato
Questo esempio illustra le query che raggruppano i costi in base all'origine del progetto e filtra solo i costi generati per uno specifico elemento gerarchico, identificato in base al 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 come eseguire query sui dati con i tag.
Calcolare i costi per mese di fatturazione con i tag
La seguente query dimostra come utilizzare i costi di reso in base al 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 della fattura per le risorse senza tag, raggruppate per fattura mese.
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
Query su costi e crediti in base al progetto per un mese di fatturazione specificato
Fornendo un mese di fatturazione specifico di giugno 2020 (nel formato AAAAMM), la query restituirà una visualizzazione dei costi e dei crediti raggruppati per progetto insieme che mostrano 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 |
Query sui costi per visualizzare le correzioni o l'utilizzo monetizzato in ritardo per un determinato mese di fatturazione
Indicando un mese di fatturazione specifico e filtrando per data in cui data di utilizzo si è verificata prima del mese di fatturazione, questa query semplificata restituisce i costi totali per correzioni o l'uso monetizzato in ritardo (addebiti che dovrebbero su 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 |
Query sui dettagli dei costi per visualizzare le correzioni o l'utilizzo monetizzato in ritardo da servizio per un mese di fatturazione specificato
Questo esempio mostra una query che restituisce una suddivisione dei costi in base al servizio, addebiti invoice, laddove la data di utilizzo si è verificata prima del mese di fatturazione. Questa query restituisce i totali di costi e crediti per servizio a scopo di correzione o utilizzo monetizzato in ritardo (addebiti che avrebbero dovuto essere su 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), perfeziona ulteriormente il valore
per restituire solo gli addebiti nel mese di fatturazione con una data di utilizzo
prima del 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 sul Dati dettagliati sui costi di utilizzo della fatturazione Cloud esportati in BigQuery.
Poiché lo schema dei costi di utilizzo dettagliato include tutti i campi della schema dei costi di utilizzo standard, gli esempi di query forniti per la dati standard esportati in BigQuery funzionano anche con i dati dettagliati che vengono esportato. Tieni presente che gli esempi di query standard non hanno lo scopo di recuperare qualsiasi informazione a livello di risorsa fornita con la documentazione l'opzione di esportazione dei costi di utilizzo. Quando crei query per i dati dettagliati, puoi puoi utilizzare un esempio di query standard come modello, aggiornare il Nome tabella, e aggiungere qualsiasi campo disponibile nella schema dei costi di utilizzo dettagliato.
Per ulteriori requisiti e limitazioni relativi ai dati dettagliati esportati, consulta lo schema dei dati dettagliati dei costi di utilizzo.
Valori comuni utilizzati nelle query dettagliate di esempio sui costi
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
Restituire i costi a livello di risorsa in una fattura
Le query seguenti mostrano due modi per visualizzare i costi a livello di risorsa i valori dei crediti su una fattura utilizzando i dati di fatturazione esportati.
- Il campo
total
somma direttamente i valori di costo e credito in virgola mobile, che possono causare errori di arrotondamento in virgola mobile. - Il campo
total_exact
converte i costi e i valori del credito in micro prima del giorno somma, poi converte di nuovo in dollari dopo la somma, evitando errore di arrotondamento con rappresentazione in virgola mobile.
Somma i costi per ogni risorsa, per fattura
Questa query mostra il totale delle fatture per ogni resource.name
al mese, sotto forma di somma
di costi, tasse, aggiustamenti ed errori di arrotondamento standard. Qualsiasi costo non
associate a un elemento a livello di risorsa vengono aggregate con il nome 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 $ |
Restituisci i dettagli in base al tipo di costo per ogni risorsa, per mese di fatturazione
Questa query mostra i totali per ogni cost_type
per ogni resource.name
per
mese. I tipi di costo includono costi normali, imposte, aggiustamenti e arrotondamenti
errori. Gli eventuali 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 | regolare | null | 1000,501209987994782 | 1000,50 $ |
2 | 201901 | rounding_error | null | –$0,500489920049387 | –0,50 $ |
3 | 201901 | tasse | null | 10,000329958477891 | $ 10,00 |
4 | 201901 | aggiustamento | null | –$5,002572999387045 | –$5,00 |
5 | 201901 | regolare | backend1 | 410,998795012082947 | 411,00 $ |
2 | 201901 | rounding_error | backend1 | –$0,2404900489920378 | -0,24 $ |
3 | 201901 | tasse | backend1 | 4,105840329977189 | 4,11 € |
Visualizza un'analisi dettagliata dei costi dei cluster Google Kubernetes Engine (GKE)
Questa sezione fornisce esempi su come filtrare i costi dei cluster GKE in nei report di BigQuery Export. Per saperne di più su GKE costi cluster, visita Visualizza l'analisi dettagliata dei costi dei cluster.
Filtra i costi di GKE
Le query di esempio che seguono mostrano come filtrare e raggruppare i tuoi i costi di GKE per i tipi di risorse supportati in base al nome del cluster, spazio dei nomi ed etichetta.
Costi dei cluster GKE esclusi i 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 dopo 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 sui prezzi
Questa sezione fornisce diversi esempi di come eseguire query sul Dati sui prezzi della 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 - Richieste)
Visualizzare 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. Al posto di _PARTITIONTIME
,
puoi utilizzare un campo generato esplicitamente dall'esportazione della fatturazione Cloud
come
pricing_as_of_time
Ecco la stessa query configurata per l'utilizzo del 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 | description | 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 |
Visualizza 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 include la descrizione dello SKU e il servizio
o l'audiodescrizione.
- L'esempio 1 restituisce uno SKU per riga, con le fasce di prezzo visualizzate come nidificati.
- L'esempio 2 mostra come separare i dati per restituire una riga per SKU per ogni livello di prezzo.
Esempio 1: restituisce dati nidificati
In questo esempio viene eseguita una query su un singolo SKU per restituire l'oggetto
Dati di list_price
. Questo SKU ha più
livelli di prezzo.
I valori del campo del prezzo di listino vengono visualizzati nelle 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 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
In questo esempio viene eseguita una query su un singolo SKU per restituire l'oggetto
list price
Lo SKU ha più
livelli di prezzo.
La query dimostra l'utilizzo
UNNEST
all'operatore
appiattisci l'array tiered_rates
unendo i campi con la stessa tabella, ottenendo così una riga per prezzo
livello.
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 | 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
- Tassonomia dei prodotti indica un elenco di categorie di prodotto applicabili allo SKU, come Serverless, Cloud Run o VM on demand.
- Tassonomia geografica sono i metadati geografici applicabili a uno SKU, costituiti da tipo e i valori delle regioni.
Ottieni la tassonomia dei prodotti di uno SKU
Questo esempio mostra una query che restituisce
product_taxonomy
per uno SKU specificato, in cui 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 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 |
Ottenere tutti gli SKU per una tassonomia dei prodotti specifica
Questo esempio mostra una query che restituisce tutti gli SKU corrispondenti a un valore
product_taxonomy
In questa query, specifichiamo 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 della query:
Riga | sku_id | sku_description | service_id | service_description | product_taxonomy |
---|---|---|---|---|---|
1 | 0160-BD7B-4C40 | In uscita dalla rete di Cloud Tasks all'interno dell'area geografica | F3A6-D7B7-9BDA | Cloud Tasks | Google Cloud |
Serverless | |||||
Cloud Tasks | |||||
Altro | |||||
2 | FE08-0A74-7AFD | Traffico in uscita GOOGLE-API Cloud Tasks | F3A6-D7B7-9BDA | Cloud Tasks | Google Cloud |
Serverless | |||||
Cloud Tasks | |||||
Altro | |||||
3 | A81A-32A2-B46D | Archiviazione della coda di attività a Salt Lake City | F17B-412E-CB64 | App Engine | Google Cloud |
Serverless | |||||
GAE | |||||
Altro | |||||
TaskQueue |
Ottenere tutti gli SKU per una tassonomia geografica e una tassonomia dei prodotti specifiche
Questo esempio mostra una query che restituisce tutti gli SKU corrispondenti a un valore
geo_taxonomy
regione e una specifica
product_taxonomy
,
dove region
= us-east4 e product_taxonomy
= VM 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 single-tenancy per RAM di istanza single-tenancy 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 single-tenancy 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 |
Unisci i dati sui prezzi a quelli dettagliati sui costi di utilizzo
Questa query mostra come unire le esportazioni sui prezzi e sui dati di costo per vedere
informazioni sui prezzi in linea con i tuoi costi. Puoi configurare
di questa query per estrarre i dati esportati
dati dettagliati sui costi di utilizzo (come Exports
),
e unisci i dati sui costi di utilizzo ai dati esportati
dati sui prezzi
(come Prices
).
Utilizza il tuo
nome della tabella dei costi di utilizzo dettagliati
per eseguire il pull dei dati Exports
:
gcp_billing_export_resource_v1_<BILLING_ACCOUNT_ID>
Utilizza il tuo
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 bilanciata | 0,001345 | { "usage": { "amount": "38654705664000.0", "unit": "byte-secondi", "amount_in_pricing_units": "0.01345895", "pricing_unit": "mese gibibyte" } } | mese gibibyte | 0,1 | $ |
Capacità DP bilanciata | 0,001344 | { "usage": { "amount": "38654705664000.0", "unit": "byte-secondi", "amount_in_pricing_units": "0.01345895", "pricing_unit": "mese gibibyte" } } | mese gibibyte | 0,1 | $ |
Capacità DP bilanciata | 0,001346 | { "usage": { "amount": "38654705664000.0", "unit": "byte-secondi", "amount_in_pricing_units": "0.01345895", "pricing_unit": "mese gibibyte" } } | mese gibibyte | 0,1 | $ |
Argomenti correlati
Argomenti relativi ai dati di fatturazione Cloud esportati
- Configurare l'esportazione dei dati di fatturazione Cloud in BigQuery
- Informazioni sulle tabelle dei dati di fatturazione Cloud in BigQuery
- Visualizzare la spesa nel tempo con Looker Studio
Report su costi e prezzi disponibili nella console Google Cloud
- Visualizza i report di fatturazione Cloud e le tendenze dei costi
- Visualizzare e scaricare i dettagli dei costi di fatture o estratti conto
- Visualizzare e scaricare i prezzi per i servizi cloud di Google
- Comprendere i risparmi con i report sulla ripartizione dei costi
- Analizzare l'efficacia degli sconti per impegno di utilizzo
- Visualizzare la cronologia di costi e pagamenti