Exemples de requêtes BigQuery Export

Cette page fournit des exemples d'interrogation de données Channel Services exportées vers un ensemble de données BigQuery.

Pour en savoir plus sur l'exportation de données Channel Services, consultez la section Configurer l'exportation des données Channel Services vers BigQuery. Pour obtenir des conseils de dépannage supplémentaires, consultez Résoudre les problèmes liés aux exportations BigQuery.

Identifier la table BigQuery et y accéder

Les exportations Channel Services sont configurées à l'aide de la Partner Sales Console.

Le nom de la table respecte le format suivant: PROJECT_ID.DATASET_NAME.reseller_billing_detailed_export_v1

Pour autoriser d'autres utilisateurs à consulter une exportation Channel Services, vous devez appliquer les autorisations appropriées. Par exemple, vous pouvez attribuer le rôle bigquery.dataViewer à vos identifiants sur le projet, l'ensemble de données ou la table elle-même.

Exemples de requêtes

Les exemples suivants incluent un exemple de requête et une explication de base sur l'interprétation des résultats. Les résultats contiennent les coûts d'utilisation de Google Cloud pour chaque client ou partenaire de distribution configuré dans la Partner Sales Console.

Somme des coûts partenaires par compte de facturation

Vous pouvez utiliser cette requête pour vérifier une facture que vous recevez de Google. Les valeurs cost et credit.amount correspondent aux sommes de toutes les lignes. Ceux-ci incluent les coûts d'utilisation, les taxes, les ajustements et les erreurs d'arrondi.

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;

Somme des coûts client par sous-compte de facturation Cloud

Vous pouvez utiliser cette requête pour résumer l'utilisation facturable de chaque client. Les valeurs customer_cost et credit.customer_amount indiquent la somme de toutes les lignes représentant les coûts d'utilisation. Les lignes qui représentent les taxes, les ajustements et les arrondis affichent une valeur null.

Pour les crédits où type est défini sur RESELLER_MARGIN, sa valeur customer_amount est définie sur zéro pour que la marge ne soit pas visible dans la facturation client.

Les valeurs customer_cost et credit.customer_amount indiquent vos configurations de calcul des nouveaux tarifs. Par exemple, si le RebillingBasis pour le droit d'accès Google Cloud d'un client particulier est défini sur Direct Customer Cost minus 5%, la valeur customer_cost est 0,95 multipliée par cost. Cette valeur reflète la réduction configurée de vos coûts.

Les résultats de cette requête contiennent chaque sous-compte Cloud Billing, le nom de ressource du client Ventes partenaires associé, le mois de facturation et l'utilisation totale facturable.

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;

Somme des coûts client par sous-compte de facturation Cloud, telle que présentée au propriétaire du sous-compte

Cette requête vous permet de comparer les chiffres de coût des données avec ce qu'un client indirect (ou vous en tant que partenaire) voit lorsqu'il ouvre la console Google Cloud pour son sous-compte.

  1. Pour les crédits où type est défini sur RESELLER_MARGIN, ce champ est masqué dans la vue SBA.
  2. Pour les coûts où la valeur de cost_type correspond à la taxe, elle est masquée dans la vue des PME. Le revendeur est censé ajouter les taxes applicables séparément aux factures des clients indirects.

Il peut arriver que cost_at_list soit nul pour certains enregistrements : ce résultat diffère de ce que vous voyez dans la console Google Cloud. Dans ce cas, utilisez plutôt IFNULL(cost_at_list, cost). Pour en savoir plus, consultez la section Frais sans liste des coûts.

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;

Somme des coûts de partenaire de distribution par compte de facturation

Si vous êtes distributeur, vous pouvez utiliser cette requête pour résumer l'utilisation facturable de chaque partenaire de distribution. Les valeurs channel_partner_cost et credit.channel_partner_amount indiquent la somme de toutes les lignes qui représentent les coûts d'utilisation. Les lignes qui représentent les taxes, les ajustements et les arrondis affichent une valeur null.

Pour les crédits où type est défini sur RESELLER_MARGIN, sa valeur channel_partner_amount est définie sur zéro afin que la marge ne soit pas visible dans la facturation des partenaires de distribution.

Les valeurs channel_partner_cost et credit.channel_partner_amount indiquent vos configurations de calcul des nouveaux tarifs. Par exemple, si la valeur de RebillingBasis d'un partenaire de distribution spécifique est définie sur Direct Customer Cost minus 5%, la valeur de channel_partner_cost est 0,95 multipliée par cost. Elle reflète la réduction configurée de vos coûts.

Les résultats de cette requête contiennent chaque compte de facturation, le partenaire de distribution resource_name associé aux clients de ce compte de facturation, le mois de facturation et l'utilisation totale facturable.

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;

Somme des coûts non affectés à un client

Vous pouvez utiliser cette requête pour résumer les coûts qui ne sont pas associés à un client Channel Services, mais qui peuvent représenter une utilisation facturable à d'autres clients. Les valeurs cost et credit.amount indiquent la somme de toutes les lignes où billing_account_id et payer_billing_account_id sont différents. L'élément billing_account_id représente le sous-compte de facturation Cloud.

Pour les crédits où type est défini sur RESELLER_MARGIN, cette requête exclut le montant du crédit. Le montant du crédit est destiné à être alloué et n'est pas considéré comme un coût client. Le montant de RESELLER_MARGIN est inclus dans votre coût et apparaît sur les factures envoyées par Google.

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;

Vue des données Google Workspace semblable à la facture au format CSV

Si vous êtes un revendeur Google Workspace, vous pouvez obtenir une vue des données de facturation Google Workspace avec des colonnes semblables à celles des fichiers de facture CSV.

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;

Autres colonnes intéressantes à ajouter aux clauses SELECT et GROUP BY:

  • billing_account_id: représente l'ID Cloud Identity du client.
  • customer_name: représente la ressource client pouvant être utilisée dans les appels d'API.
  • channel_partner_name: (pour les distributeurs) représente le partenaire de distribution.
  • entitlement_name: nom de la ressource du droit d'accès dans Channel Services.
  • customer_correlation_id: ID de gestion de la relation client (CRM) que vous pouvez définir pour un client.
  • usage.amount: pour l'utilisation du nombre de licences utilisateur Google Workspace, il s'agit des licences payantes. (par exemple, des licences achetées pour des engagements ou le nombre de licences attribuées pour les abonnements Flex).

Le résultat de la requête diffère de la facture CSV de différentes manières:

  • La colonne "Description" du fichier CSV utilise une chaîne lisible, tandis que l'exportation BigQuery utilise des valeurs enum.
  • Les colonnes "Date de début/fin" du fichier CSV ne sont pas complétées par des zéros (par exemple, le 1er mai), tandis que la requête BigQuery utilise des valeurs complétées (par exemple, le 1er mai). Vous pouvez également utiliser les valeurs d'horodatage directement. La propriété usage_start_time est inclusive, tandis que la valeur usage_end_time est exclusive.
  • Le fichier CSV comporte une seule ligne "Taxe" à la fin, tandis que l'exportation vers BigQuery comporte des lignes de taxes au niveau de l'abonnement qui totalisent le même montant que la ligne "Taxes" du fichier CSV.