Ejemplos de consultas de exportación de BigQuery

En esta página se ofrecen ejemplos de cómo consultar datos de Channel Services exportados a un conjunto de datos de BigQuery.

Para obtener más información sobre la exportación de datos de Channel Services, consulta cómo configurar la exportación de datos de Channel Services a BigQuery. Para obtener más consejos sobre cómo solucionar problemas, consulta el artículo Solucionar problemas con las exportaciones de BigQuery.

Identificar y acceder a la tabla de BigQuery

Las exportaciones de Channel Services se configuran mediante la consola de Partner Sales.

El nombre de la tabla tiene el formato PROJECT_ID.DATASET_NAME.reseller_billing_detailed_export_v1.

Para permitir que otros usuarios vean una exportación de servicios de canal, debes aplicar los permisos correctos. Por ejemplo, puedes asignar el rol bigquery.dataViewer a tus credenciales en el proyecto, el conjunto de datos o la tabla.

Ejemplos de consultas

En los siguientes ejemplos se incluyen una consulta de muestra y una explicación básica de cómo interpretar los resultados. Los resultados contienen los costes de uso de Google Cloud cada cliente o partner de canal configurado en Partner Sales Console.

Suma de los costes de partner por cuenta de facturación

Puedes usar esta consulta para verificar una factura que recibas de Google. Los valores cost y credit.amount son las sumas de todas las filas. como los costes por uso, los impuestos, los ajustes y los errores de redondeo.

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;

Suma de los costes de los clientes por subcuenta de facturación de Cloud

Puede usar esta consulta para resumir el uso facturable de cada cliente. Los valores customer_cost y credit.customer_amount muestran la suma de todas las filas que representan costes de uso. Las filas que representan impuestos, ajustes y redondeos muestran un valor de null.

En el caso de los créditos en los que type se ha definido como RESELLER_MARGIN, su customer_amount se ha definido como cero para asegurarse de que el margen no se muestre en la facturación del cliente.

Los valores customer_cost y credit.customer_amount muestran tus configuraciones de cambio de precios. Por ejemplo, si el RebillingBasis del derechoGoogle Cloud de un cliente concreto es Direct Customer Cost minus 5%, el valor de customer_cost es 0,95 multiplicado por cost. Esto refleja la reducción configurada de tu coste.

Los resultados de esta consulta contienen cada subcuenta de facturación de Cloud, su nombre de recurso de cliente de Partner Sales asociado, el mes de la factura y el uso facturable 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;

Suma de los costes para el cliente por subcuenta de facturación de Cloud, tal como se muestra al propietario de la subcuenta.

Esta consulta muestra cómo se corresponden los números de costes de datos con lo que ve un cliente revendido (o tú como partner) cuando abre la Google Cloud consola de su subcuenta.

  1. En el caso de los créditos en los que type tiene el valor RESELLER_MARGIN, este campo está oculto en la vista de SBA.
  2. En el caso de los costes en los que cost_type es impuestos, se oculta en la vista de la SBA. El revendedor debe añadir los impuestos aplicables por separado a las facturas de los productos revendidos.

En ocasiones, cost_at_list puede ser nulo en algunos registros, lo que provoca que este resultado sea diferente del que se muestra en la consola Google Cloud . Si esto ocurre, usa IFNULL(cost_at_list, cost) en su lugar. Para obtener más información, consulta Cargos sin costes 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;

Suma de los costes del partner de canal por cuenta de facturación

Si eres distribuidor, puedes usar esta consulta para resumir el uso facturable de cada partner de canal. Los valores channel_partner_cost y credit.channel_partner_amount muestran la suma de todas las filas que representan los costes de uso. Las filas que representan impuestos, ajustes y redondeos muestran el valor null.

En el caso de los créditos en los que type se ha definido como RESELLER_MARGIN, su channel_partner_amount se ha definido como cero para asegurarse de que el margen no se muestre en la facturación del partner de canal.

Los valores channel_partner_cost y credit.channel_partner_amount muestran tus configuraciones de cambio de precios. Por ejemplo, si el valor de RebillingBasis de un partner de canal concreto es Direct Customer Cost minus 5%, el valor de channel_partner_cost es 0,95 multiplicado por cost. Esto refleja la reducción configurada de tu coste.

Los resultados de esta consulta incluyen cada cuenta de facturación, el partner de canal resource_name asociado a los clientes de esa cuenta de facturación, el mes de la factura y el uso facturable 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;

Suma de los costes no asignados a un cliente.

Puedes usar esta consulta para resumir los costes que no estén vinculados a un cliente de Channel Services, pero que puedan representar un uso facturable a otros clientes. Los valores cost y credit.amount muestran la suma de todas las filas en las que billing_account_id y payer_billing_account_id son diferentes. El billing_account_id representa la subcuenta de facturación de Cloud.

En el caso de los créditos en los que type tiene el valor RESELLER_MARGIN, esta consulta excluye el importe del crédito. El importe del crédito se asigna a tu cuenta y no se considera un coste para el cliente. El importe de RESELLER_MARGIN se incluye en tu coste y se refleja en las facturas que envía 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 datos de Google Workspace similar al archivo CSV de la factura

Si eres distribuidor de Google Workspace, puedes ver los datos de facturación de Google Workspace con columnas similares a las de los archivos CSV de las facturas.

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;

Otras columnas de interés que se pueden añadir a las cláusulas SELECT y GROUP BY:

  • billing_account_id: representa el ID de Cloud Identity del cliente.
  • customer_name: representa el recurso de cliente que se puede usar en las llamadas a la API.
  • channel_partner_name: (para distribuidores) representa al partner del canal.
  • entitlement_name: nombre de recurso del derecho en Servicios de canal.
  • customer_correlation_id: ID de gestión de relaciones con clientes (CRM) que puedes definir para un cliente.
  • usage.amount: En el caso del uso basado en puestos de Google Workspace, indica los puestos de pago. Por ejemplo, los puestos comprados en los planes de facturación fija o el número de puestos asignados en las suscripciones flexibles.

El resultado de la consulta se diferencia de la factura en formato CSV en los siguientes aspectos:

  • La columna "Description" del archivo CSV usa una cadena legible por humanos, mientras que la exportación de BigQuery usa valores de enumeración.
  • Las columnas "Fecha de inicio/finalización" del archivo CSV no tienen ceros iniciales (por ejemplo, 1 de mayo), mientras que la consulta de BigQuery usa valores con ceros iniciales (por ejemplo, 01 de mayo). También puedes usar los valores de marca de tiempo directamente. El usage_start_time es inclusivo, pero el usage_end_time es exclusivo.
  • El archivo CSV tiene una sola línea "Impuestos" al final, mientras que la exportación de BigQuery tiene líneas de impuestos a nivel de suscripción que suman el mismo importe que la línea "Impuestos" del archivo CSV.

Vista de los datos de facturación de pedidos sin conexión similar a la del PDF de la factura (vista previa)

Si eres un distribuidor que también hace pedidos sin conexión (pedidos que no haces a través de la consola de ventas para partners), puedes consultar los datos de facturación en columnas similares a las de los archivos CSV de las facturas.

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;

El resultado de la consulta se diferencia de la factura en PDF en los siguientes aspectos:

  • Puede convertir el valor de la marca de tiempo en un valor de fecha en la zona horaria "America/Los_Angeles". Los atributos usage_start_time y usage_end_time son excluyentes.
  • El PDF incluye un desglose detallado de los impuestos locales y estatales, mientras que la exportación de BigQuery tiene líneas de impuestos a nivel de suscripción que suman el importe total de los impuestos de toda la suscripción.