Beispielabfragen für den Export von Cloud Billing-Daten

Auf dieser Seite finden Sie einige Beispiele zum Abfragen der in BigQuery exportierten und gespeicherten Cloud Billing-Daten.

Tabellenname angeben, der in Abfragen verwendet werden soll

In diesen Beispielen müssen Sie den Tabellennamen in der FROM-Klausel angeben, um die Cloud Billing-Daten in BigQuery abzufragen. Der Tabellenname wird mithilfe von drei Werten festgelegt: project.dataset.BQ_table_name.

Beispielabfragen nach Cloud Billing-Datentyp

Auf dieser Seite finden Sie Beispielabfragen für Ihre täglichen Kostendetaildaten und Ihre Preisdaten.

Daten zu täglichen Kostendetails Preisdaten
Abfragebeispiele zu täglichen Kostendetails Beispiele für Abfragen von Preisdaten

Abfragebeispiele für tägliche Kostendetails

In diesem Abschnitt werden verschiedene Beispiele für das Abfragen der in BigQuery exportierten Daten zu den täglichen Kosten in Cloud Billing beschrieben.

Häufig verwendete Werte in den Beispielabfragen für Kostendetails

Die Abfragebeispiele in diesem Abschnitt verwenden die folgenden Werte:

  • Tabellenname: project.dataset.gcp_billing_export_v1_XXXXXX_XXXXXX_XXXXXX

Gesamtkosten einer Rechnung zurückgeben

Die folgenden Abfragen zeigen zwei Möglichkeiten, wie Sie sich Kosten und Guthaben anhand von exportierten Abrechnungsdaten anzeigen lassen können.

  • Im Feld total werden die Gleitkommawerte für Kosten und Gutschriften direkt summiert. Dadurch kann es zu Rundungsfehlern kommen.
  • Das Feld total_exact wandelt die Kosten- und Gutschriftswerte vor dem Summieren in "Micros" um. Nach dem Summieren werden diese wieder in Dollar umgewandelt und so Rundungsfehler mit Gleitkommazahlen vermieden.

Beispiel 1: Summe aller Kosten pro Rechnung

Diese Abfrage zeigt die Rechnungssumme für jeden Monat als Summe der regelmäßigen Kosten, Steuern, Korrekturen und Rundungsfehler.

Standard-SQL

SELECT
  invoice.month,
  SUM(cost)
    + SUM(IFNULL((SELECT SUM(c.amount)
                  FROM UNNEST(credits) c), 0))
    AS total,
  (SUM(CAST(cost * 1000000 AS int64))
    + SUM(IFNULL((SELECT SUM(CAST(c.amount * 1000000 as int64))
                  FROM UNNEST(credits) c), 0))) / 1000000
    AS total_exact
FROM `project.dataset.gcp_billing_export_v1_XXXXXX_XXXXXX_XXXXXX`
GROUP BY 1
ORDER BY 1 ASC
;

Das Ergebnis der vorherigen Abfrage kann beispielsweise so aussehen:

Zeile Monat Summe Summe (genau)
1 201901 1005,004832999999984 $ 1005,00 $
2 201902 992,3101739999999717 $ 992,31 $
3 201903 1220,761089999999642 $ 1220,76 $

Beispiel 2: Details zu den zurückgegebenen Daten nach Kostenart pro Rechnungsmonat

Diese Abfrage ergibt die Gesamtsummen für jeden cost_type pro Monat. Kostenarten umfassen regelmäßige Kosten, Steuern, Korrekturen und Rundungsfehler.

Standard-SQL

SELECT
  invoice.month,
  cost_type,
  SUM(cost)
    + SUM(IFNULL((SELECT SUM(c.amount)
                  FROM   UNNEST(credits) c), 0))
    AS total,
  (SUM(CAST(cost * 1000000 AS int64))
    + SUM(IFNULL((SELECT SUM(CAST(c.amount * 1000000 as int64))
                  FROM UNNEST(credits) c), 0))) / 1000000
    AS total_exact
FROM `project.dataset.gcp_billing_export_v1_XXXXXX_XXXXXX_XXXXXX`
GROUP BY 1, 2
ORDER BY 1 ASC, 2 ASC
;

Das Ergebnis der vorherigen Abfrage kann beispielsweise so aussehen:

Zeile Monat Kostenart Summe Summe (genau)
1 201901 Regelmäßige Kosten 1000,501209987994782 $ 1000,50 $
2 201901 Rundungsfehler -0,500489920049387 $ -0,50 $
3 201901 Steuer 10,000329958477891 $ 10,00 $
4 201901 Korrektur -5,002572999387045 $ -5,00 $

Abfragebeispiele mit Labels

Die folgenden Beispiele zeigen andere Möglichkeiten zum Abfragen von Daten mit Labels.

Für die Beispiele in diesem Abschnitt wird von Folgendem ausgegangen:

  • Sie haben zwei Anwendungen ("grapefruit-squeezer" und "chocolate-masher").
  • Für jede Anwendung haben Sie zwei Umgebungen: "dev" (Entwicklung) und "prod" (Produktion).
  • In der Entwicklungsumgebung ist eine kleine Instanz pro Anwendung vorhanden.
  • In der Produktionsumgebung ist eine kleine Instanz in Amerika und eine kleine Instanz in Asien vorhanden.
  • Jede Instanz trägt den Namen der Anwendung und der Umgebung.
  • Sie haben eine Instanz ohne Label, die Sie zum Experimentieren verwenden.

Ihre Rechnung beträgt insgesamt 24 $ und setzt sich wie folgt zusammen:

Instanz Labels Gesamtkosten
Kleine Instanz mit einer VCPU in Amerika 4 $
Kleine Instanz mit einer VCPU in Amerika app: chocolate-masher
environment: dev
2 $
Kleine Instanz mit einer VCPU in Amerika app: grapefruit-squeezer
environment: dev
3 $
Kleine Instanz mit einer VCPU in Amerika app: chocolate-masher
environment: prod
3,25 $
Kleine Instanz mit einer VCPU in Asien app: chocolate-masher
environment: prod
3,75 $
Kleine Instanz mit einer VCPU in Amerika app: grapefruit-squeezer
environment: prod
3,50 $
Kleine Instanz mit einer VCPU in Asien app: grapefruit-squeezer
environment: prod
4,50 $

Jede Zeile einzeln abfragen

Die detaillierteste Kostenansicht erhalten Sie, indem Sie jede Zeile einzeln abfragen, ohne Gruppierungen vorzunehmen. Gehen wir davon aus, dass mit Ausnahme von Labels und der SKU-Beschreibung alle Felder wie Projekt, Produkt usw. identisch sind.

Standard-SQL

SELECT
  sku.description,
  TO_JSON_STRING(labels) as labels,
 cost as cost
FROM `project.dataset.gcp_billing_export_v1_XXXXXX_XXXXXX_XXXXXX`;

Legacy-SQL

TO_JSON_STRING not supported.
Zeile sku.description Labels Kosten
1 Kleine Instanz mit einer VCPU in Amerika [] 4 $
2 Kleine Instanz mit einer VCPU in Amerika [{"key":"app","value":"chocolate-masher"},{"key":"environment","value":"dev"}] 2 $
3 Kleine Instanz mit einer VCPU in Amerika [{"key":"app","value":"grapefruit-squeezer"},{"key":"environment","value":"dev"}] 3 $
4 Kleine Instanz mit einer VCPU in Amerika [{"key":"app","value":"chocolate-masher"},{"key":"environment","value":"prod"}] 3,25 $
5 Kleine Instanz mit einer VCPU in Asien [{"key":"app","value":"chocolate-masher"},{"key":"environment","value":"prod"}] 3,75 $
6 Kleine Instanz mit einer VCPU in Amerika [{"key":"app","value":"grapefruit-squeezer"},{"key":"environment","value":"prod"}] 3,50 $
7 Kleine Instanz mit einer VCPU in Asien [{"key":"app","value":"grapefruit-squeezer"},{"key":"environment","value":"prod"}] 4,50 $
GESAMT 24 $

Nach Labelzuordnung als JSON-String gruppieren

Mit dieser Methode können Sie die Kosten schnell und einfach nach Labelkombination aufschlüsseln.

Standard-SQL

SELECT
  TO_JSON_STRING(labels) as labels,
  sum(cost) as cost
FROM `project.dataset.gcp_billing_export_v1_XXXXXX_XXXXXX_XXXXXX`
GROUP BY labels;

Legacy-SQL

TO_JSON_STRING not supported.
Zeile Labels Kosten
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 $
GESAMT 24 $

Nach Labelwert für einen bestimmten Schlüssel gruppieren

Häufig werden die Kosten nach den Werten eines bestimmten Labelschlüssels aufgeschlüsselt. Kosten ohne diesen Schlüssel können Sie durch LEFT JOIN und Eingabe des Schlüsselfilters als JOIN-Bedingung (anstelle von WHERE) einbeziehen. Sie erhalten auf diese Weise eine vollständige Übersicht Ihrer Kosten.

Standard-SQL

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;

Legacy-SQL

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;
Zeile Umgebung Kosten
1 prod 15 $
2 dev 5 $
3 null 4 $
GESAMT 24 $

Nach Schlüssel/Wert-Paar gruppieren

Behalten Sie dies beim Interpretieren oder Exportieren der Ergebnisse im Hinterkopf. Eine einzelne Zeile zeigt hier eine gültige Summe ohne doppelte Zählung. Sie sollte jedoch nicht mit anderen Zeilen kombiniert werden, es sei denn, beide haben denselben Schlüssel oder die Schlüssel werden definitiv nicht in derselben Ressource verwendet.

Standard-SQL

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;

Legacy-SQL

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;
Zeile Schlüssel Wert Kosten
1 null null 4 $
2 app chocolate-masher 9 $
3 app grapefruit-squeezer 11 $
4 environment dev 5 $
5 environment prod 15 $
GESAMT 44 $

Beachten Sie, dass die Gesamtsumme größer als auf der Rechnung ist.

Abfragen mit Rabatten für zugesicherte Nutzung

Die folgenden Abfragen zeigen, wie die Gebühren und Gutschriften aufgerufen werden können, die mit Rabatten für zugesicherte Nutzung in exportierten Abrechnungsdaten verknüpft sind.

Zusicherungsgebühren ansehen

Verwenden Sie die folgende Beispielabfrage, um die Zusicherungsgebühren für Ihre Rabatte für zugesicherte Nutzung in Ihrem Abrechnungsdatenexport aufzurufen.

Standard-SQL

SELECT
    invoice.month AS invoice_month,
    SUM(cost) as commitment_fees
FROM 'PROJECT.DATASET.TABLE'
WHERE LOWER(sku_description) LIKE "commitment%"
GROUP BY 1

Gutschriften für Zusicherungen ansehen

Mit der folgenden Beispielabfrage können Sie das Guthaben für Rabatte für zugesicherte Nutzung im Abrechnungsdatenexport ansehen.

Standard-SQL

SELECT
    invoice.month AS invoice_month,
    SUM(credits.amount) as CUD_credits
FROM 'PROJECT.DATASET.TABLE'
LEFT JOIN UNNEST(credits) AS credits
WHERE LOWER(credits.name) = "committed use discount%"
GROUP BY 1

Weitere Abfragebeispiele

Abfragekosten und Gutschriften nach Projekt für einen bestimmten Rechnungsmonat

Durch die Angabe eines bestimmten Rechnungsmonats, z. B. Juni 2020 (im Format JJJJMM), gibt diese Abfrage eine Ansicht der nach Projekt gruppierten Kosten und Gutschriften zurück und zeigt Projektlabels an.

Standard-SQL

SELECT
  project.name,
  TO_JSON_STRING(project.labels) as project_labels,
  sum(cost) as total_cost,
  SUM(creds.amount) as total_credits
FROM `project:dataset.gcp_billing_export_v1_XXXXXX_XXXXXX_XXXXXX`
  LEFT JOIN UNNEST(credits) as creds
WHERE invoice.month = "202006"
GROUP BY 1, 2
ORDER BY 1;

Legacy-SQL

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

Beispiele für Preisdatenabfragen

In diesem Abschnitt finden Sie verschiedene Beispiele zum Abfragen der in BigQuery exportierten Cloud Billing-Preisdaten.

Gängige Werte in den Beispielpreisabfragen

Für die Abfragebeispiele in diesem Abschnitt werden folgende Werte verwendet:

  • Tabellenname: project.dataset.cloud_pricing_export
  • SKU ID: 2DA5-55D3-E679 (Cloud Run – Abfragen)

Listenpreise für eine bestimmte Artikelnummer

Dieses Beispiel zeigt eine einfache Abfrage, die den list_price für jede Preisstufe für eine bestimmte Artikelnummer zurückgibt.

Standard-SQL

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 ist ein von BigQuery automatisch generiertes Feld und stellt das Datum dar, zu dem die Daten gehören. Statt _PARTITIONTIME können Sie ein Feld verwenden, das vom Cloud Billing-Export explizit generiert wird, z. B. pricing_as_of_time.

Im Folgenden sehen Sie dieselbe Abfrage, die für die Verwendung des Feldes pricing_as_of_time konfiguriert ist:

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"
;

Abfrageergebnisse

Row 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 Anfragen COUNT Konto MONATLICH 1000000 0 0 0
          1000000 2000000 0,4 0,4

Listenpreise für eine bestimmte Artikelnummer einschließlich Dienstbeschreibung

Die beiden Beispiele in diesem Abschnitt zeigen Abfragen, die den list_price für jede Preisstufe für eine bestimmte Artikelnummer zurückgeben und die Artikelnummerbeschreibung und die Dienstbeschreibung umfassen.

  • Beispiel 1 gibt eine Artikelnummer pro Zeile zurück, wobei die Preisstufen als verschachtelte Daten dargestellt werden.
  • Beispiel 2 zeigt das Aufheben der Verschachtelung der Daten. Es wird eine Zeile pro Artikelnummer pro Preisstufe zurückgegeben.

Beispiel 1: Verschachtelte Daten

In diesem Beispiel wird eine einzelne Artikelnummer abgefragt, um die list_price-Daten zurückzugeben. Diese Artikelnummer hat mehrere Preisstufen. Die Werte des Listenpreisfelds werden in einzelnen Zeilen angezeigt, die unter der Zeile mit der Artikelnummer-ID verschachtelt sind.

Standard-SQL

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"
;

Abfrageergebnisse:

Row 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 Anfragen 152E-C115-5142 Cloud Run Konto MONATLICH 1000000 0 0 0
            1000000 2000000 0,4 0,4

Beispiel 2: Unverschachtelte Daten, die mit derselben Tabelle verknüpft sind

In diesem Beispiel wird eine einzelne Artikelnummer abgefragt, um list price zurückzugeben. Die Artikelnummer hat mehrere Preisstufen. Die Abfrage zeigt die Verwendung des Operators UNNEST zum Vereinfachen des tiered_rates-Arrays und Verbinden der Felder mit derselben Tabelle, sodass eine Zeile pro Preisstufe entsteht.

Standard-SQL

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`, UNNEST (sku_pricing.list_price.tiered_rates) as tier
WHERE DATE(_PARTITIONTIME) = "2020-07-20"
      AND sku.id = "2DA5-55D3-E679"
;

Abfrageergebnisse:

Row sku_id sku_description service_id service_description pricing_unit_quantity start_usage_amount usd_amount account_currency_amount
1 2DA5-55D3-E679 Anfragen 152E-C115-5142 Cloud Run 1000000.0 0,0 0,0 0,0
2 2DA5-55D3-E679 Anfragen 152E-C115-5142 Cloud Run 1000000.0 2000000.0 0,4 0,4

Produkt-Taxonomie und Geo-Taxonomie zur Abfrage von Artikelnummern verwenden

  • Die Produkt-Taxonomie ist eine Liste von Produktkategorien, die für die Artikelnummer gelten, z. B. Serverlos, Cloud Run oder VMs on Demand.
  • Geo-Taxonomie sind die geografischen Metadaten, die für eine Artikelnummer gelten und aus Typ- und Regionswerten bestehen.

Produkt-Taxonomie einer Artikelnummer abrufen

Dieses Beispiel zeigt eine Abfrage, bei der die Liste product_taxonomy für eine bestimmte Artikelnummer zurückgegeben wird, wobei die Artikelnummer-ID = 2DA5-55D3-E679 (Cloud Run – Abfragen) lautet.

Standard-SQL

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"
;

Abfrageergebnisse:

Row sku_id sku_description service_id service_description product_taxonomy
1 2DA5-55D3-E679 Anfragen 152E-C115-5142 Cloud Run GCP
        Serverlos
        Cloud Run
        Andere

Alle Artikelnummern für eine bestimmte Produkt-Taxonomie abrufen

In diesem Beispiel wird eine Abfrage gezeigt, die alle Artikelnummern zurückgibt, die einem angegebenen product_taxonomy entsprechen. In dieser Abfrage ist Serverlos als Wert product taxonomy angegeben.

Standard-SQL

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
;

Abfrageergebnisse:

Row sku_id sku_description service_id service_description product_taxonomy
1 0160-BD7B-4C40 Ausgehender Cloud Tasks-Netzwerktraffic innerhalb der Region F3A6-D7B7-9BDA Cloud Tasks GCP
        Serverlos
        Cloud Tasks
        Andere
2 FE08-0A74-7AFD Ausgehender Cloud Tasks GOOGLE-API-Traffic F3A6-D7B7-9BDA Cloud Tasks GCP
        Serverlos
        Cloud Tasks
        Andere
3 A81A-32A2-B46D Speicher-Aufgabenwarteschlange Salt Lake City F17B-412E-CB64 App Engine GCP
        Serverlos
        GAE
        Andere
        TaskQueue

Alle Artikelnummern für eine bestimmte Geo-Taxonomie und Produkt-Taxonomie abrufen

In diesem Beispiel wird eine Abfrage gezeigt, die alle Artikelnummern zurückgibt, die mit einer bestimmten geo_taxonomy-Region und einem bestimmten product_taxonomy übereinstimmen, wobei region = us-east4 und product_taxonomy = VMs auf Abruf ist.

Standard-SQL

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)
;

Abfrageergebnisse:

Row sku_id sku_description service_id service_description geo_taxonomy.type Geo_Taxonomien.regions product_taxonomy
1 9174-81EE-425B Premium für einzelne Mandanten für Instanz-RAM für einzelnen Mandanten in Virginia 6F81-5844-456A Compute Engine REGIONAL us-east4 GCP
            Compute
            GCE
            VMs on demand
            Arbeitsspeicher: pro GB
2 C3B9-E891-85ED Instanz-RAM für einzelne Mandanten in Virginia 6F81-5844-456A Compute Engine REGIONAL us-east4 GCP
            Compute
            GCE
            VMs on demand
            Arbeitsspeicher: pro GB
3 6E2A-DCD9-87ED Vordefinierter N1-Instanz-RAM in Virginia 6F81-5844-456A Compute Engine REGIONAL us-east4 GCP
            Compute
            GCE
            VMs on demand
            Arbeitsspeicher: pro GB

Kosten- und Preisberichte in der Google Cloud Console