Beispiele für BigQuery Export-Abfragen

Auf dieser Seite finden Sie Beispiele für die Abfrage von Channel Services-Daten, die in ein BigQuery-Dataset exportiert wurden.

Weitere Informationen zum Datenexport für Channel Services finden Sie unter Datenexport für Channel Services nach BigQuery einrichten. Weitere Tipps zur Fehlerbehebung finden Sie unter Probleme mit BigQuery-Exporten beheben.

BigQuery-Tabelle identifizieren und darauf zugreifen

Channel Services-Exporte werden mit der Partner Sales Console eingerichtet.

Der Tabellenname hat folgendes Format: PROJECT_ID.DATASET_NAME.reseller_billing_detailed_export_v1

Damit andere Nutzer einen Channel Services-Export ansehen können, müssen Sie die entsprechenden Berechtigungen anwenden. Den Anmeldedaten für das Projekt, das Dataset oder die Tabelle selbst können Sie beispielsweise die Rolle bigquery.dataViewer zuweisen.

Beispielabfragen

Die folgenden Beispiele enthalten eine Beispielabfrage und eine grundlegende Erklärung zur Interpretation der Ergebnisse. Die Ergebnisse enthalten Google Cloud-Nutzungskosten für jeden konfigurierten Kunden oder Channelpartner in der Partner Sales Console.

Summe der Partnerkosten nach Rechnungskonto

Mit dieser Abfrage können Sie eine Rechnung prüfen, die Sie von Google erhalten. Die Werte cost und credit.amount sind die Summen für alle Zeilen. Dazu gehören Nutzungskosten, Steuern, Korrekturen und Rundungsfehler.

SELECT
  payer_billing_account_id,
  currency,
  invoice.month,
  SUM(cost)
    + SUM(
      IFNULL(
        (SELECT SUM(c.amount) FROM UNNEST(credits) AS c), 0))
    AS total
FROM `PROJECT_ID.DATASET_NAME.reseller_billing_detailed_export_v1`
WHERE
  export_time BETWEEN TIMESTAMP(START_DATE)
    AND TIMESTAMP(END_DATE)
GROUP BY
  payer_billing_account_id,
  currency,
  invoice.month
ORDER BY
  payer_billing_account_id,
  currency,
  invoice.month;

Summe der Kundenkosten nach Cloud-Rechnungsunterkonto

Mit dieser Abfrage können Sie die abrechenbare Nutzung für jeden Kunden zusammenfassen. Die Werte customer_cost und credit.customer_amount geben die Summen aller Zeilen an, die Nutzungskosten darstellen. Zeilen, die Steuern, Korrekturen und Rundungen darstellen, enthalten einen null-Wert.

Bei Gutschriften, bei denen type auf RESELLER_MARGIN festgelegt ist, wird customer_amount auf null gesetzt, damit die Marge in der Kundenabrechnung nicht angezeigt wird.

Die Werte customer_cost und credit.customer_amount zeigen Ihre Konfigurationen für die Preisneuberechnung. Wenn beispielsweise RebillingBasis für die Google Cloud-Berechtigung eines bestimmten Kunden auf Direct Customer Cost minus 5% festgelegt ist, wird der customer_cost-Wert 0, 95 mit cost multipliziert. Dies spiegelt die konfigurierte Reduzierung Ihrer Kosten wider.

Die Ergebnisse dieser Abfrage enthalten jedes Cloud-Rechnungsunterkonto, den Ressourcennamen des zugehörigen Partner Sales-Kunden, den Rechnungsmonat und die gesamte abrechenbare Nutzung.

SELECT
  customer_name,
  billing_account_id,
  payer_billing_account_id,
  currency,
  invoice.month,
  SUM(customer_cost)
    + SUM(
      IFNULL(
        (SELECT SUM(c.customer_amount) FROM UNNEST(credits) AS c), 0))
    AS total
FROM `PROJECT_ID.DATASET_NAME.reseller_billing_detailed_export_v1`
WHERE
  export_time BETWEEN TIMESTAMP(START_DATE)
    AND TIMESTAMP(END_DATE)
GROUP BY
  customer_name,
  billing_account_id,
  payer_billing_account_id,
  currency,
  invoice.month
ORDER BY
  customer_name,
  billing_account_id,
  payer_billing_account_id,
  currency,
  invoice.month;

Summe der Kundenkosten nach Cloud-Rechnungsunterkonto, wie dem Inhaber des Unterkontos angezeigt

Diese Abfrage zeigt, wie die Zahlen für Datenkosten mit dem übereinstimmen, was ein Kunde eines Resellers (oder Sie als Partner) sieht, wenn er die Google Cloud Console für sein Unterkonto öffnet.

  1. Bei Gutschriften, bei denen type auf RESELLER_MARGIN festgelegt ist, ist dies in der SBA-Ansicht ausgeblendet.
  2. Bei Kosten, bei denen cost_type den Wert Steuern hat, ist dies in der SBA-Ansicht ausgeblendet. Der Reseller ist dazu verpflichtet, anwendbare Steuern gesondert auf den Rechnungen seiner Reseller hinzuzufügen.

Gelegentlich kann cost_at_list für einige Datensätze null sein, wodurch dieses Ergebnis von dem abweicht, was Sie in der Google Cloud Console sehen. Verwenden Sie in diesem Fall stattdessen IFNULL(cost_at_list, cost). Weitere Informationen finden Sie unter Gebühren ohne Listenkosten.

SELECT
  customer_name,
  currency,
  SUM(cost_at_list) AS list_cost,
  SUM(cost - cost_at_list) AS negotiated_savings,
  SUM(cost)
    + SUM(
      IFNULL(
        (
          SELECT
            SUM(c.amount)
          FROM
            UNNEST(credits) AS c
          WHERE
            c.type != 'RESELLER_MARGIN'
        ),
        0)) AS total
FROM
  `PROJECT_ID.DATASET_NAME.reseller_billing_detailed_export_v1`
WHERE
  cost_type != 'tax'
  AND billing_account_id = 'BILLING_SUBACCOUNT_ID'
  AND invoice.month = 'YYYYMM'
GROUP BY
  customer_name,
  currency
ORDER BY
  customer_name,
  currency;

Summe der Kosten des Channelpartners nach Rechnungskonto

Als Händler können Sie mit dieser Abfrage die kostenpflichtige Nutzung für jeden Channelpartner zusammenfassen. Die Werte channel_partner_cost und credit.channel_partner_amount geben die Summe aller Zeilen an, die die Nutzungskosten darstellen. Zeilen, die Steuern, Korrekturen und Rundungen darstellen, enthalten einen null-Wert.

Bei Gutschriften, bei denen type auf RESELLER_MARGIN festgelegt ist, wird channel_partner_amount auf null gesetzt, damit die Marge in der Abrechnung für Channelpartner nicht sichtbar ist.

Die Werte channel_partner_cost und credit.channel_partner_amount zeigen Ihre Konfigurationen für die Preisneuberechnung. Wenn beispielsweise RebillingBasis für einen bestimmten Channelpartner auf Direct Customer Cost minus 5% gesetzt ist, wird der Wert channel_partner_cost mit 0, 95 multipliziert mit cost berechnet. Dies spiegelt die konfigurierte Reduzierung Ihrer Kosten wider.

Die Ergebnisse dieser Abfrage enthalten jedes Rechnungskonto, den mit Kunden verknüpften Channelpartner resource_name, den Rechnungsmonat und die gesamte abrechenbare Nutzung.

SELECT
  channel_partner_name,
  payer_billing_account_id,
  currency,
  invoice.month,
  SUM(channel_partner_cost)
    + SUM(
      IFNULL(
        (SELECT SUM(c.channel_partner_amount) FROM UNNEST(credits) AS c), 0))
    AS total
FROM `PROJECT_ID.DATASET_NAME.reseller_billing_detailed_export_v1`
WHERE
  export_time BETWEEN TIMESTAMP(START_DATE)
    AND TIMESTAMP(END_DATE)
GROUP BY
  channel_partner_name,
  payer_billing_account_id,
  currency,
  invoice.month
ORDER BY
  channel_partner_name,
  payer_billing_account_id,
  currency,
  invoice.month;

Summe der Kosten, die keinem Kunden zugewiesen sind

Mit dieser Abfrage können Sie Kosten zusammenfassen, die nicht mit einem Channel Services-Kunden verknüpft sind, aber die Nutzung darstellen, die anderen Kunden in Rechnung gestellt werden kann. Die Werte cost und credit.amount geben die Summe aller Zeilen an, bei denen billing_account_id und payer_billing_account_id unterschiedlich sind. Die billing_account_id steht für das Cloud-Rechnungsunterkonto.

Bei Gutschriften, bei denen type auf RESELLER_MARGIN festgelegt ist, wird der Gutschriftbetrag in dieser Abfrage ausgeschlossen. Der Guthabenbetrag ist für Ihre Zuweisung vorgesehen und gilt nicht als Kundenkosten. Der Betrag für RESELLER_MARGIN ist in Ihren Kosten enthalten und wird auf den Rechnungen ausgewiesen, die von Google gesendet werden.

SELECT
  billing_account_id,
  payer_billing_account_id,
  currency,
  invoice.month,
  SUM(cost)
    + SUM(
      IFNULL(
        (SELECT SUM(c.amount) FROM UNNEST(credits) AS c WHERE c.type != 'RESELLER_MARGIN'), 0))
    AS total
FROM `PROJECT_ID.DATASET_NAME.reseller_billing_detailed_export_v1`
WHERE
  export_time BETWEEN TIMESTAMP(START_DATE)
    AND TIMESTAMP(END_DATE)
  AND customer_name IS NULL
GROUP BY
  billing_account_id,
  payer_billing_account_id,
  currency,
  invoice.month
ORDER BY
  billing_account_id,
  payer_billing_account_id,
  currency,
  invoice.month;

Google Workspace-Datenansicht ähnlich wie CSV-Rechnung

Wenn Sie Google Workspace-Reseller sind, sehen Sie möglicherweise eine Ansicht der Google Workspace-Abrechnungsdaten mit ähnlichen Spalten wie die CSV-Rechnungen.

SELECT
  (
    SELECT
      ws_labels.value
    FROM
      UNNEST(system_labels) AS ws_labels
    WHERE
      ws_labels.key = 'workspace.googleapis.com/domain_name'
  ) AS domain_name,
  billing_account_id AS customer_id,
  sku.description AS sku_name,
  sku.id AS sku_id,
  (
    SELECT
      ws_labels.value
    FROM
      UNNEST(system_labels) AS ws_labels
    WHERE
      ws_labels.key = 'workspace.googleapis.com/usage_type'
  ) AS description,
  (
    SELECT
      ws_labels.value
    FROM
      UNNEST(system_labels) AS ws_labels
    WHERE
      ws_labels.key = 'workspace.googleapis.com/order_id'
  ) AS order_name,
  FORMAT_TIMESTAMP('%b %d ', usage_start_time, 'America/Los_Angeles')
    AS start_date,
  FORMAT_TIMESTAMP(
    '%b %d',
    TIMESTAMP_SUB(usage_end_time, INTERVAL 1 MINUTE),
    'America/Los_Angeles')
    AS end_date,
  SUM(usage.amount_in_pricing_unit) AS quantity,
  (
    SELECT ws_labels.value
    FROM UNNEST(system_labels) AS ws_labels
    WHERE ws_labels.key = 'workspace.googleapis.com/purchase_order_id'
  ) AS po_number,
  SUM(cost) AS amount,
FROM `PROJECT_ID.DATASET_NAME.reseller_billing_detailed_export_v1`
WHERE
  export_time BETWEEN TIMESTAMP(START_DATE)
    AND TIMESTAMP(END_DATE)
  AND payer_billing_account_id = 'EXTERNAL_BILLING_ACCOUNT_ID'
  AND invoice.month = 'INVOICE_MONTH'
GROUP BY
  domain_name,
  customer_id,
  sku_name,
  sku_id,
  description,
  order_name,
  start_date,
  end_date,
  po_number
HAVING amount != 0
ORDER BY
  domain_name,
  order_name,
  start_date,
  end_date;

Weitere relevante Spalten, die den Klauseln SELECT und GROUP BY hinzugefügt werden können:

  • billing_account_id: Steht für die Cloud Identity-ID des Kunden.
  • customer_name: Stellt die Kundenressource dar, die in API-Aufrufen verwendet werden kann.
  • channel_partner_name: (für Händler) Steht für den Kanalpartner.
  • entitlement_name: Ressourcenname der Berechtigung in Channel Services.
  • customer_correlation_id: Eine CRM-ID (Customer-Relationship-Management), die Sie für einen Kunden definieren können.
  • usage.amount: Bei der lizenzbasierten Nutzung von Google Workspace weist das auf kostenpflichtige Lizenzen hin. Beispiel: erworbene Lizenzen für Zusicherungen oder Anzahl der zugewiesenen Lizenzen für Flex-Abos.

Das Abfrageergebniss unterscheidet sich in folgenden Punkten von der CSV-Rechnung:

  • Die CSV-Spalte „Beschreibung“ verwendet einen für Menschen lesbaren String, während BigQuery-Export enum-Werte verwendet.
  • Die Spalten mit dem Start-/Enddatum der CSV-Datei sind nicht mit Nullen aufgefüllt (z. B. 1. Mai), während die BigQuery-Abfrage aufgefüllte Werte verwendet (z. B. 01. Mai). Sie können die Zeitstempelwerte auch direkt verwenden. usage_start_time ist einschließlich, aber usage_end_time ist exklusiv.
  • Die CSV-Datei hat am Ende eine einzelne Zeile „Tax“ (Steuern). Im BigQuery-Export gibt es hingegen Steuerzeilen auf Aboebene, die zusammen den gleichen Betrag wie in der CSV-Zeile „Tax“ (Steuern) ergeben.