Auf dieser Seite wird der Umgang mit den am 28. Oktober 2020 vorgenommenen Änderungen an den Cloud Billing-Daten erläutert, die in Tabellen in BigQuery exportiert werden.
Erläuterung der Änderungen
Das Tabellenschema für die nach BigQuery exportierten Standardnutzungskosten in Cloud Billing wurde aktualisiert, um weitere Datenfelder zu verdeutlichen. Die Tabelle heißt im BigQuery-Dataset gcp_billing_export_v1_<BILLING_ACCOUNT_ID>
.
Die folgenden Datenfelder wurden dem Cloud Billing-BigQuery-Nutzungsexportschema hinzugefügt:
project.number
adjustment_info
adjustment_info.id
adjustment_info.mode
adjustment_info.description
adjustment_info.type
Diese Daten gelten ab dem 29. Oktober 2020 und sind nicht für aufgezeichnete Datennutzungen vor diesem Zeitpunkt verfügbar. Aktualisieren Sie bei Bedarf die Integrationen oder Automatisierungen auf Basis des neuen Schemas, indem Sie Migrationen ausführen. Informationen zu den Daten, die diese neuen Felder enthalten, finden Sie unter Cloud Billing-Datentabellen in BigQuery.
Auswirkungen auf vorhandene Tabellen und Abfragen
Da sich die Tabellenstruktur für den Export der Standardnutzungskosten geändert hat, enthalten Abfragen, die direkt auf die exportierten Tabellen verweisen, nicht mehr alle verfügbaren Daten. Zur Behebung dieses Problems empfehlen wir, BigQuery-Ansichten zu erstellen, die die exportierten Tabellen abfragen und die Informationen in Ihrer bevorzugten Struktur anzeigen. Anschließend können Sie die Abfragen, die Ihre Berichte und Dashboards speisen, anstelle der exportierten Tabellen anpassen.
Mit Ansichten können Sie die Struktur der in Ihren Abfragen und Dashboards verwendeten Daten standardisieren.
In den von Ihnen erstellten Ansichten sollten die Daten normalisiert werden, sodass alle relevanten Tabellen in Ihren Abfragen das gleiche Schema enthalten. Somit sind Sie vor zukünftigen Schemaänderungen geschützt und können die zugrunde liegende Abfrage in diesen Instanzen ändern, wenn sich das Datenschema ändert.
Ansichten für den Umgang mit Schemaänderungen erstellen
Wenn Sie Tabellen beibehalten müssen, die das vorherige Schema verwenden, sollten Sie BigQuery-Ansichten für diese Tabellen erstellen, um das Datenschema zu normalisieren. Wenn Sie eine Ansicht zum Migrieren vom vorherigen Schema zum neuen erstellen, können Sie eine UNION
-Anweisung verwenden, um Tabellen mit nicht übereinstimmenden Schemas zu kombinieren. Die zu erstellende Ansicht hängt von den Datenfeldern ab, die Sie in Ihren Abfragen und Dashboards verwenden.
Mindestens eines der folgenden Beispiele kann auf Ihre Situation zutreffen, wobei Ihre Abfragen die neuen Felder project.number
und adjustment_info
möglicherweise nicht verwenden.
- Sie verwenden Tabellen, die bereits vorhandene und neue Schemaattribute enthalten, z. B.
credits.type
,credits.id
,credits.full
,project.number
undadjustment_info
. Ein Beispiel für das Erstellen dieser Ansicht finden Sie unter Ansicht für Tabellen mit allen Feldern im aktualisierten Schema erstellen. - Sie verwenden Tabellen, die nicht die vorhandenen Schemaattribute
credits.type
,credits.id
undcredits.full
enthalten. Ein Beispiel für das Erstellen dieser Ansicht finden Sie unter Ansicht für Tabellen ohnecredits.type
,credits.id
undcredits.full
erstellen. - Sie verwenden Tabellen, die die vorhandenen Schemaattribute
credits.type
,credits.id
undcredits.full
enthalten, jedoch nicht die neuen Schemaattributeproject.number
undadjustment_info
. Ein Beispiel für das Erstellen dieser Ansicht finden Sie unter Ansicht für Tabellen ohneproject.number
undadjustment_info
erstellen.
Sie können eine Ansicht erstellen, indem Sie eine SQL-Abfrage verfassen, mit der die für die Ansicht zugänglichen Daten definiert werden. Weitere Informationen finden Sie unter Ansicht erstellen.
Im Folgenden werden die Schritte zum Erstellen einer BigQuery-Ansicht zusammengefasst.
- Die Abfrage zum Erstellen der Ansicht auswählen
- Die Abfrage ausführen und Ergebnisse beobachten
- Die Ansicht speichern
- Den Namen für die neue Datenansicht eingeben
- Das Schema der neuen Ansicht beobachten
1. Ansicht für Tabellen mit allen Feldern im aktualisierten Schema erstellen
Mit der folgenden Abfrage wird eine neue Ansicht mit bereits vorhandenen und aktualisierten Schemas erstellt. MIt dieser Ansicht sinkt die Gefahr zukünftiger Schemaänderungen.
Wenn Sie diese Ansicht für Ihre Abfragen verwenden, haben sie alle das gleiche Schema und ermöglichen die erfolgreiche Funktionsweise von UNION
-Anweisungen. Diese Abfrage behält die Felder credits.type
, credits.id
, credits.full
, project.number
und adjustment_info
in den zugrunde liegenden Tabellen bei.
Standard-SQL
SELECT billing_account_id, STRUCT(service.id as id, service.description as description) as service, STRUCT(sku.id as id, sku.description as description) as sku, usage_start_time, usage_end_time, STRUCT( project.id as id, project.name as name, project.number as number, ARRAY(SELECT AS STRUCT label.key as key, label.value as value, FROM UNNEST(project.labels) as label) as labels, project.ancestry_numbers as ancestry_numbers) as project, ARRAY(SELECT AS STRUCT label.key as key, label.value as value, FROM UNNEST(labels) as label) as labels, ARRAY(SELECT AS STRUCT system_label.key as key, system_label.value as value, FROM UNNEST(system_labels) as system_label) as system_labels, STRUCT( location.location as location, location.country as country, location.region as region, location.zone as zone) as location, export_time, cost, currency, currency_conversion_rate, STRUCT( usage.amount as amount, usage.unit as unit, usage.amount_in_pricing_units as amount_in_pricing_units, usage.pricing_unit as pricing_unit) as usage, ARRAY(SELECT AS STRUCT credit.name as name, credit.amount as amount, credit.type as type, credit.id as id, credit.full_name as full_name, FROM UNNEST(credits) as credit) as credits, STRUCT( invoice.month as month) as invoice, cost_type, STRUCT( adjustment_info.id as id, adjustment_info.description as description, adjustment_info.mode as mode, adjustment_info.type as type) as adjustment_info, FROM TABLE_WITH_CREDITINFO_PROJECT_NUMBER_AND_ADJUSTMENT_INFO
2. Ansicht für Tabellen ohne credits.type
, credits.id
und credits.full
erstellen
Die folgende Abfrage erstellt eine neue Ansicht mithilfe von Tabellen, die nicht die bereits vorhandenen Schemaattribute credits.type
,credits.id
und credits.full
enthalten.
Standard-SQL
SELECT billing_account_id, STRUCT(service.id as id, service.description as description) as service, STRUCT(sku.id as id, sku.description as description) as sku, usage_start_time, usage_end_time, STRUCT( project.id as id, project.name as name, CAST(NULL as string) as number, ARRAY(SELECT AS STRUCT label.key as key, label.value as value, FROM UNNEST(project.labels) as label) as labels, project.ancestry_numbers as ancestry_numbers) as project, ARRAY(SELECT AS STRUCT label.key as key, label.value as value, FROM UNNEST(labels) as label) as labels, ARRAY(SELECT AS STRUCT system_label.key as key, system_label.value as value, FROM UNNEST(system_labels) as system_label) as system_labels, STRUCT( location.location as location, location.country as country, location.region as region, location.zone as zone) as location, export_time, cost, currency, currency_conversion_rate, STRUCT( usage.amount as amount, usage.unit as unit, usage.amount_in_pricing_units as amount_in_pricing_units, usage.pricing_unit as pricing_unit) as usage, ARRAY(SELECT AS STRUCT credit.name as name, credit.amount as amount, CAST(NULL as STRING) as type, CAST(NULL as STRING) as id, CAST(NULL as STRING) as full_name, FROM UNNEST(credits) as credit) as credits, STRUCT( invoice.month as month) as invoice, cost_type, STRUCT( CAST(NULL as STRING) as id, CAST(NULL as STRING) as description, CAST(NULL as STRING) as mode, CAST(NULL as STRING) as type) as adjustment_info, FROM TABLE_WITHOUT_CREDIT_ID_TYPE_FULL_NAME
3. Ansicht für Tabellen ohne project.number
und adjustment_info
erstellen
Die folgende Abfrage erstellt eine neue Ansicht mithilfe von Tabellen, die zwar die bereits vorhandenen Schemaattribute credits.type
, credits.id
und credits.full
enthalten, jedoch nicht die neuen Schemaattribute project.number
und adjustment_info
.
Standard-SQL
SELECT billing_account_id, STRUCT(service.id as id, service.description as description) as service, STRUCT(sku.id as id, sku.description as description) as sku, usage_start_time, usage_end_time, STRUCT( project.id as id, project.name as name, CAST(NULL as string) as number, ARRAY(SELECT AS STRUCT label.key as key, label.value as value, FROM UNNEST(project.labels) as label) as labels, project.ancestry_numbers as ancestry_numbers) as project, ARRAY(SELECT AS STRUCT label.key as key, label.value as value, FROM UNNEST(labels) as label) as labels, ARRAY(SELECT AS STRUCT system_label.key as key, system_label.value as value, FROM UNNEST(system_labels) as system_label) as system_labels, STRUCT( location.location as location, location.country as country, location.region as region, location.zone as zone) as location, export_time, cost, currency, currency_conversion_rate, STRUCT( usage.amount as amount, usage.unit as unit, usage.amount_in_pricing_units as amount_in_pricing_units, usage.pricing_unit as pricing_unit) as usage, ARRAY(SELECT AS STRUCT credit.name as name, credit.amount as amount, credit.type as type, credit.id as id, credit.full_name as full_name, FROM UNNEST(credits) as credit) as credits, STRUCT( invoice.month as month) as invoice, cost_type, STRUCT( CAST(NULL as STRING) as id, CAST(NULL as STRING) as description, CAST(NULL as STRING) as mode, CAST(NULL as STRING) as type) as adjustment_info, FROM TABLE_WITHOUT_PROJECTNUMBER_AND_ADJUSTMENT_INFO
4. Prüfen, ob Ansichten mit Originaltabellen übereinstimmen
Mit den folgenden Abfragen können Sie überprüfen, ob die von Ihnen erstellten Ansichten Daten bereitstellen, die mit den abgefragten ursprünglichen Tabellen übereinstimmen.
Die Abfragen verwenden die im Beispiel erstellte Ansicht ohne credits.type
, credits.id
und credits.full
. Weitere Informationen zum Erstellen dieser Ansicht finden Sie unter Ansicht für Tabellen ohne credits.type
, credits.id
und credits.full
erstellen.
Diese Abfrage bietet einen Vergleich der Kosten zwischen der ursprünglichen Tabelle und der Ansicht, die ohne credits.type
, credits.id
und credits.full
erstellt wurde. Dabei werden alle Zeilen einzeln verglichen.
Standard-SQL
-- ROW BY ROW COMPARISON OF COST BETWEEN ORIGINAL TABLE AND CONVERTED TABLE SELECT cost FROM TABLE_WITHOUT_CREDIT_ID_TYPE_FULL_NAME EXCEPT DISTINCT SELECT cost FROM TABLE_WITHOUT_CREDIT_ID_TYPE_FULL_NAME_VIEW
Diese Abfrage bietet einen Vergleich der Guthaben zwischen der ursprünglichen Tabelle und der Ansicht, die ohne credits.type
, credits.id
und credits.full
erstellt wurde. Dabei werden alle Zeilen einzeln verglichen.
Standard-SQL
-- ROW BY ROW COMPARISON OF CREDITS BETWEEN ORIGINAL TABLE AND CONVERTED TABLE WITH CONCAT_AMOUNTS AS (SELECT ARRAY_CONCAT_AGG(ARRAY(SELECT amount FROM UNNEST(credits) as cred)) as amounts FROM TABLE_WITHOUT_CREDIT_ID_TYPE_FULL_NAME), CONCAT_AMOUNTS_CONVERTED AS (SELECT ARRAY_CONCAT_AGG(ARRAY(SELECT amount FROM UNNEST(credits) as cred)) as amounts FROM TABLE_WITHOUT_CREDIT_ID_TYPE_FULL_NAME_VIEW) SELECT amounts FROM CONCAT_AMOUNTS, UNNEST(amounts) as amounts EXCEPT DISTINCT SELECT amounts FROM CONCAT_AMOUNTS_CONVERTED, UNNEST(amounts) as amounts
Weitere Informationen
- Cloud Billing-Datentabellen in BigQuery
- Cloud Billing-Datenexport nach BigQuery einrichten
- Beispielabfragen für den Export von Cloud Billing-Daten nach BigQuery
- Ausgaben im Zeitverlauf mit Looker Studio visualisieren