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

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

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

Specificare il nome della tabella da utilizzare nelle query

In questi esempi, per eseguire una query sui dati di fatturazione Cloud in BigQuery, devi specificare il nome della tabella nella clausola FROM. Il nome della tabella viene determinato utilizzando tre valori: project.dataset.BQ_table_name.

Esempi di query per tipo di dati di fatturazione Cloud

In questa pagina vengono forniti esempi di query per i dati di costo standard di utilizzo, i dati di costo dettagliati per l'utilizzo e i dati sui prezzi.

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

Dati di costo di utilizzo standard Dati di costo dettagliati per l'utilizzo Dati sui prezzi
Esempi di query sul costo di utilizzo standard Esempi di query dettagliate sui costi di utilizzo Esempi di query sui dati dei prezzi

Esempi di query sul costo di utilizzo standard

Questa sezione fornisce esempi di come eseguire query sui dati 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 vengono scritti per recuperare le informazioni a livello di risorsa fornite con l'opzione di esportazione dei costi di utilizzo dettagliata.

Valori comuni utilizzati nelle query di costo standard di esempio

Gli esempi di query in questa sezione utilizzano il seguente valore per Nome tabella: project.dataset.gcp_billing_export_v1_XXXXXX_XXXXXX_XXXXXX

Restituire i costi totali su una fattura

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

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

Esempio 1: somma di tutti i costi per fattura

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

SQL standard

SELECT
  invoice.month,
  SUM(cost)
    + SUM(IFNULL((SELECT SUM(c.amount)
                  FROM UNNEST(credits) c), 0))
    AS total,
  (SUM(CAST(cost AS NUMERIC))
    + SUM(IFNULL((SELECT SUM(CAST(c.amount AS NUMERIC))
                  FROM UNNEST(credits) AS c), 0)))
    AS total_exact
FROM `project.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,0048329999999984 $ 1005,00 $
2 201902 992,31017399999999717 992,31 $
3 201903 1220,7610899999999642 $ 1220,76 $

Esempio 2: dettagli dei resi per tipo di costo e mese di fatturazione

Questa query mostra i totali per ogni cost_type per ogni mese. I tipi di costi includono costi regolari, 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.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 tipo_di_costo totale total_exact
1 201901 normale 1000,501209987994782 $ 1000,50 $
2 201901 errore_di_arrotondamento -0,500489920049387 $ -0,50 $
3 201901 fiscali 10,000329958477891 $ $ 10,00
4 201901 aggiustamento -5 $,002572999387045 -5 $

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, si presume quanto segue:

  • 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 istanza 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 Nessuno $ 4
Piccola istanza con 1 vCPU in esecuzione nelle Americhe app: chocolate-masher
ambiente: sviluppo
$ 2
Piccola istanza con 1 vCPU in esecuzione nelle Americhe app: spremiagrumi
ambiente: dev
3 $
Piccola istanza con 1 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 1 vCPU in esecuzione nelle Americhe app: spremiagrumi
ambiente: prod
$ 3,50
Piccola istanza con una vCPU in esecuzione in Asia app: spremiagrumi
ambiente: 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.dataset.gcp_billing_export_v1_XXXXXX_XXXXXX_XXXXXX`;

SQL precedente

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

Raggruppamento per mappa di etichetta sotto forma di stringa JSON

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

SQL standard

SELECT
  TO_JSON_STRING(labels) as labels,
  sum(cost) as cost
FROM `project.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.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: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 in questi esempi mostra una somma valida senza doppio conteggio, ma non dovrebbe essere combinata con altre righe, tranne eventualmente se la chiave è la stessa o se hai la certezza che le chiavi non verranno mai impostate sulla stessa risorsa.

SQL standard

SELECT
  labels.key as key,
  labels.value as value,
  SUM(cost) as cost
FROM `project.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:dataset.gcp_billing_export_v1_XXXXXX_XXXXXX_XXXXXX]
GROUP BY key, value;
Riga chiave valore costo
1 null null $ 4
2 app chocolate-masher $ 9
3 app grapefruit-squeezer $ 11
4 environment dev $ 5
5 environment prod $ 15
TOTALE $ 44

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

Query sugli sconti per impegno di utilizzo

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

Visualizzazione delle commissioni per impegno

Per visualizzare le tariffe di impegno 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(cost) as commitment_fees
FROM `project.dataset.gcp_billing_export_v1_XXXXXX_XXXXXX_XXXXXX`
WHERE LOWER(sku.description) LIKE "commitment%"
GROUP BY 1

Visualizzazione dei crediti per impegno

Per visualizzare i crediti per lo 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.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 della gerarchia, ad esempio progetti, cartelle e organizzazioni. Questi esempi di query mostrano i metodi per sommare i costi filtrati per elementi della gerarchia delle risorse e visualizzare le divisioni dei progetti.

Esempio 1: filtra per nome risorsa

Questo esempio illustra le query che raggruppano i costi per discendenza del progetto e filtrano solo i costi generati in un determinato 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.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.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 per discendenza del progetto e filtrano solo i costi generati in un elemento gerarchico specificato, identificato dal nome visualizzato fornito dall'utente.

Metodo di corrispondenza 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.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.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.

Calcolo dei 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 `ivory-vim-309221.billing_export_dataset.gcp_billing_export_resource_v1_018ADD_3CEBBB_A4DF22`, 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 fattura_mese centro_costo costo_netto
1 202208 app_mobile_android 9,93
2 202208 app_mobile_ios 9,93
3 202209 app_mobile_android 25,42
4 202209 app_mobile_ios 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 fattura.

SELECT
 invoice.month AS invoice_month,
 ROUND((SUM(CAST(cost AS NUMERIC))
   + SUM(IFNULL((SELECT SUM(CAST(c.amount AS NUMERIC))
                 FROM UNNEST(credits) AS c), 0))), 2)
   AS net_cost
FROM
 `project.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 fattura_mese costo_netto
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 sui costi e crediti per progetto per un mese di fatturazione specificato

Se specifichi un mese di fatturazione specifico di giugno 2020 (nel formato AAAAMM), questa query restituirà una visualizzazione dei costi e dei crediti raggruppati per progetto insieme alle 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.dataset.gcp_billing_export_v1_XXXXXX_XXXXXX_XXXXXX`
WHERE invoice.month = "202006"
GROUP BY 1, 2
ORDER BY 1;

SQL precedente

TO_JSON_STRING not supported.
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

Esempi di query dettagliate sul costo di utilizzo

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

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

Per ulteriori requisiti e limitazioni per i dati dettagliati esportati, consulta lo schema dei dati di costo di utilizzo dettagliati.

Valori comuni utilizzati nelle query di costo dettagliate di esempio

Gli esempi di query in questa sezione utilizzano il seguente valore per Nome tabella: project.dataset.gcp_billing_export_resource_v1_XXXXXX_XXXXXX_XXXXXX

Restituire i costi a livello di risorsa su una fattura

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

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

Somma i costi per ogni risorsa, per fattura

Questa query mostra il totale delle fatture di ogni resource.name al mese, come somma dei costi normali, delle tasse, degli aggiustamenti e degli errori di arrotondamento. Gli eventuali costi non associati a un elemento a livello di risorsa vengono aggregati con 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.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 name totale total_exact
1 201901 null 1005,0048329999999984 $ 1005,00 $
2 201901 backend1 781,8499760000028 $ 781,85 $
3 201902 null 953,0034923645475983 953,03 $
4 201902 backend1 992,31017399999999717 992,31 $
5 201902 bitnami-launchpad-wordpress-1-wordpress 1,28178199999999998 $ 1,28 $

Reso dei dettagli per tipo di costo per ogni risorsa, per mese di fatturazione

Questa query mostra i totali per ogni cost_type per ogni resource.name al mese. I tipi di costi includono costi regolari, tasse, aggiustamenti ed errori di arrotondamento. Gli eventuali costi non associati a un elemento a livello di risorsa vengono aggregati sotto il nome null del 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.dataset.gcp_billing_export_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 tipo_di_costo name totale total_exact
1 201901 normale null 1000,501209987994782 $ 1000,50 $
2 201901 errore_di_arrotondamento null -0,500489920049387 $ -0,50 $
3 201901 fiscali null 10,000329958477891 $ $ 10,00
4 201901 aggiustamento null -5 $,002572999387045 -5 $
5 201901 normale backend1 410,998795012082947 411,00 $
2 201901 errore_di_arrotondamento backend1 -0,2404900489920378 $ -0,24 $
3 201901 fiscali backend1 4,105840329977189 $ 4,11 $

Ottieni un'analisi dettagliata dei costi dei cluster Google Kubernetes Engine (GKE)

Questa sezione fornisce esempi di filtro dei costi dei cluster GKE nei report di esportazione BigQuery. Per saperne di più sui costi del cluster GKE, consulta Visualizzare l'analisi dei costi del cluster.

Filtra costi GKE

Le seguenti query di esempio mostrano come filtrare e raggruppare i costi di GKE per i tipi di risorse supportati per nome del cluster, spazio dei nomi ed etichetta.

Costi dei cluster GKE prima dei crediti

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

Costi GKE 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.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.dataset.gcp_billing_export_resource_v1_XXXXXX_XXXXXX_XXXXXX`
JOIN UNNEST(labels) AS labels
  ON labels.key = "goog-k8s-cluster-name"
GROUP BY
  cluster_name, project_id, sku_description, sku_id
;

Esempi di query sui dati dei prezzi

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

Valori comuni utilizzati nelle query sui prezzi di esempio

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

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

Visualizzare i prezzi di listino per uno SKU specifico

Questo esempio illustra una query semplice che restituisce list_price per ogni livello di prezzo per uno SKU specificato.

SQL standard

SELECT sku.id,  sku.description, list_price.*
FROM `project.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 l'utilizzo del campo pricing_as_of_time:

SELECT sku.id,  sku.description, list_price.*
FROM `project.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 unità_di_prezzo info_aggregazione.
livello_aggregazione
info_aggregazione.
intervallo_aggregazione
tariffe_a_livello.
pricing_unit_quantity
tariffe_a_livello.
start_usage_amount
tariffe_a_livello.
usd_amount
tariffe_a_livello.
account_currency_amount
1 2DA5-55D3-E679 Richieste CONTA.NUMERI ACCOUNT OGNI MESE 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 le query che restituiscono il list_price per ogni livello di prezzo per uno SKU specifico 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 la nidificazione dei dati per restituire una riga per SKU per livello di prezzo.

Esempio 1: restituisce i 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 dei campi del prezzo di listino vengono visualizzati in singole righe nidificate sotto la riga ID SKU.

SQL standard

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

Risultati della query:

Riga ID_sku descrizione_sku ID_servizio descrizione_servizio info_aggregazione.
livello_aggregazione
info_aggregazione.
intervallo_aggregazione
tariffe_a_livello.
pricing_unit_quantity
tariffe_a_livello.
start_usage_amount
tariffe_a_livello.
usd_amount
tariffe_a_livello.
account_currency_amount
1 2DA5-55D3-E679 Richieste 152E-C115-5142 Cloud Run ACCOUNT OGNI MESE 1000000 0 0 0
            1000000 2000000 0,4 0,4

Esempio 2: restituisce dati non nidificati uniti con la stessa tabella

Questo esempio esegue una query su un singolo SKU per restituire list price. Lo SKU ha più livelli di prezzo. La query dimostra l'utilizzo dell'operatore UNNEST per unire l'array tiered_rates e unire i campi con la stessa tabella, risultando in 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 `my-billing-admin-project.my_billing_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 ID_sku descrizione_sku ID_servizio descrizione_servizio prezzi_unità_quantità quantità_inizio_uso usd_amount importo_valuta_account
1 2DA5-55D3-E679 Richieste 152E-C115-5142 Cloud Run 1.000.000,0 0.0 0.0 0.0
2 2DA5-55D3-E679 Richieste 152E-C115-5142 Cloud Run 1.000.000,0 2.000.000,0 0,4 0,4

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

  • Tassonomia dei prodotti è un elenco di categorie di prodotti che si applicano allo SKU, come Serverless, Cloud Run o VM On demand.
  • La tassonomia geografica è i metadati geografici che si applicano a uno SKU, costituiti da valori di tipo e regione.

Ottenere la tassonomia dei prodotti di uno SKU

Questo esempio illustra una query che restituisce l'elenco product_taxonomy per uno SKU specifico, 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.dataset.cloud_pricing_export`
WHERE DATE(_PARTITIONTIME) = "2020-07-20"
      AND sku.id = "2DA5-55D3-E679"
;

Risultati della query:

Riga ID_sku descrizione_sku ID_servizio descrizione_servizio tassonomia dei prodotti
1 2DA5-55D3-E679 Richieste 152E-C115-5142 Cloud Run Piattaforma Google Cloud
        Serverless
        Cloud Run
        Altro

Visualizza tutti gli SKU per una tassonomia dei prodotti specifica

Questo esempio illustra una query che restituisce tutti gli SKU che corrispondono a una specifica 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.dataset.cloud_pricing_export`
WHERE DATE(_PARTITIONTIME) = "2020-07-20"
     AND "Serverless" in UNNEST(product_taxonomy)
LIMIT 10
;

Risultati della query:

Riga ID_sku descrizione_sku ID_servizio descrizione_servizio tassonomia dei prodotti
1 0160-BD7B-4C40 Traffico in uscita dalla rete tra attività di Cloud Tasks F3A6-D7B7-9BDA Cloud Tasks Piattaforma Google Cloud
        Serverless
        Cloud Tasks
        Altro
2 FE08-0A74-7AFD Traffico API in uscita da Cloud Tasks F3A6-D7B7-9BDA Cloud Tasks Piattaforma Google Cloud
        Serverless
        Cloud Tasks
        Altro
3 A81A-32A2-B46D Archiviazione coda di attività Salt Lake City F17B-412E-CB64 App Engine Piattaforma Google Cloud
        Serverless
        GAE
        Altro
        Coda di attività

Visualizza tutti gli SKU per una tassonomia geografica e di prodotto specifica

Questo esempio illustra una query che restituisce tutti gli SKU che corrispondono a una regione specifica geo_taxonomy e a una product_taxonomy specificata, 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.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 ID_sku descrizione_sku ID_servizio descrizione_servizio tipo_tassonomia.geo regioni_tassonomia.regioni tassonomia dei prodotti
1 9174-81EE-425B Sole Tenancy Premium per RAM di istanza single-tenancy in esecuzione in Virginia 6F81-5844-456A Compute Engine A REGIONE us-east4 Piattaforma 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 A REGIONE us-east4 Piattaforma 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 A REGIONE us-east4 Piattaforma Google Cloud
            Computing
            GCE
            VM on demand
            Memoria: per GB

Unisci i dati sui prezzi con dati di costo dettagliati sull'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 tuoi costi. Puoi configurare questa query in modo da estrarre i dati esportati dai dati di costo di utilizzo dettagliati (come Exports) e unire i dati di costo di utilizzo ai dati sui prezzi esportati (come Prices).

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

Utilizza la nome della tabella dei prezzi per i dati Prices: project.dataset.cloud_pricing_export

WITH
  Exports AS (
    SELECT *
    FROM `project.dataset.gcp_billing_export_v1_XXXXXX_XXXXXX_XXXXXX`
  ),
  Prices AS (
    SELECT *
    FROM `project.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:

descrizione_sku costo utilizzo descrizione_unità_prezzo importo_valuta_account codice_valuta_account
Capacità di sviluppo professionale bilanciata 0,001345 { "usage": { "amount": "38654705664000.0", "unit": "byte-seconds", "amount_in_pricing_units": "0.01345895", "pricing_unit": "mese gibibyte" } } mese gibibyte 0,1 USD
Capacità di sviluppo professionale bilanciata 0,001344 { "usage": { "amount": "38654705664000.0", "unit": "byte-seconds", "amount_in_pricing_units": "0.01345895", "pricing_unit": "mese gibibyte" } } mese gibibyte 0,1 USD
Capacità di sviluppo professionale bilanciata 0,001346 { "usage": { "amount": "38654705664000.0", "unit": "byte-seconds", "amount_in_pricing_units": "0.01345895", "pricing_unit": "mese gibibyte" } } mese gibibyte 0,1 USD

Report sui costi e sui prezzi disponibili nella console Google Cloud