Exemplos de consultas de exportação do BigQuery

Esta página fornece exemplos de como consultar dados dos serviços de canal exportados para um conjunto de dados do BigQuery.

Para mais informações sobre a exportação de dados dos serviços de canal, consulte como configurar a exportação de dados dos serviços de canal para o BigQuery. Para ver sugestões adicionais de resolução de problemas, consulte o artigo Resolva problemas com exportações do BigQuery.

Identificar e aceder à tabela do BigQuery

As exportações dos serviços de canal são configuradas através da Partner Sales Console.

O nome da tabela usa o formato: PROJECT_ID.DATASET_NAME.reseller_billing_detailed_export_v1

Para permitir que outros utilizadores vejam uma exportação dos serviços de canal, tem de aplicar as autorizações corretas. Por exemplo, pode atribuir a função bigquery.dataViewer às suas credenciais no projeto, no conjunto de dados ou na própria tabela.

Exemplos de consultas

Os exemplos seguintes incluem uma consulta de exemplo e uma explicação básica de como interpretar os resultados. Os resultados contêm Google Cloud custos de utilização para todos os clientes ou parceiros do canal configurados na Consola de vendas de parceiros.

Soma dos custos de parceiros por conta de faturação

Pode usar esta consulta para validar uma fatura que recebe da Google. Os valores cost e credit.amount são as somas de todas as linhas. Estes incluem custos de utilização, impostos, ajustes e erros de arredondamento.

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;

Soma dos custos do cliente por subconta de faturação do Google Cloud

Pode usar esta consulta para resumir a utilização faturável de cada cliente. Os valores customer_cost e credit.customer_amount mostram as somas de todas as linhas que representam custos de utilização. As linhas que representam impostos, ajustes e arredondamentos mostram um valor de null.

Para créditos em que type está definido como RESELLER_MARGIN, o respetivo customer_amount está definido como zero para garantir que a margem não está visível na faturação do cliente.

Os valores customer_cost e credit.customer_amount mostram as suas configurações de redefinição de preços. Por exemplo, se o RebillingBasis para a concessão de um determinado cliente Google Cloud estiver definido como Direct Customer Cost minus 5%, o valor customer_cost é 0,95 multiplicado por cost. Isto reflete a redução configurada do seu custo.

Os resultados desta consulta contêm cada subconta do Cloud Billing, o nome do recurso do cliente de vendas de parceiros associado, o mês de faturação e a utilização faturável total.

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;

Soma dos custos do cliente por subconta de faturação do Google Cloud, conforme apresentado ao proprietário da subconta

Esta consulta mostra como os números de custos de dados são mapeados com o que um cliente de revenda (ou o parceiro) vê quando abre a Google Cloud consola para a respetiva subconta.

  1. Para créditos em que type está definido como RESELLER_MARGIN, este campo está oculto na vista de SBA.
  2. Para custos em que cost_type é imposto, este valor está oculto na vista da SBA. O revendedor deve adicionar os impostos aplicáveis separadamente às faturas de revenda.

Ocasionalmente, cost_at_list pode ser nulo para alguns registos, o que faz com que este resultado seja diferente do que vê na Google Cloud consola. Se isto acontecer, use IFNULL(cost_at_list, cost) em alternativa. Para mais informações, consulte o artigo Cobranças sem custos de lista.

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;

Soma dos custos do parceiro do canal por conta de faturação

Se for um distribuidor, pode usar esta consulta para resumir a utilização faturável de cada parceiro de canal. Os valores channel_partner_cost e credit.channel_partner_amount mostram a soma de todas as linhas que representam custos de utilização. As linhas que representam impostos, ajustes e arredondamentos mostram um valor de null.

Para créditos em que type está definido como RESELLER_MARGIN, o respetivo channel_partner_amount é definido como zero para garantir que a margem não é visível na faturação do parceiro de canal.

Os valores channel_partner_cost e credit.channel_partner_amount mostram as suas configurações de redefinição de preços. Por exemplo, se o RebillingBasis de um parceiro de canal específico estiver definido como Direct Customer Cost minus 5%, o valor channel_partner_cost é 0,95 multiplicado por cost. Isto reflete a redução configurada do seu custo.

Os resultados desta consulta contêm cada conta de faturação, o parceiro de canal resource_name associado aos clientes nessa conta de faturação, o mês da fatura e a utilização faturável total.

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;

Soma dos custos não atribuídos a um cliente

Pode usar esta consulta para resumir os custos não associados a um cliente dos serviços de canal, mas que podem representar a utilização faturável a outros clientes. Os valores cost e credit.amount mostram a soma de todas as linhas em que os valores billing_account_id e payer_billing_account_id são diferentes. O elemento billing_account_id representa a subconta do Cloud Billing.

Para créditos em que type está definido como RESELLER_MARGIN, esta consulta exclui o valor do crédito. O valor do crédito destina-se à sua atribuição e não é considerado um custo do cliente. O valor de RESELLER_MARGIN está incluído no seu custo e refletido nas faturas enviadas pela 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;

Vista de dados do Google Workspace semelhante ao CSV de faturas

Se for um revendedor do Google Workspace, pode ver os dados de faturação do Google Workspace com colunas semelhantes às dos ficheiros CSV de faturas.

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,
  SUM(cost_at_list) AS list_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;

Outras colunas de interesse a adicionar às cláusulas SELECT e GROUP BY:

  • billing_account_id: representa o ID do Cloud ID do cliente.
  • customer_name: representa o recurso de cliente que pode ser usado em chamadas de API.
  • channel_partner_name: (Para distribuidores) Representa o parceiro do canal.
  • entitlement_name: nome do recurso da concessão nos serviços de canal.
  • customer_correlation_id: um ID de gestão das relações com clientes (CRM) que pode definir para um cliente.
  • usage.amount: Para a utilização baseada em postos do Google Workspace, isto indica postos pagos. Por exemplo, lugares comprados para compromissos ou número de lugares atribuídos para subscrições flexíveis.

O resultado da consulta difere da fatura CSV das seguintes formas:

  • A coluna "Descrição" do CSV usa uma string legível, enquanto a exportação do BigQuery usa valores de enumeração.
  • As colunas "Data de início/fim" do CSV não têm zeros à esquerda (por exemplo, 1 de maio), enquanto a consulta do BigQuery usa valores com zeros à esquerda (por exemplo, 01 de maio). Também pode usar os valores de data/hora diretamente. O elemento usage_start_time está incluído, mas o elemento usage_end_time está excluído.
  • O CSV tem uma única linha "Imposto" no final, enquanto a exportação do BigQuery tem linhas de impostos ao nível da subscrição que somam o mesmo valor que a linha "Imposto" do CSV.

Vista de dados de faturação de encomendas offline semelhante ao PDF da fatura (pré-visualização)

Se for um revendedor que também faz encomendas offline (encomendas que não faz através da Consola de vendas de parceiros), pode ver os dados de faturação com colunas semelhantes às dos ficheiros CSV de faturas.

SELECT
  billing_account_id AS customer_name,
  service.description AS sku_name,
  sku.id AS sku_id,
  FORMAT_TIMESTAMP('%b %d', usage_start_time, 'America/Los_Angeles')
    AS start_date,
  FORMAT_TIMESTAMP('%b %d', usage_end_time, 'America/Los_Angeles')
    AS end_date,
  SUM(usage.amount_in_pricing_unit) AS quantity,
  SUM(cost) AS amount,
FROM `PROJECT_ID.DATASET_NAME.reseller_billing_offline_orders_detailed_export_v0`
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
  customer_name,
  sku_name,
  sku_id,
  start_date,
  end_date
HAVING amount != 0
ORDER BY
  customer_name,
  start_date,
  end_date,
  sku_id;

O resultado da consulta difere da fatura em PDF nos seguintes aspetos:

  • Pode converter o valor da data/hora num valor de data no fuso horário "America/Los_Angeles". Tanto o usage_start_time como o usage_end_time são exclusivos.
  • O PDF tem uma discriminação detalhada dos impostos sobre vendas locais e estaduais, enquanto a exportação do BigQuery tem linhas de impostos ao nível da subscrição que totalizam o valor do imposto para toda a subscrição.