Este documento fornece alguns exemplos de como consultar os dados de faturação do Google Cloud exportados para o BigQuery e armazenados no mesmo.
Para mais informações sobre a exportação dos dados de faturação para o BigQuery, consulte a vista geral e as limitações.
Gere uma consulta SQL a partir de um relatório de custos
Para escrever rapidamente uma consulta SQL que devolva os resultados equivalentes no BigQuery aos resultados num relatório de faturação, pode usar a funcionalidade Gerar consulta nos relatórios de faturação, disponíveis na consola Google Cloud .
Especifique o nome da tabela a usar nas suas consultas
Nestes exemplos, para consultar os dados de faturação do Google Cloud exportados no
BigQuery, tem de especificar o caminho completo para o nome da tabela na
cláusula FROM
. O nome da tabela é determinado através de três valores separados
por pontos:
project-ID.dataset_name.BQ_table_name
project-ID
é o ID do Google Cloud projeto que configurou que contém o seu conjunto de dados do BigQuery.dataset_name
é o nome do conjunto de dados do BigQuery que configurou para conter as tabelas do BigQuery com os seus dados de faturação da nuvem exportados.BQ_table_name
é o nome da tabela do BigQuery que contém os dados de faturação do Google Cloud exportados que quer consultar.As tabelas do BigQuery que contêm os dados de faturação do Google Cloud exportados recebem automaticamente um nome com base no tipo de exportação que ativa:
Tabela de custos de utilização padrão: No seu conjunto de dados do BigQuery, esta tabela tem o nome
gcp_billing_export_v1_<BILLING-ACCOUNT-ID>
.Tabela de custos de utilização detalhada: No seu conjunto de dados do BigQuery, esta tabela tem o nome
gcp_billing_export_resource_v1_<BILLING-ACCOUNT-ID>
.Tabela de preços: No seu conjunto de dados do BigQuery, esta tabela tem o nome
cloud_pricing_export
.
Por exemplo, suponha que tem uma conta de faturação do Google Cloud configurada para exportar dados de custos de utilização detalhados e que os componentes da configuração de exportação de faturação são os seguintes:
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
: este é o ID da conta do Cloud Billing que contém os dados de faturação que está a exportar. Saiba como encontrar o ID da conta de faturação.
Com base nos valores de exemplo, escreveria a cláusula FROM
da seguinte forma:
my-billing-project.my_billing_dataset.gcp_billing_export_resource_v1_010101-F0FFF0-10X10X
Exemplos de consultas por tipo de dados do Cloud Billing
Esta secção fornece exemplos de consultas para os seus dados de custos de utilização padrão, dados de custos de utilização detalhados, e dados de preços.
Se optou por exportar dados de custos de utilização detalhados, pode usar os exemplos de consultas de custos de utilização padrão, além dos exemplos de consultas de custos de utilização detalhados.
Exemplos de consultas de custos de utilização padrão
Esta secção fornece exemplos de como consultar os dados de custos de utilização padrão da faturação do Google Cloud exportados para o BigQuery.
Estes exemplos de consultas também funcionam com os dados de custos de utilização detalhados exportados para o BigQuery, embora não sejam escritos para obter nenhuma das informações ao nível do recurso fornecidas com a opção de exportação de custos de utilização detalhados.
Valores comuns usados nos exemplos de consultas de custo padrão
Os exemplos de consultas nesta secção usam o seguinte valor para Nome da tabela:
project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX
Devolva os custos totais numa fatura
As consultas seguintes demonstram duas formas de ver os valores de custos e créditos através dos dados de faturação exportados.
- O campo
total
soma diretamente os valores de custo e crédito de vírgula flutuante, o que pode resultar em erros de arredondamento de vírgula flutuante. - O campo
total_exact
converte os custos e os valores de crédito em micros antes de os somar e, em seguida, converte-os novamente em dólares após a soma, evitando o erro de arredondamento de ponto flutuante.
Exemplo 1: soma de todos os custos, por fatura
Esta consulta mostra o total da fatura de cada mês, como uma soma dos custos normais, impostos, ajustes e erros de arredondamento.
SQL padrão
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 exemplo, o resultado da consulta anterior pode ser:
Linha | mês | total | total_exact |
---|---|---|---|
1 | 201901 | $1005.004832999999984 | 1005,00 $ |
2 | 201902 | 992,3101739999999717 € | 992,31 $ |
3 | 201903 | 1220,761089999999642 € | 1220,76 € |
Exemplo 2: devolva detalhes por tipo de custo, por mês de faturação
Esta consulta mostra os totais de cada cost_type
para cada mês. Os tipos de custos incluem custos normais, impostos, ajustes e erros de arredondamento.
SQL padrão
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 exemplo, o resultado da consulta anterior pode ser:
Linha | mês | cost_type | total | total_exact |
---|---|---|---|---|
1 | 201901 | regular | $1000.501209987994782 | 1000,50 $ |
2 | 201901 | rounding_error | –$0.500489920049387 | –$0,50 |
3 | 201901 | tax | $10.000329958477891 | 10,00 € |
4 | 201901 | ajuste | –$5.002572999387045 | –$5.00 |
Exemplos de consultas com etiquetas
Os exemplos seguintes ilustram outras formas de consultar os seus dados com etiquetas.
Para os exemplos nesta secção, considere o seguinte:
- Tem duas apps (grapefruit-squeezer e chocolate-masher).
- Para cada app, tem dois ambientes (desenvolvimento e produção).
- O ambiente de desenvolvimento tem uma pequena instância por app.
- O ambiente de produção tem uma instância pequena nas Américas e uma instância pequena na Ásia.
- Cada instância é etiquetada com a app e o ambiente.
- Tem uma instância sem etiquetas que usa para experimentação.
O valor total da fatura é de 24 $, com a seguinte discriminação:
Instância | Etiquetas | Custo total |
---|---|---|
Instância pequena com 1 VCPU em execução nas Américas | Nenhum | 4 € |
Instância pequena com 1 VCPU em execução nas Américas | app: chocolate-masher environment: dev |
2 € |
Instância pequena com 1 VCPU em execução nas Américas | app: grapefruit-squeezer environment: dev |
3 € |
Instância pequena com 1 VCPU em execução nas Américas | app: chocolate-masher environment: prod |
3,25 USD |
Instância pequena com 1 VCPU em execução na Ásia | app: chocolate-masher environment: prod |
3,75 $ |
Instância pequena com 1 VCPU em execução nas Américas | app: grapefruit-squeezer environment: prod |
3,50 USD |
Instância pequena com 1 VCPU em execução na Ásia | app: grapefruit-squeezer environment: prod |
4,50 € |
Consultar todas as linhas sem agrupar
A vista mais detalhada destes custos seria consultar todas as linhas sem agrupamento. Suponha que todos os campos, exceto as etiquetas e a descrição do SKU, são iguais (projeto, serviço, etc.).
SQL padrão
SELECT sku.description, TO_JSON_STRING(labels) as labels, cost as cost FROM `project-ID.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX`;
SQL antigo
TO_JSON_STRING not supported.
Linha | sku.description | etiquetas | custo |
---|---|---|---|
1 | Instância pequena com 1 VCPU em execução nas Américas | [] | 4 € |
2 | Instância pequena com 1 VCPU em execução nas Américas | [{"key":"app","value":"chocolate-masher"},{"key":"environment","value":"dev"}] | 2 € |
3 | Instância pequena com 1 VCPU em execução nas Américas | [{"key":"app","value":"grapefruit-squeezer"},{"key":"environment","value":"dev"}] | 3 € |
4 | Instância pequena com 1 VCPU em execução nas Américas | [{"key":"app","value":"chocolate-masher"},{"key":"environment","value":"prod"}] | 3,25 USD |
5 | Instância pequena com 1 VCPU em execução na Ásia | [{"key":"app","value":"chocolate-masher"},{"key":"environment","value":"prod"}] | 3,75 $ |
6 | Instância pequena com 1 VCPU em execução nas Américas | [{"key":"app","value":"grapefruit-squeezer"},{"key":"environment","value":"prod"}] | 3,50 USD |
7 | Instância pequena com 1 VCPU em execução na Ásia | [{"key":"app","value":"grapefruit-squeezer"},{"key":"environment","value":"prod"}] | 4,50 € |
TOTAL | 24 $ |
Agrupar por mapa de etiquetas como uma string JSON
Esta é uma forma básica de discriminar o custo por cada combinação de etiquetas.
SQL padrão
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 antigo
TO_JSON_STRING not supported.
Linha | etiquetas | custo |
---|---|---|
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 USD |
TOTAL | 24 $ |
Agrupe por valor da etiqueta para uma chave específica
A discriminação dos custos para valores de uma chave de etiqueta específica é um exemplo de utilização comum. Se usar um LEFT JOIN
e colocar o filtro de chave na condição JOIN
(em vez de WHERE
), inclui o custo que não contém esta chave e, por isso, recebe uma vista completa do seu custo.
SQL padrão
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 antigo
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;
Linha | ambiente | custo |
---|---|---|
1 | prod | 15 $ |
2 | dev | 5 € |
3 | nulo | 4 € |
TOTAL | 24 $ |
Agrupe por pares de chave/valor
Tenha cuidado ao interpretar ou exportar estes resultados. Uma linha individual aqui mostra uma soma válida sem contagem duplicada, mas não deve ser combinada com outras linhas (exceto possivelmente se a chave for a mesma ou se tiver a certeza de que as chaves nunca são definidas no mesmo recurso).
SQL padrão
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 antigo
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;
Linha | chave | valor | custo |
---|---|---|---|
1 | nulo | nulo | 4 € |
2 | app | chocolate-masher | 9 € |
3 | app | grapefruit-squeezer | 11 € |
4 | ambiente | dev | 5 € |
5 | ambiente | prod | 15 $ |
TOTAL | 44 $ |
Tenha em atenção que a soma total é superior à sua fatura.
Consultas sobre descontos de fidelidade
As seguintes consultas demonstram formas de ver as taxas e os créditos associados aos descontos por utilização garantida nos dados de faturação exportados. Para compreender como as taxas de compromisso e os créditos são atribuídos à sua conta do Cloud Billing e aos projetos, consulte o artigo Atribuição de descontos por utilização comprometida.
Visualizar taxas de compromisso
Para ver as taxas de compromisso dos seus descontos por utilização comprometida na exportação de dados de faturação, use a seguinte consulta de exemplo.
SQL padrão
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 créditos de compromisso
Para ver os créditos do desconto por utilização garantida na exportação de dados de faturação, use a seguinte consulta de exemplo.
SQL padrão
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
Use filtros de hierarquia de recursos para rever a ascendência
Pode usar filtros de hierarquia de recursos para agregar custos por elementos da hierarquia, como projetos, pastas e organizações. Estes exemplos de consultas mostram métodos para somar custos filtrados por elementos da hierarquia de recursos e apresentar as hierarquias dos projetos.
Exemplo 1: filtre pelo nome do recurso
Este exemplo demonstra consultas que agrupam os custos pela hierarquia do projeto e filtram apenas os custos gerados num elemento de hierarquia especificado, identificado pelo nome do recurso relativo.
Método de string
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
Exemplo 2: filtre por nome a apresentar
Este exemplo demonstra consultas que agrupam os custos pela hierarquia do projeto e filtram apenas os custos gerados num elemento de hierarquia especificado, identificado pelo nome a apresentar fornecido pelo utilizador.
Método de correspondência de strings
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
Exemplos de consultas com etiquetas
Os exemplos seguintes ilustram formas de consultar os seus dados com etiquetas.
Calcule os custos por mês de faturação com etiquetas
A consulta seguinte demonstra como pode usar os custos de devolução por mês de faturação
para a 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 exemplo, o resultado da consulta anterior pode ser:
Linha | 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 | personalização | 16,08 |
Veja os custos dos recursos não etiquetados
Esta consulta mostra o total da fatura para recursos não etiquetados, agrupados por mês da fatura.
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 exemplo, o resultado da consulta anterior pode ser:
Linha | 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 |
Exemplos de consultas adicionais
Consulte os custos e os créditos por projeto para um mês de faturação especificado
Ao fornecer um mês de faturação específico de junho de 2020 (no formato AAAAMM), esta consulta devolve uma vista dos custos e créditos agrupados por projeto, juntamente com a apresentação das etiquetas de projeto.
SQL padrão
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;
Linha | nome | 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 - Armazenamento | [{"key":"ctg_p_env","value":"prod"},{"key":"ctg_team","value":"data"}] | 7,645793 | -0,003761 |
Consulte os custos para ver correções ou a utilização monetizada tardiamente para um mês de faturação especificado
Ao fornecer um mês de faturação específico e filtrar por data em que a data de utilização ocorreu antes do mês de faturação, esta consulta simplificada devolve os totais de custos das correções ou da utilização monetizada tardiamente (cobranças que deveriam ter sido incluídas numa fatura anterior).
SQL padrão
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 exemplo, o resultado da consulta anterior pode ser:
Linha | total |
---|---|
1 | 3.531752 |
Consulte os detalhes dos custos para ver correções ou a rentabilização tardia da utilização por serviço para um mês de faturação especificado
Este exemplo demonstra uma consulta que devolve uma discriminação de custos por serviço, para encargos de fatura, em que a data de utilização ocorreu antes do mês da fatura. Esta consulta devolve os totais de custos e créditos por serviço para correções ou utilização monetizada tardiamente (cobranças que deveriam ter sido incluídas numa fatura anterior).
Neste exemplo de consulta, a cláusula WHERE
filtra todas as cobranças com um
mês da fatura de março de 2024 (no formato AAAAMM) e, em seguida, refina ainda mais os
resultados para devolver apenas as cobranças do mês da fatura que tenham uma data de utilização
anterior a 1 de março de 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 exemplo, o resultado da consulta anterior pode ser:
Linha | Dia | Descrição do serviço | Custo de tabela | Poupanças negociadas | Descontos | Promoções e outros | Subtotal |
---|---|---|---|---|---|---|---|
1 | 2024-02-29 | Compute Engine | 4.39916 | 0 | -1,00916 | 0 | 3,39000 |
2 | 2024-02-29 | Apoio técnico | 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 |
Exemplos de consultas de custos de utilização detalhados
Esta secção fornece exemplos de como consultar os dados de custos de utilização detalhados da faturação do Google Cloud exportados para o BigQuery.
Uma vez que o esquema de custos de utilização detalhado inclui todos os campos do esquema de custos de utilização padrão, os exemplos de consultas fornecidos para os dados padrão exportados para o BigQuery também funcionam com os dados detalhados exportados. Os exemplos de consultas padrão não são escritos para obter nenhuma das informações ao nível do recurso fornecidas com a opção de exportação de custos de utilização detalhada. Quando criar consultas para os dados detalhados, pode usar um exemplo de consulta padrão como modelo, atualizar o nome da tabela e adicionar qualquer um dos campos disponíveis no esquema de custos de utilização detalhado.
Para ver mais requisitos e limitações dos dados detalhados exportados, consulte o esquema dos dados de custos de utilização detalhados.
Valores comuns usados nos exemplos de consultas de custos detalhadas
Os exemplos de consultas nesta secção usam o seguinte valor para Nome da tabela:
project-ID.dataset.gcp_billing_export_resource_v1_XXXXXX-XXXXXX-XXXXXX
Devolva os custos ao nível do recurso numa fatura
As consultas seguintes demonstram duas formas de ver os valores de custos e créditos ao nível do recurso numa fatura através de dados de faturação exportados.
- O campo
total
soma diretamente os valores de custo e crédito de vírgula flutuante, o que pode resultar em erros de arredondamento de vírgula flutuante. - O campo
total_exact
converte os custos e os valores de crédito em micros antes de os somar e, em seguida, converte-os novamente em dólares após a soma, evitando o erro de arredondamento de ponto flutuante.
Soma dos custos de cada recurso, por fatura
Esta consulta mostra o total da fatura para cada resource.name
por mês, como uma soma dos custos normais, impostos, ajustes e erros de arredondamento. Todos os custos não associados a um item ao nível do recurso são agregados no nome null
para o mês.
SQL padrão
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 exemplo, o resultado da consulta anterior pode ser:
Linha | mês | nome | total | total_exact |
---|---|---|---|---|
1 | 201901 | null | $1005.004832999999984 | 1005,00 $ |
2 | 201901 | backend1 | 781,8499760000028 $ | 781,85 € |
3 | 201902 | null | $953,0034923645475983 | 953,03 € |
4 | 201902 | backend1 | 992,3101739999999717 € | 992,31 $ |
5 | 201902 | bitnami-launchpad-wordpress-1-wordpress | 1,2817819999999998 USD | 1,28 € |
Devolve detalhes por tipo de custo para cada recurso, por mês de faturação
Esta consulta mostra os totais de cada cost_type
para cada resource.name
por mês. Os tipos de custos incluem custos normais, impostos, ajustes e erros de arredondamento. Todos os custos não associados a um item ao nível do recurso são agregados
no nome null
para o mês.
SQL padrão
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 exemplo, o resultado da consulta anterior pode ser:
Linha | mês | cost_type | nome | total | total_exact |
---|---|---|---|---|---|
1 | 201901 | regular | null | $1000.501209987994782 | 1000,50 $ |
2 | 201901 | rounding_error | null | –$0.500489920049387 | –$0,50 |
3 | 201901 | tax | null | $10.000329958477891 | 10,00 € |
4 | 201901 | ajuste | null | –$5.002572999387045 | –$5.00 |
5 | 201901 | regular | backend1 | 410,998795012082947 $ | 411,00 $ |
2 | 201901 | rounding_error | backend1 | –$0.2404900489920378 | –$0,24 |
3 | 201901 | tax | backend1 | $4.105840329977189 | 4,11 € |
Obtenha uma discriminação dos custos do cluster do Google Kubernetes Engine (GKE)
Esta secção fornece exemplos de filtragem dos custos do cluster do GKE nos relatórios de exportação do BigQuery. Para saber mais acerca dos custos dos clusters do GKE, visite o artigo Veja a discriminação dos custos dos clusters.
Filtre os custos do GKE
As consultas de exemplo seguintes mostram como filtrar e agrupar os custos do GKE para tipos de recursos suportados por nome do cluster, espaço de nomes e etiqueta.
Custos do cluster do GKE antes dos 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 ;
Custos do GKE após créditos por espaço de nomes
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 ;
Custos do 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 ;
Exemplos de consultas de dados de preços
Esta secção apresenta diferentes exemplos de como consultar os dados de preços da Faturação do Google Cloud exportados para o BigQuery.
Valores comuns usados nas consultas de preços de exemplo
Os exemplos de consultas nesta secção usam os seguintes valores:
- Nome da tabela:
project-ID.dataset.cloud_pricing_export
- ID do SKU:
2DA5-55D3-E679
(Cloud Run – Pedidos)
Obtenha preços de tabela para um SKU específico
Este exemplo demonstra uma consulta básica que devolve o
list_price
para cada
nível de preços
para um SKU especificado.
SQL padrão
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
é um campo gerado automaticamente pelo BigQuery
e representa a data a que os dados pertencem. Em vez de _PARTITIONTIME
,
pode usar um campo que a exportação do Cloud Billing gera explicitamente,
como
pricing_as_of_time
.
Segue-se a mesma consulta configurada para usar o 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 da consulta
Linha | id | descrição | 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 | Pedidos | COUNT | CONTA | MENSALMENTE | 1000000 | 0 | 0 | 0 |
1000000 | 2000000 | 0,4 | 0,4 |
Obtenha preços de tabela para um SKU específico e inclua a descrição do serviço
Os dois exemplos nesta secção demonstram consultas que devolvem o
list_price
para cada
nível de preços
para um SKU especificado e incluem a descrição do SKU e a descrição do serviço.
- O exemplo 1 devolve um SKU por linha, com os níveis de preços apresentados como dados aninhados.
- O exemplo 2 demonstra a anulação da aninhagem dos dados para devolver uma linha por SKU por nível de preços.
Exemplo 1: devolve dados aninhados
Este exemplo consulta um único SKU para devolver os dados de list_price
. Este SKU tem vários níveis de preços.
Os valores dos campos de preço de tabela são apresentados em linhas individuais aninhadas na linha do ID do SKU.
SQL padrão
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 da consulta:
Linha | 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 | Pedidos | 152E-C115-5142 | Cloud Run | CONTA | MENSALMENTE | 1000000 | 0 | 0 | 0 |
1000000 | 2000000 | 0,4 | 0,4 |
Exemplo 2: devolve dados desagrupados combinados com a mesma tabela
Este exemplo consulta um único SKU para devolver o
list price
. O SKU tem vários níveis de preços.
A consulta demonstra a utilização do operador
UNNEST
para
reduzir a matriz tiered_rates
e juntar os campos com a mesma tabela, o que resulta numa linha por nível de preços.
SQL padrão
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 da consulta:
Linha | sku_id | sku_description | service_id | service_description | pricing_unit_quantity | start_usage_amount | usd_amount | account_currency_amount |
---|---|---|---|---|---|---|---|---|
1 | 2DA5-55D3-E679 | Pedidos | 152E-C115-5142 | Cloud Run | 1000000,0 | 0.0 | 0.0 | 0.0 |
2 | 2DA5-55D3-E679 | Pedidos | 152E-C115-5142 | Cloud Run | 1000000,0 | 2000000,0 | 0,4 | 0,4 |
Use a taxonomia de produtos e a taxonomia geográfica para consultar SKUs
- A taxonomia de produtos é uma lista de categorias de produtos que se aplicam ao SKU, como Sem servidor, Cloud Run ou VMs a pedido.
- A taxonomia geográfica é o metadados geográficos que se aplicam a um SKU, que consistem em valores de tipo e região.
Obtenha a taxonomia de produtos de um SKU
Este exemplo demonstra uma consulta que devolve a lista de product_taxonomy
para um SKU especificado, em que o ID do SKU = 2DA5-55D3-E679
(Cloud Run - Requests).
SQL padrão
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 da consulta:
Linha | sku_id | sku_description | service_id | service_description | product_taxonomy |
---|---|---|---|---|---|
1 | 2DA5-55D3-E679 | Pedidos | 152E-C115-5142 | Cloud Run | GCP |
Sem servidor | |||||
Cloud Run | |||||
Outro |
Obtenha todas as SKUs para uma taxonomia de produtos específica
Este exemplo demonstra uma consulta que devolve todos os SKUs que correspondem a um product_taxonomy
especificado.
Nesta consulta, defina Serverless como o valor product taxonomy
.
SQL padrão
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 da consulta:
Linha | sku_id | sku_description | service_id | service_description | product_taxonomy |
---|---|---|---|---|---|
1 | 0160-BD7B-4C40 | Saída intrarregional de rede do Cloud Tasks | F3A6-D7B7-9BDA | Cloud Tasks | GCP |
Sem servidor | |||||
Cloud Tasks | |||||
Outro | |||||
2 | FE08-0A74-7AFD | Saída GOOGLE-API do Cloud Tasks | F3A6-D7B7-9BDA | Cloud Tasks | GCP |
Sem servidor | |||||
Cloud Tasks | |||||
Outro | |||||
3 | A81A-32A2-B46D | Armazenamento de filas de tarefas em Salt Lake City | F17B-412E-CB64 | App Engine | GCP |
Sem servidor | |||||
GAE | |||||
Outro | |||||
TaskQueue |
Obtenha todas as SKUs para uma taxonomia geográfica e uma taxonomia de produtos específicas
Este exemplo demonstra uma consulta que devolve todos os SKUs que correspondem a uma
geo_taxonomy
região especificada e a um
product_taxonomy
> tipo de produto especificado,
onde region
= us-east4 e product_taxonomy
= VMs On Demand.
SQL padrão
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 da consulta:
Linha | sku_id | sku_description | service_id | service_description | geo_taxonomy.type | geo_taxonomy.regions | product_taxonomy |
---|---|---|---|---|---|---|---|
1 | 9174-81EE-425B | Sole Tenancy Premium para RAM de instância de Sole Tenancy em execução na Virgínia | 6F81-5844-456A | Compute Engine | REGIONAL | us-east4 | GCP |
Computação | |||||||
GCE | |||||||
VMs a pedido | |||||||
Memória: por GB | |||||||
2 | C3B9-E891-85ED | Sole Tenancy Instance Ram running in Virginia | 6F81-5844-456A | Compute Engine | REGIONAL | us-east4 | GCP |
Computação | |||||||
GCE | |||||||
VMs a pedido | |||||||
Memória: por GB | |||||||
3 | 6E2A-DCD9-87ED | RAM de instância predefinida N1 em execução na Virgínia | 6F81-5844-456A | Compute Engine | REGIONAL | us-east4 | GCP |
Computação | |||||||
GCE | |||||||
VMs a pedido | |||||||
Memória: por GB |
Associe dados de preços a dados de custos de utilização detalhados
Esta consulta mostra como juntar exportações de dados de preços e custos para ver informações de preços detalhadas em conformidade com os seus custos. Pode configurar esta consulta para extrair dados exportados dos seus dados de custos de utilização detalhados (como Exports
) e juntar os dados de custos de utilização aos dados de preços exportados (como Prices
).
Use o nome da tabela de custos de utilização detalhados
para extrair os dados Exports
:
gcp_billing_export_resource_v1_<BILLING_ACCOUNT_ID>
Use o
nome da tabela de preços
para os dados 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 exemplo, o resultado da consulta anterior pode ser:
sku_description | custo | utilização | pricing_unit_description | account_currency_amount | account_currency_code |
---|---|---|---|---|---|
Capacidade de AP equilibrada | 0,001345 | { "usage": { "amount": "38654705664000.0", "unit": "byte-seconds", "amount_in_pricing_units": "0.01345895", "pricing_unit": "gibibyte month" } } | gibibyte-mês | 0,1 | USD |
Capacidade de AP equilibrada | 0,001344 | { "usage": { "amount": "38654705664000.0", "unit": "byte-seconds", "amount_in_pricing_units": "0.01345895", "pricing_unit": "gibibyte month" } } | gibibyte-mês | 0,1 | USD |
Capacidade de AP equilibrada | 0,001346 | { "usage": { "amount": "38654705664000.0", "unit": "byte-seconds", "amount_in_pricing_units": "0.01345895", "pricing_unit": "gibibyte month" } } | gibibyte-mês | 0,1 | USD |
Tópicos relacionados
Tópicos relacionados com os dados de faturação do Google Cloud exportados
- Configure a exportação de dados de faturação do Google Cloud para o BigQuery
- Compreender as tabelas de dados de faturação do Google Cloud no BigQuery
- Visualize os gastos ao longo do tempo com o Looker Studio
Relatórios de custos e preços disponíveis na Google Cloud consola
- Veja os seus relatórios do Cloud Billing e tendências de custos
- Veja e transfira os detalhes de custos da sua fatura ou extrato
- Veja e transfira os preços dos serviços na nuvem da Google
- Compreenda as suas poupanças com os relatórios de discriminação de custos
- Analise a eficácia dos seus descontos por utilização garantida
- Veja o histórico de custos e pagamentos