En este documento se ofrecen algunos ejemplos de cómo consultar los datos de Facturación de Cloud que se han exportado a BigQuery y se almacenan en él.
Para obtener más información sobre cómo exportar tus datos de facturación a BigQuery, consulta la descripción general y las limitaciones.
Generar una consulta de SQL a partir de un informe de facturación
Para escribir rápidamente una consulta de SQL que devuelva los mismos resultados en BigQuery que los de un informe de facturación, puede usar la función Generar consulta de los informes de facturación, disponible en la consola de Google Cloud .
Especifica el nombre de la tabla que quieres usar en tus consultas
En estos ejemplos, para consultar los datos de Facturación de Cloud exportados en BigQuery, debe especificar la ruta completa al nombre de la tabla en la cláusula FROM
. El nombre de la tabla se determina mediante tres valores separados por puntos:
project-ID.dataset_name.BQ_table_name
project-ID
es el ID del Google Cloud proyecto que has configurado y que contiene tu conjunto de datos de BigQuery.dataset_name
es el nombre del conjunto de datos de BigQuery que has configurado para que contenga las tablas de BigQuery con tus datos de Facturación de Cloud exportados.BQ_table_name
es el nombre de la tabla de BigQuery que contiene los datos de Facturación de Cloud exportados que quieres consultar.Las tablas de BigQuery que contienen los datos de Facturación de Cloud exportados reciben automáticamente un nombre en función del tipo de exportación que habilites:
Tabla de costes de uso estándar: En tu conjunto de datos de BigQuery, esta tabla se llama
gcp_billing_export_v1_<BILLING-ACCOUNT-ID>
.Tabla de costes de uso detallados: En el conjunto de datos de BigQuery, esta tabla se llama
gcp_billing_export_resource_v1_<BILLING-ACCOUNT-ID>
.Tabla de precios: En tu conjunto de datos de BigQuery, esta tabla se llama
cloud_pricing_export
.
Por ejemplo, supongamos que tienes una cuenta de facturación de Cloud configurada para exportar datos de costes de uso detallados y que los componentes de la configuración de exportación de facturación son los siguientes:
project-ID
:my-billing-project
dataset_name
:my_billing_dataset
BQ_table_name
:gcp_billing_export_resource_v1_<BILLING-ACCOUNT-ID>
BILLING-ACCOUNT-ID
:010101-F0FFF0-10X10X
: es el ID de la cuenta de facturación de Cloud que contiene los datos de facturación que vas a exportar. Consulta cómo encontrar el ID de tu cuenta de facturación.
Según los valores de ejemplo, escribirías la cláusula FROM
de la siguiente manera:
my-billing-project.my_billing_dataset.gcp_billing_export_resource_v1_010101-F0FFF0-10X10X
Consultas de ejemplo por tipo de datos de Facturación de Cloud
En esta sección se proporcionan ejemplos de consultas para sus datos de costes de uso estándar, datos de costes de uso detallados y datos de precios.
Si has decidido exportar datos de costes de uso detallados, puedes usar los ejemplos de consulta Costes de uso estándar, además de los ejemplos de consulta Costes de uso detallados.
Ejemplos de consultas de costes de uso estándar
En esta sección se ofrecen ejemplos de cómo consultar los datos de costes de uso estándar de Facturación de Cloud exportados a BigQuery.
Estos ejemplos de consultas también funcionan con los datos de costes de uso detallados que se exportan a BigQuery, aunque no se han escrito para recuperar ninguna de las informaciones a nivel de recurso que se proporcionan con la opción de exportación de costes de uso detallados.
Valores comunes utilizados en las consultas de costes estándar de ejemplo
En los ejemplos de consultas de esta sección se usa el siguiente valor para Nombre de tabla:
project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX
Devuelve los costes totales de una factura
Las siguientes consultas muestran dos formas de ver los valores de costes y créditos mediante los datos de facturación exportados.
- El campo
total
suma directamente los valores de coste y crédito de coma flotante, lo que puede provocar errores de redondeo de coma flotante. - El campo
total_exact
convierte los costes y los valores de crédito a micro antes de sumarlos y, después, los vuelve a convertir a dólares para evitar el error de redondeo de coma flotante.
Ejemplo 1: Suma de todos los costes por factura
Esta consulta muestra el total de la factura de cada mes, que es la suma de los costes normales, los impuestos, los ajustes y los errores de redondeo.
SQL estándar
SELECT invoice.month, SUM(cost) + SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0)) AS total, (SUM(CAST(cost AS NUMERIC)) + SUM(IFNULL((SELECT SUM(CAST(c.amount AS NUMERIC)) FROM UNNEST(credits) AS c), 0))) AS total_exact FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX` GROUP BY 1 ORDER BY 1 ASC ;
Por ejemplo, el resultado de la consulta anterior podría ser el siguiente:
Acceso | mes | total | total_exact |
---|---|---|---|
1 | 201901 | 1005,004832999999984 USD | $1005.00 |
2 | 201902 | 992,3101739999999717 USD | 992,31 $ |
3 | 201903 | 1220,761089999999642 USD | 1220,76 USD |
Ejemplo 2: Devolver detalles por tipo de coste y mes de facturación
Esta consulta muestra los totales de cada cost_type
de cada mes. Los tipos de coste incluyen los costes normales, los impuestos, los ajustes y los errores de redondeo.
SQL estándar
SELECT invoice.month, cost_type, SUM(cost) + SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0)) AS total, (SUM(CAST(cost AS NUMERIC)) + SUM(IFNULL((SELECT SUM(CAST(c.amount AS NUMERIC)) FROM UNNEST(credits) AS c), 0))) AS total_exact FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX` GROUP BY 1, 2 ORDER BY 1 ASC, 2 ASC ;
Por ejemplo, el resultado de la consulta anterior podría ser el siguiente:
Acceso | mes | cost_type | total | total_exact |
---|---|---|---|---|
1 | 201901 | normal | 1000,501209987994782 USD | 1000,50 USD |
2 | 201901 | rounding_error | –$0.500489920049387 | –0,50 USD |
3 | 201901 | impuestos | 10,000329958477891 USD | 10,00 USD |
4 | 201901 | ajuste | –5,002572999387045 € | –5,00 USD |
Ejemplos de consultas con etiquetas
En los siguientes ejemplos se muestran otras formas de consultar los datos con etiquetas.
En los ejemplos de esta sección, se presupone lo siguiente:
- Tienes dos aplicaciones (exprimidor de pomelos y triturador de chocolate).
- Cada aplicación tiene dos entornos (desarrollo y producción).
- El entorno de desarrollo tiene una instancia pequeña por aplicación.
- El entorno de producción tiene una instancia pequeña en América y otra en Asia.
- Cada instancia está etiquetada con la aplicación y el entorno.
- Tienes una instancia sin etiquetas que usas para hacer experimentos.
El importe total de la factura es de 24 USD, con el siguiente desglose:
Instancia | Etiquetas | Coste total |
---|---|---|
Instancia pequeña con 1 vCPU ejecutándose en América | Ninguna | 4 $ |
Instancia pequeña con 1 vCPU ejecutándose en América | app: chocolate-masher environment: dev |
2 USD |
Instancia pequeña con 1 vCPU ejecutándose en América | app: grapefruit-squeezer environment: dev |
3 USD |
Instancia pequeña con 1 vCPU ejecutándose en América | app: chocolate-masher environment: prod |
3,25 $ |
Instancia pequeña con 1 vCPU ejecutándose en Asia | app: chocolate-masher environment: prod |
3,75 USD |
Instancia pequeña con 1 vCPU ejecutándose en América | app: grapefruit-squeezer environment: prod |
3,50 USD |
Instancia pequeña con 1 vCPU ejecutándose en Asia | app: grapefruit-squeezer environment: prod |
4,50 USD |
Hacer consultas con todas las filas sin agrupar
Para obtener más detalles sobre los costes, es necesario hacer una consulta sobre cada fila sin agrupar. Supongamos que todos los campos son iguales (proyecto, servicio, etc.), excepto las etiquetas y la descripción del SKU.
SQL estándar
SELECT sku.description, TO_JSON_STRING(labels) as labels, cost as cost FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX`;
SQL antiguo
TO_JSON_STRING not supported.
Fila | Descripción del SKU | Etiquetas | Coste |
---|---|---|---|
1 | Instancia pequeña con 1 vCPU ejecutándose en América | [] | 4 $ |
2 | Instancia pequeña con 1 vCPU ejecutándose en América | [{"key":"app","value":"chocolate-masher"},{"key":"environment","value":"dev"}] | 2 $ |
3 | Instancia pequeña con 1 vCPU ejecutándose en América | [{"key":"app","value":"grapefruit-squeezer"},{"key":"environment","value":"dev"}] | 3 $ |
4 | Instancia pequeña con 1 vCPU ejecutándose en América | [{"key":"app","value":"chocolate-masher"},{"key":"environment","value":"prod"}] | 3,25 $ |
5 | Instancia pequeña con 1 vCPU ejecutándose en Asia | [{"key":"app","value":"chocolate-masher"},{"key":"environment","value":"prod"}] | 3,75 $ |
6 | Instancia pequeña con 1 vCPU ejecutándose en América | [{"key":"app","value":"grapefruit-squeezer"},{"key":"environment","value":"prod"}] | 3,50 $ |
7 | Instancia pequeña con 1 vCPU ejecutándose en Asia | [{"key":"app","value":"grapefruit-squeezer"},{"key":"environment","value":"prod"}] | 4,50 $ |
TOTAL | 24 $ |
Agrupar por mapa de etiqueta como una cadena JSON
Es una forma básica de desglosar los costes por cada combinación de etiquetas.
SQL estándar
SELECT TO_JSON_STRING(labels) as labels, sum(cost) as cost FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX` GROUP BY labels;
SQL antiguo
TO_JSON_STRING not supported.
Fila | Etiquetas | Coste |
---|---|---|
1 | [] | 4 $ |
2 | [{"key":"app","value":"chocolate-masher"},{"key":"environment","value":"dev"}] | 2 $ |
3 | [{"key":"app","value":"grapefruit-squeezer"},{"key":"environment","value":"dev"}] | 3 $ |
4 | [{"key":"app","value":"chocolate-masher"},{"key":"environment","value":"prod"}] | 7 $ |
5 | [{"key":"app","value":"grapefruit-squeezer"},{"key":"environment","value":"prod"}] | 8 $ |
TOTAL | 24 $ |
Agrupar por el valor de las etiquetas para buscar una clave concreta
Normalmente, se desglosan los costes de los valores de las claves de etiquetas concretas. Si usas LEFT JOIN
y pones el filtro de clave en la condición JOIN
(en lugar de WHERE
), incluyes los costes que no contienen esta clave y, por lo tanto, obtienes una vista completa de tus costes.
SQL estándar
SELECT labels.value as environment, SUM(cost) as cost FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX` LEFT JOIN UNNEST(labels) as labels ON labels.key = "environment" GROUP BY environment;
SQL antiguo
SELECT labels.value as environment, SUM(cost) as cost FROM [project-ID:dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX] WHERE labels.key = "environment" OR labels.key IS NULL GROUP BY environment;
Fila | Entorno | Coste |
---|---|---|
1 | prod | 15 $ |
2 | dev | 5 $ |
3 | null | 4 $ |
TOTAL | 24 $ |
Agrupar por pares clave/valor
Estos resultados deben exportarse o interpretarse con precaución. Una fila individual muestra una suma válida sin duplicados, pero no se debe combinar con otras filas (excepto si la clave es la misma o si tiene la certeza de que las claves nunca se definen en el mismo recurso).
SQL estándar
SELECT labels.key as key, labels.value as value, SUM(cost) as cost FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX` LEFT JOIN UNNEST(labels) as labels GROUP BY key, value;
SQL antiguo
SELECT labels.key as key, labels.value as value, SUM(cost) FROM [project-ID:dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX] GROUP BY key, value;
Fila | Clave | Valor | Coste |
---|---|---|---|
1 | null | null | 4 $ |
2 | app | chocolate-masher | 9 $ |
3 | app | grapefruit-squeezer | 11 $ |
4 | environment | dev | 5 $ |
5 | environment | prod | 15 $ |
TOTAL | 44 $ |
Cabe destacar que la suma del total es más alta que el precio de tu factura.
Consultas sobre descuentos por uso confirmado
Las siguientes consultas muestran formas de ver las comisiones y los créditos asociados a los descuentos por compromiso de uso en los datos de facturación exportados. Para saber cómo se atribuyen las cuotas y los créditos de tu compromiso a tu cuenta de facturación de Cloud y a tus proyectos, consulta Atribución de descuentos por compromiso de uso.
Ver las comisiones de compromiso
Para ver las cuotas de compromiso de tus descuentos por uso comprometido en la exportación de datos de facturación, usa la siguiente consulta de ejemplo.
SQL estándar
SELECT invoice.month AS invoice_month, SUM(cost) as commitment_fees FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX` WHERE LOWER(sku.description) LIKE "commitment%" GROUP BY 1
Ver los créditos de compromiso
Para ver los créditos de descuento por compromiso de uso en la exportación de datos de facturación, usa la siguiente consulta de ejemplo.
SQL estándar
SELECT invoice.month AS invoice_month, SUM(credits.amount) as CUD_credits FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX` LEFT JOIN UNNEST(credits) AS credits WHERE credits.type = "COMMITTED_USAGE_DISCOUNT" GROUP BY 1
Usar filtros de jerarquía de recursos para consultar la ascendencia
Puede usar filtros de jerarquía de recursos para agregar costes por elementos de la jerarquía, como proyectos, carpetas y organizaciones. En estos ejemplos de consultas se muestran métodos para sumar los costes filtrados por elementos de la jerarquía de recursos y mostrar las ancestrías de los proyectos.
Ejemplo 1: Filtrar por nombre de recurso
En este ejemplo se muestran consultas que agrupan los costes por la jerarquía de proyectos y se filtran para mostrar solo los costes generados en un elemento de jerarquía específico, identificado por el nombre de recurso relativo.
Método de cadena
SELECT invoice.month AS invoice_month, TO_JSON_STRING(project.ancestors) as ancestors, SUM(cost) + SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0)) AS net_cost FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX` as bq WHERE TO_JSON_STRING(project.ancestors) like "%resource_name\":\"folders/1234" GROUP BY invoice_month, ancestors ORDER BY invoice_month, ancestors
Método UNNEST
SELECT invoice.month AS invoice_month, TO_JSON_STRING(project.ancestors) as ancestors, SUM(cost) + SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0)) AS net_cost FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX` as bq, UNNEST(project.ancestors) as ancestor WHERE ancestor.resource_name = "folders/1234" GROUP BY invoice_month, ancestors ORDER BY invoice_month, ancestors
Ejemplo 2: Filtrar por nombre visible
En este ejemplo se muestran consultas que agrupan los costes por la jerarquía de proyectos y se filtran para mostrar solo los costes generados en un elemento de jerarquía especificado, identificado por el nombre visible proporcionado por el usuario.
Método de coincidencia de cadenas
SELECT invoice.month AS invoice_month, TO_JSON_STRING(project.ancestors) as ancestors, SUM(cost) + SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0)) AS net_cost FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX` as bq WHERE TO_JSON_STRING(project.ancestors) like "%display_name\":\"MyFolderName%" GROUP BY invoice_month, ancestors ORDER BY invoice_month, ancestors
Método UNNEST
SELECT invoice.month AS invoice_month, TO_JSON_STRING(project.ancestors) as ancestors, SUM(cost) + SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0)) AS net_cost FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX` as bq, UNNEST(project.ancestors) as ancestor WHERE ancestor.display_name = "MyFolderName" GROUP BY invoice_month, ancestors ORDER BY invoice_month, ancestors
Ejemplos de consultas con etiquetas
En los siguientes ejemplos se muestran formas de consultar tus datos con etiquetas.
Calcular los costes por mes de facturación con etiquetas
La siguiente consulta muestra cómo puede usar los costes de retorno por mes de facturación de la etiqueta cost_center
.
SELECT invoice.month AS invoice_month, tag.value AS cost_center, ROUND((SUM(CAST(cost AS NUMERIC)) + SUM(IFNULL((SELECT SUM (CAST(c.amount AS NUMERIC)) FROM UNNEST(credits) AS c), 0))), 2) AS net_cost FROM `project-ID.dataset.gcp_billing_export_resource_v1_XXXXXX-XXXXXX-XXXXXX`, UNNEST(tags) AS tag WHERE tag.key = "cost_center" AND tag.namespace = "821092389413" GROUP BY invoice.month, tag.value ORDER BY invoice.month, tag.value;
Por ejemplo, el resultado de la consulta anterior podría ser el siguiente:
Acceso | invoice_month | cost_center | net_cost |
---|---|---|---|
1 | 202208 | android_mobile_apps | 9,93 |
2 | 202208 | ios_mobile_apps | 9,93 |
3 | 202209 | android_mobile_apps | 25.42 |
4 | 202209 | ios_mobile_apps | 25,4 |
5 | 202209 | personalización | 16.08 |
Ver los costes de los recursos sin etiquetar
Esta consulta muestra el total de la factura de los recursos sin etiquetar, agrupados por mes de facturación.
SELECT invoice.month AS invoice_month, ROUND((SUM(CAST(cost AS NUMERIC)) + SUM(IFNULL((SELECT SUM(CAST(c.amount AS NUMERIC)) FROM UNNEST(credits) AS c), 0))), 2) AS net_cost FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX` WHERE "color" NOT IN (SELECT key FROM UNNEST(tags)) GROUP BY invoice_month ORDER BY invoice_month;
Por ejemplo, el resultado de la consulta anterior podría ser el siguiente:
Acceso | invoice_month | net_cost |
---|---|---|
1 | 202202 | 0 |
2 | 202203 | 16,81 |
3 | 202204 | 54.09 |
4 | 202205 | 55,82 |
5 | 202206 | 54.09 |
6 | 202207 | 55,83 |
7 | 202208 | 31,49 |
Ejemplos de consultas adicionales
Consultar los costes y los créditos por proyecto de un mes de facturación concreto
Si se indica el mes de junio del 2020 (en formato AAAAMM), esta consulta devuelve una vista de los costes y los créditos agrupados por proyecto, así como las etiquetas de los proyectos.
SQL estándar
SELECT project.name, TO_JSON_STRING(project.labels) as project_labels, sum(cost) as total_cost, SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0)) as total_credits FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX` WHERE invoice.month = "202006" GROUP BY 1, 2 ORDER BY 1;
Acceso | name | project_labels | total_cost | total_credits |
---|---|---|---|---|
1 | CTG - Dev | [{"key":"ctg_p_env","value":"dev"}] | 79,140979 | -4.763796 |
2 | CTG - Prod | [{"key":"ctg_p_env","value":"prod"},{"key":"ctg_team","value":"eng"}] | 32.466272 | -3,073356 |
3 | CTG - Sandbox | [{"key":"ctg_p_env","value":"dev"}] | 0 | 0 |
4 | CTG - Almacenamiento | [{"key":"ctg_p_env","value":"prod"},{"key":"ctg_team","value":"data"}] | 7,645793 | -0,003761 |
Consultar los costes para ver las correcciones o el uso monetizado tardío de un mes de facturación concreto
Si proporcionas un mes de facturación específico y filtras por la fecha en la que se produjo el uso antes del mes de facturación, esta consulta simplificada devuelve los totales de costes de las correcciones o del uso monetizado tardíamente (cargos que deberían haber aparecido en una factura anterior).
SQL estándar
SELECT SUM(cost) + SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0)) AS total FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX` WHERE invoice.month = '202403' AND DATE(TIMESTAMP_TRUNC(usage_start_time, Day, 'US/Pacific')) < '2024-03-01';
Por ejemplo, el resultado de la consulta anterior podría ser el siguiente:
Acceso | total |
---|---|
1 | 3,531752 |
Consultar los detalles de los costes para ver las correcciones o el uso monetizado tardío por servicio de un mes de facturación concreto
En este ejemplo se muestra una consulta que devuelve un desglose de costes por servicio de los cargos de factura, donde la fecha de uso es anterior al mes de la factura. Esta consulta devuelve los totales de costes y créditos por servicio de las correcciones o del uso monetizado tardío (cargos que deberían haber aparecido en una factura anterior).
En este ejemplo de consulta, la cláusula WHERE
filtra todos los cargos con un mes de facturación de marzo del 2024 (en el formato YYYYMM) y, a continuación, acota los resultados para que solo se devuelvan los cargos con un mes de facturación que tengan una fecha de uso anterior al 1 de marzo del 2024.
SELECT DATE(TIMESTAMP_TRUNC(usage_start_time, Day, 'US/Pacific')) AS `Day`, service.description AS `Service Description`, SUM(CAST(cost_at_list AS NUMERIC)) AS `List cost`, SUM(CAST(cost AS NUMERIC)) - SUM(CAST(cost_at_list AS NUMERIC)) AS `Negotiated savings`, SUM(IFNULL((SELECT SUM(CAST(c.amount AS numeric)) FROM UNNEST(credits) c WHERE c.type IN ('SUSTAINED_USAGE_DISCOUNT', 'DISCOUNT', 'SPENDING_BASED_DISCOUNT', 'COMMITTED_USAGE_DISCOUNT', 'FREE_TIER', 'COMMITTED_USAGE_DISCOUNT_DOLLAR_BASE', 'SUBSCRIPTION_BENEFIT', 'RESELLER_MARGIN')), 0)) AS `Discounts`, SUM(IFNULL((SELECT SUM(CAST(c.amount AS numeric)) FROM UNNEST(credits) c WHERE c.type IN ('CREDIT_TYPE_UNSPECIFIED', 'PROMOTION')), 0)) AS `Promotions and others`, SUM(CAST(cost_at_list AS NUMERIC)) + SUM(IFNULL((SELECT SUM(CAST(c.amount AS numeric)) FROM UNNEST(credits) c WHERE c.type IN ('SUSTAINED_USAGE_DISCOUNT', 'DISCOUNT', 'SPENDING_BASED_DISCOUNT', 'COMMITTED_USAGE_DISCOUNT', 'FREE_TIER', 'COMMITTED_USAGE_DISCOUNT_DOLLAR_BASE', 'SUBSCRIPTION_BENEFIT', 'RESELLER_MARGIN')), 0)) + SUM(CAST(cost AS NUMERIC)) - SUM(CAST(cost_at_list AS NUMERIC))+ SUM(IFNULL((SELECT SUM(CAST(c.amount AS numeric)) FROM UNNEST(credits) c WHERE c.type IN ('CREDIT_TYPE_UNSPECIFIED', 'PROMOTION')), 0)) AS `Subtotal` FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX` WHERE invoice.month = '202403' AND DATE(TIMESTAMP_TRUNC(usage_start_time, Day, 'US/Pacific')) < '2024-03-01' GROUP BY Day, service.description ORDER BY Day DESC, Subtotal DESC;
Por ejemplo, el resultado de la consulta anterior podría ser el siguiente:
Acceso | Día | Descripción del servicio | Coste según catálogo | Ahorros negociados | Descuentos | Créditos promocionales y otros | Subtotal |
---|---|---|---|---|---|---|---|
1 | 2024-02-29 | Compute Engine | 4,39916 | 0 | -1,00916 | 0 | 3,39000 |
2 | 2024-02-29 | Asistencia | 0,131969 | 0 | 0 | 0 | 0,131969 |
3 | 2024-02-29 | BigQuery | 0,005502 | 0 | 0 | 0 | 0,005502 |
4 | 2024-02-29 | Redes | 0,010972 | 0 | -0,006691 | 0 | 0,004281 |
Ejemplos de consultas de costes de uso detallados
En esta sección se ofrecen ejemplos de cómo consultar los datos de costes de uso detallados de Facturación de Cloud exportados a BigQuery.
Como el esquema de costes de uso detallado incluye todos los campos del esquema de costes de uso estándar, los ejemplos de consultas proporcionados para los datos estándar exportados a BigQuery también funcionan con los datos detallados exportados. Las consultas estándar no se han escrito para obtener ninguna de las informaciones a nivel de recurso que se proporcionan con la opción de exportación de costes de uso detallada. Cuando crees consultas para los datos detallados, puedes usar una consulta estándar como plantilla, actualizar el nombre de la tabla y añadir cualquiera de los campos disponibles en el esquema de costes de uso detallado.
Para obtener más información sobre los requisitos y las limitaciones de los datos detallados exportados, consulta el esquema de los datos de costes de uso detallados.
Valores comunes usados en las consultas de costes detalladas de ejemplo
En los ejemplos de consultas de esta sección se usa el siguiente valor para Nombre de tabla:
project-ID.dataset.gcp_billing_export_resource_v1_XXXXXX-XXXXXX-XXXXXX
Devolver los costes a nivel de recurso de una factura
Las siguientes consultas muestran dos formas de ver los valores de costes y créditos a nivel de recurso en una factura mediante los datos de facturación exportados.
- El campo
total
suma directamente los valores de coste y crédito de coma flotante, lo que puede provocar errores de redondeo de coma flotante. - El campo
total_exact
convierte los costes y los valores de crédito a micro antes de sumarlos y, después, los vuelve a convertir a dólares para evitar el error de redondeo de coma flotante.
Suma de los costes de cada recurso por factura
Esta consulta muestra el total de la factura de cada resource.name
al mes, como suma de los costes normales, los impuestos, los ajustes y los errores de redondeo. Los costes que no estén asociados a un elemento de nivel de recurso se agregan en el nombre null
del mes.
SQL estándar
SELECT invoice.month, resource.name, SUM(cost) + SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0)) AS total, (SUM(CAST(cost AS NUMERIC)) + SUM(IFNULL((SELECT SUM(CAST(c.amount AS NUMERIC)) FROM UNNEST(credits) AS c), 0))) AS total_exact FROM `project-ID.dataset.gcp_billing_export_resource_v1_XXXXXX-XXXXXX-XXXXXX` GROUP BY 1, 2 ORDER BY 1 ASC, 2 ASC ;
Por ejemplo, el resultado de la consulta anterior podría ser el siguiente:
Acceso | mes | name | total | total_exact |
---|---|---|---|---|
1 | 201901 | null | 1005,004832999999984 USD | $1005.00 |
2 | 201901 | backend1 | $781.8499760000028 | 781,85 USD |
3 | 201902 | null | 953,0034923645475983 USD | 953,03 USD |
4 | 201902 | backend1 | 992,3101739999999717 USD | 992,31 $ |
5 | 201902 | bitnami-launchpad-wordpress-1-wordpress | 1,2817819999999998 USD | 1,28 USD |
Devuelve los detalles por tipo de coste de cada recurso por mes de facturación.
Esta consulta muestra los totales de cada cost_type
de cada resource.name
por mes. Los tipos de costes incluyen los costes normales, los impuestos, los ajustes y los errores de redondeo. Los costes que no estén asociados a un elemento de nivel de recurso se agregan en el nombre null
del mes.
SQL estándar
SELECT invoice.month, cost_type, resource.name, SUM(cost) + SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0)) AS total, (SUM(CAST(cost AS NUMERIC)) + SUM(IFNULL((SELECT SUM(CAST(c.amount AS NUMERIC)) FROM UNNEST(credits) AS c), 0))) AS total_exact FROM `project-ID.dataset.gcp_billing_export_resource_v1_XXXXXX-XXXXXX-XXXXXX` GROUP BY 1, 2, 3 ORDER BY 1 ASC, 2 ASC, 3 ASC ;
Por ejemplo, el resultado de la consulta anterior podría ser el siguiente:
Acceso | mes | cost_type | name | total | total_exact |
---|---|---|---|---|---|
1 | 201901 | normal | null | 1000,501209987994782 USD | 1000,50 USD |
2 | 201901 | rounding_error | null | –$0.500489920049387 | –0,50 USD |
3 | 201901 | impuestos | null | 10,000329958477891 USD | 10,00 USD |
4 | 201901 | ajuste | null | –5,002572999387045 $ | –5,00 USD |
5 | 201901 | normal | backend1 | 410,998795012082947 USD | 411,00 $ |
2 | 201901 | rounding_error | backend1 | –0,2404900489920378 USD | –0,24 USD |
3 | 201901 | impuestos | backend1 | 4,105840329977189 USD | 4,11 USD |
Obtener un desglose de los costes de los clústeres de Google Kubernetes Engine (GKE)
En esta sección se proporcionan ejemplos de cómo filtrar los costes de los clústeres de GKE en los informes de exportación de BigQuery. Para obtener más información sobre los costes de los clústeres de GKE, consulta el artículo Ver el desglose de los costes de los clústeres.
Filtrar costes de GKE
En las siguientes consultas de ejemplo se muestra cómo filtrar y agrupar los costes de GKE de los tipos de recursos admitidos por nombre de clúster, espacio de nombres y etiqueta.
Costes de los clústeres de GKE antes de aplicar los créditos
SELECT SUM(cost) AS cost_before_credits, labels.value AS cluster_name FROM `project-ID.dataset.gcp_billing_export_resource_v1_XXXXXX-XXXXXX-XXXXXX` LEFT JOIN UNNEST(labels) as labels ON labels.key = "goog-k8s-cluster-name" GROUP BY labels.value ;
Costes de GKE después de aplicar los créditos por espacio de nombres
SELECT labels.value as namespace, SUM(cost) + SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0)) AS cost_after_credits, FROM `project-ID.dataset.gcp_billing_export_resource_v1_XXXXXX-XXXXXX-XXXXXX` LEFT JOIN UNNEST(labels) as labels ON labels.key = "k8s-namespace" GROUP BY namespace ;
Costes de GKE por SKU
SELECT project.id AS project_id, labels.value AS cluster_name, sku.id AS sku_id, sku.description AS sku_description, SUM(cost) AS cost FROM `project-ID.dataset.gcp_billing_export_resource_v1_XXXXXX-XXXXXX-XXXXXX` JOIN UNNEST(labels) AS labels ON labels.key = "goog-k8s-cluster-name" GROUP BY cluster_name, project_id, sku_description, sku_id ;
Ejemplos de consultas de datos de precios
En esta sección se ofrecen diferentes ejemplos de cómo consultar los datos de precios de Facturación de Cloud exportados a BigQuery.
Valores habituales que se usan en las consultas de precios de ejemplo
En los ejemplos de consulta de esta sección se usan los siguientes valores:
- Nombre de la tabla:
project-ID.dataset.cloud_pricing_export
- ID de SKU:
2DA5-55D3-E679
(Cloud Run - Requests)
Obtener los precios de lista de un SKU específico
En este ejemplo se muestra una consulta básica que devuelve el list_price
de cada nivel de precios de un SKU concreto.
SQL estándar
SELECT sku.id, sku.description, list_price.* FROM `project-ID.dataset.cloud_pricing_export` WHERE DATE(_PARTITIONTIME) = "2020-07-20" AND sku.id = "2DA5-55D3-E679" ;
_PARTITIONTIME
es un campo que genera automáticamente BigQuery y representa la fecha a la que pertenecen los datos. En lugar de _PARTITIONTIME
,
puedes usar un campo que la exportación de Facturación de Cloud genera explícitamente,
como
pricing_as_of_time
.
Esta es la misma consulta configurada para usar el campo pricing_as_of_time
:
SELECT sku.id, sku.description, list_price.* FROM `project-ID.dataset.cloud_pricing_export` WHERE DATE(pricing_as_of_time) = "2020-07-20" AND sku.id = "2DA5-55D3-E679" ;
Resultados de la consulta
Acceso | id | description | pricing_unit | aggregation_info. aggregation_level |
aggregation_info. aggregation_interval |
tiered_rates. pricing_unit_quantity |
tiered_rates. start_usage_amount |
tiered_rates. usd_amount |
tiered_rates. account_currency_amount |
---|---|---|---|---|---|---|---|---|---|
1 | 2DA5-55D3-E679 | Solicitudes | COUNT | CUENTA | MENSUAL | 1000000 | 0 | 0 | 0 |
1000000 | 2000000 | 0,4 | 0,4 |
Obtener los precios según catálogo de un SKU específico e incluir la descripción del servicio
Los dos ejemplos de esta sección muestran consultas que devuelven el
list_price
de cada
nivel de precios
de un SKU específico e incluyen la descripción del SKU y la descripción del servicio.
- En el ejemplo 1 se devuelve un SKU por fila, con los niveles de precios mostrados como datos anidados.
- En el ejemplo 2 se muestra cómo desanidar los datos para devolver una fila por SKU y por nivel de precios.
Ejemplo 1: Devuelve datos anidados
En este ejemplo se consulta un solo SKU para devolver los datos de list_price
. Este SKU tiene varios niveles de precios.
Los valores del campo de precio de venta se muestran en filas individuales anidadas en la fila del ID de SKU.
SQL estándar
SELECT sku.id AS sku_id, sku.description AS sku_description, service.id AS service_id, service.description as service_description, list_price.* FROM project-ID.dataset.cloud_pricing_export WHERE DATE(_PARTITIONTIME) = "2020-07-20" AND sku.id = "2DA5-55D3-E679" ;
Resultados de la consulta:
Acceso | sku_id | sku_description | service_id | service_description | aggregation_info. aggregation_level |
aggregation_info. aggregation_interval |
tiered_rates. pricing_unit_quantity |
tiered_rates. start_usage_amount |
tiered_rates. usd_amount |
tiered_rates. account_currency_amount |
---|---|---|---|---|---|---|---|---|---|---|
1 | 2DA5-55D3-E679 | Solicitudes | 152E-C115-5142 | Cloud Run | CUENTA | MENSUAL | 1000000 | 0 | 0 | 0 |
1000000 | 2000000 | 0,4 | 0,4 |
Ejemplo 2: Devuelve datos sin anidar combinados con la misma tabla
En este ejemplo, se consulta un solo SKU para devolver el list price
. El SKU tiene varios niveles de precios.
La consulta muestra cómo usar el operador UNNEST
para aplanar la matriz tiered_rates
y unir los campos con la misma tabla, lo que da como resultado una fila por nivel de precios.
SQL estándar
SELECT sku.id AS sku_id, sku.description AS sku_description, service.id AS service_id, service.description as service_description, tier.* FROM `project-ID.dataset.cloud_pricing_export` as sku_pricing, UNNEST (sku_pricing.list_price.tiered_rates) as tier WHERE DATE(_PARTITIONTIME) = "2020-07-20" AND sku.id = "2DA5-55D3-E679" ;
Resultados de la consulta:
Acceso | sku_id | sku_description | service_id | service_description | pricing_unit_quantity | start_usage_amount | usd_amount | account_currency_amount |
---|---|---|---|---|---|---|---|---|
1 | 2DA5-55D3-E679 | Solicitudes | 152E-C115-5142 | Cloud Run | 1.000.000,0 | 0,0 | 0,0 | 0,0 |
2 | 2DA5-55D3-E679 | Solicitudes | 152E-C115-5142 | Cloud Run | 1.000.000,0 | 2000000,0 | 0,4 | 0,4 |
Usar taxonomías de producto y geográficas para consultar SKUs
- La taxonomía de productos es una lista de categorías de productos que se aplican al SKU, como Sin servidor, Cloud Run o Máquinas virtuales bajo demanda.
- La taxonomía geográfica es los metadatos geográficos que se aplican a un SKU y que constan de valores de tipo y región.
Obtener la taxonomía de producto de un SKU
En este ejemplo se muestra una consulta que devuelve la lista product_taxonomy
de un SKU específico, donde el ID de SKU es 2DA5-55D3-E679
(Cloud Run - Solicitudes).
SQL estándar
SELECT sku.id AS sku_id, sku.description AS sku_description, service.id AS service_id, service.description as service_description, product_taxonomy FROM `project-ID.dataset.cloud_pricing_export` WHERE DATE(_PARTITIONTIME) = "2020-07-20" AND sku.id = "2DA5-55D3-E679" ;
Resultados de la consulta:
Acceso | sku_id | sku_description | service_id | service_description | product_taxonomy |
---|---|---|---|---|---|
1 | 2DA5-55D3-E679 | Solicitudes | 152E-C115-5142 | Cloud Run | GCP |
Sin servidor | |||||
Cloud Run | |||||
Otro |
Obtener todos los SKUs de una taxonomía de producto específica
En este ejemplo se muestra una consulta que devuelve todos los SKUs que coinciden con un product_taxonomy
especificado.
En esta consulta, defina Serverless como valor de product taxonomy
.
SQL estándar
SELECT sku.id AS sku_id, sku.description AS sku_description, service.id AS service_id, service.description as service_description, product_taxonomy FROM `project-ID.dataset.cloud_pricing_export` WHERE DATE(_PARTITIONTIME) = "2020-07-20" AND "Serverless" in UNNEST(product_taxonomy) LIMIT 10 ;
Resultados de la consulta:
Acceso | sku_id | sku_description | service_id | service_description | product_taxonomy |
---|---|---|---|---|---|
1 | 0160-BD7B-4C40 | Salida de red en la misma región de Cloud Tasks | F3A6-D7B7-9BDA | Cloud Tasks | GCP |
Sin servidor | |||||
Cloud Tasks | |||||
Otro | |||||
2 | FE08-0A74-7AFD | Salida de GOOGLE-API de Cloud Tasks | F3A6-D7B7-9BDA | Cloud Tasks | GCP |
Sin servidor | |||||
Cloud Tasks | |||||
Otro | |||||
3 | A81A-32A2-B46D | Almacenamiento de colas de tareas en Salt Lake City | F17B-412E-CB64 | App Engine | GCP |
Sin servidor | |||||
GAE | |||||
Otro | |||||
TaskQueue |
Obtener todos los SKUs de una taxonomía geográfica y una taxonomía de producto específicas
En este ejemplo se muestra una consulta que devuelve todos los SKUs que coinciden con una geo_taxonomy
región y un product_taxonomy
especificados, donde region
= us-east4 y product_taxonomy
= VMs On Demand.
SQL estándar
SELECT sku.id AS sku_id, sku.description AS sku_description, service.id AS service_id, service.description as service_description, geo_taxonomy, product_taxonomy FROM `project-ID.dataset.cloud_pricing_export` WHERE DATE(_PARTITIONTIME) = "2020-07-20" AND "VMs On Demand" in UNNEST(product_taxonomy) AND geo_taxonomy.type = "REGIONAL" AND "us-east4" in UNNEST (geo_taxonomy.regions) ;
Resultados de la consulta:
Acceso | sku_id | sku_description | service_id | service_description | geo_taxonomy.type | geo_taxonomy.regions | product_taxonomy |
---|---|---|---|---|---|---|---|
1 | 9174-81EE-425B | Prima de único cliente para RAM de instancia de único cliente que se ejecuta en Virginia | 6F81-5844-456A | Compute Engine | REGIONAL | us‑east4 | GCP |
Computación | |||||||
GCE | |||||||
VMs On Demand | |||||||
Memoria: por GB | |||||||
2 | C3B9-E891-85ED | RAM de instancia de aislamiento de un solo inquilino que se ejecuta en Virginia | 6F81-5844-456A | Compute Engine | REGIONAL | us‑east4 | GCP |
Computación | |||||||
GCE | |||||||
VMs On Demand | |||||||
Memoria: por GB | |||||||
3 | 6E2A‑DCD9‑87ED | RAM de instancia predefinida N1 que se ejecuta en Virginia | 6F81-5844-456A | Compute Engine | REGIONAL | us‑east4 | GCP |
Computación | |||||||
GCE | |||||||
VMs On Demand | |||||||
Memoria: por GB |
Combinar datos de precios con datos de costes de uso detallados
Esta consulta muestra cómo combinar las exportaciones de datos de precios y costes para ver información detallada sobre los precios en consonancia con sus costes. Puedes configurar esta consulta para extraer los datos exportados de tus datos de costes de uso detallados (como Exports
) y combinar tus datos de costes de uso con tus datos de precios exportados (como Prices
).
Usa el nombre de la tabla de costes de uso detallado para obtener los datos de Exports
:
gcp_billing_export_resource_v1_<BILLING_ACCOUNT_ID>
Usa el nombre de la tabla de precios
para los datos de Prices
:
project-ID.dataset.cloud_pricing_export
WITH Exports AS ( SELECT * FROM `project-ID.dataset.gcp_billing_export_resource_v1_XXXXXX-XXXXXX-XXXXXX` ), Prices AS ( SELECT * FROM `project-ID.dataset.cloud_pricing_export` ) SELECT Exports.sku.description AS sku_description, Exports.cost, Exports.usage, FlattenedPrices.pricing_unit_description, FlattenedPrices.account_currency_amount, FlattenedPrices.account_currency_code, FROM Exports JOIN (SELECT * FROM Prices CROSS JOIN UNNEST(Prices.list_price.tiered_rates)) AS FlattenedPrices ON Exports.sku.id = FlattenedPrices.sku.id AND Exports.price.tier_start_amount = FlattenedPrices.start_usage_amount WHERE DATE(Exports.export_time) = '2023-06-30' AND DATE(FlattenedPrices.export_time) = '2023-06-30' AND cost > 0 LIMIT 1000
Por ejemplo, el resultado de la consulta anterior podría ser el siguiente:
sku_description | Coste | uso | pricing_unit_description | account_currency_amount | account_currency_code |
---|---|---|---|---|---|
Capacidad de disco persistente balanceado | 0,001345 | { "usage": { "amount": "38654705664000.0", "unit": "byte-seconds", "amount_in_pricing_units": "0.01345895", "pricing_unit": "gibibyte month" } } | gibibyte al mes | 0,1 | USD |
Capacidad de disco persistente balanceado | 0,001344 | { "usage": { "amount": "38654705664000.0", "unit": "byte-seconds", "amount_in_pricing_units": "0.01345895", "pricing_unit": "gibibyte month" } } | gibibyte al mes | 0,1 | USD |
Capacidad de disco persistente balanceado | 0,001346 | { "usage": { "amount": "38654705664000.0", "unit": "byte-seconds", "amount_in_pricing_units": "0.01345895", "pricing_unit": "gibibyte month" } } | gibibyte al mes | 0,1 | USD |
Temas relacionados
Temas relacionados con los datos de Facturación de Cloud exportados
- Configurar la exportación de datos de Facturación de Cloud a BigQuery
- Interpretar las tablas de datos de Facturación de Cloud en BigQuery
- Visualizar la inversión a lo largo del tiempo con Looker Studio
Informes de costes y precios disponibles en la Google Cloud consola
- Ver los informes de facturación y las tendencias de costes de Cloud
- Ver y descargar los detalles de los costes de una factura o un extracto
- Ver y descargar los precios de los servicios en la nube de Google
- Comprender lo que se ahorra con informes de desglose de costes
- Analizar la eficacia de los descuentos por uso confirmado
- Consultar el historial de costes y pagos