Estrutura da exportação de dados padrão

Nesta página, você verá informações de referência sobre o esquema de dados padrão de custo de uso do Cloud Billing que são exportados para cada tabela no BigQuery.

Esquema dos dados de custo de uso padrão

No conjunto de dados do BigQuery, os dados de custo padrão de uso do Google Cloud são carregados em uma tabela de dados denominada gcp_billing_export_v1_<BILLING_ACCOUNT_ID>.

A seguir, descrevemos o esquema dos dados de custo de uso padrão do Google Cloud que são exportados para o BigQuery. Ele contém informações padrão de uso de custo da conta do Cloud Billing, como ID da conta, data da fatura, serviços, SKUs, projetos, rótulos, locais, custo, uso, créditos, ajustes e moeda.

Ao usar os dados padrão de custo de uso no BigQuery, observe o seguinte:

  • Ao selecionar ou criar um conjunto de dados do BigQuery para os dados de custo de uso padrão, é possível selecionar qualquer local de conjunto de dados que seja compatível com o uso com os dados do Cloud Billing.
  • Ao ativar a exportação de dados padrão de custo de uso pela primeira vez no Cloud Billing, se você selecionar um conjunto de dados configurado para usar um local multirregional , os dados do Cloud Billing (UE ou EUA) ficarão disponíveis retroativamente a partir do início do mês anterior. Os dados são exportados em ordem cronológica. Para a adição retroativa inicial de dados exportados, pode levar até cinco dias para que os dados retroativos do Cloud Billing terminem de exportar antes que você comece a ver os dados de uso mais recentes.
  • Se você ativar a exportação de dados padrão de custo de uso e selecionar um conjunto de dados configurado para usar um local regional , seus dados do Cloud Billing ficarão disponíveis a partir da data em que você ativou a exportação.
  • Se você ativou, desativou e reativou a exportação de dados padrão de custo de uso, talvez os dados do Cloud Billing podem não estar disponíveis para o período em que a exportação de dados foi explicitamente desativada.
  • Saiba mais sobre a frequência dos carregamentos de dados nas tabelas do BigQuery.
  • Os dados padrão de custo de uso não incluem dados de custo no nível do recurso, como uma máquina virtual ou SSD que gera o uso do serviço. Se você quiser exportar dados de custo no nível do recurso para análise do BigQuery, considere ativar a exportação de dados detalhados de custo de uso. Os dados detalhados de custo de uso exportados incluem todos os campos e informações contidos nos dados de custo de uso padrão.
  • Veja outras limitações que podem afetar a exportação dos seus dados de faturamento para o BigQuery, como conjuntos de dados com chaves de criptografia gerenciadas pelo cliente (CMEK, na sigla em inglês) ativadas.
Campo Tipo Descrição
billing_account_id String

O ID da Conta de faturamento do Cloud ao qual o uso está associado.

Para revendedores: no caso de custos de uso gerados por uma subconta do Cloud Billing, trata-se do ID da subconta (não o ID da conta do Cloud Billing do revendedor pai).

invoice.month String

O ano e o mês (AAAAMM) da fatura que inclui os itens de linha de custo. Por exemplo: "201901" equivale a janeiro de 2019.

Use este campo para ver as cobranças totais na fatura. Consulte Exportação do Cloud Billing para exemplos de consulta do BigQuery.

cost_type String

O tipo de custo representado por este item de linha: erro regular, imposto, ajuste ou arredondamento.

service.id String O código do serviço que está associado ao uso.
service.description String O serviço do Google Cloud que relatou os dados do Faturamento do Cloud.
sku.id String O ID do recurso usado pelo serviço. Para ver a lista completa de SKUs, consulte SKUs do Google Cloud.
sku.description String Uma descrição do tipo de recurso usado pelo serviço. Por exemplo, um tipo de recurso do Cloud Storage é o armazenamento padrão dos EUA.
usage_start_time Carimbo de data/hora O horário de início da janela de uso por hora em que o custo determinado foi calculado. O uso e os custos de todos os serviços são exibidos com granularidade de hora em hora, o que significa que o uso do serviço de longa duração está distribuído em várias janelas horárias.

Para mais informações, consulte a documentação do BigQuery sobre os tipos de dados de carimbo de data/hora. Consulte também Diferenças entre os dados exportados e as faturas abaixo.

usage_end_time Carimbo de data/hora O horário de término da janela de uso por hora em que o custo determinado foi calculado. O uso e os custos de todos os serviços são exibidos com granularidade de hora em hora, o que significa que o uso do serviço de longa duração está distribuído em várias janelas horárias.

Para mais informações, consulte a documentação do BigQuery sobre os tipos de dados de carimbo de data/hora. Consulte também Diferenças entre os dados exportados e as faturas abaixo.

project Struct project contém campos que descrevem o projeto do Cloud Billing , como ID, number, name, ancestry_numbers e labels.
project.id String O ID do projeto do Google Cloud que gerou os dados do Cloud Billing.
project.number String Um identificador exclusivo, anônimo e gerado internamente para o projeto do Google Cloud que produziu os dados do Cloud Billing. Nos casos de suporte e em outras comunicações com o cliente, o Google se referirá ao seus projetos com esse número.
project.name String O nome do projeto do Google Cloud que gerou os dados do Cloud Billing.
project.ancestry_numbers String Os ancestrais na hierarquia de recursos do projeto identificado por project.id especificado (por exemplo, my-project-123).

Por exemplo: /ParentOrgNumber/ParentFolderNumber/. Saiba mais sobre a Hierarquia de recursos.

project.ancestors Struct

Esse campo descreve a estrutura e o valor da hierarquia de recursos de um item de linha de custo, incluindo projetos, pastas e organizações. Os ancestrais são ordenados do nó para a raiz (projeto, pasta e organização).

project.ancestors.resource_name String O nome do recurso relativo de cada ancestral no formato "resourceType/resourceNumber". O uso de project.ancestors.resource_name oferecerá uma visualização mais completa de project.ancestry_numbers.
project.ancestors.display_name String O nome que você criou para o recurso no console.
project.labels.key String Se houver rótulos, é a parte chave no par de chave-valor que compreende o rótulo no projeto do Google Cloud em que ocorreu o uso. Para mais informações sobre o uso de rótulos, consulte Como usar rótulos.
project.labels.value String Se houver rótulos, é a parte valor no par de chave-valor que compreende o rótulo no projeto do Google Cloud em que ocorreu o uso. Para mais informações sobre o uso de rótulos, consulte Como usar rótulos.
labels.key String Se houver rótulos, é a parte chave no par de chave-valor que compreende o rótulo no recurso do Google Cloud em que ocorreu o uso. Para mais informações sobre o uso de rótulos, consulte Como usar rótulos.
labels.value String Se houver rótulos, é a parte valor no par de chave-valor que compreende o rótulo no recurso do Google Cloud em que ocorreu o uso. Para mais informações sobre o uso de rótulos, consulte Como usar rótulos.
system_labels.key String Se houver rótulos do sistema, é a parte chave no par de chave-valor que compreende o rótulo gerado pelo sistema no recurso onde o uso ocorreu. Consulte também Rótulos do sistema disponíveis.
system_labels.value String Se houver rótulos do sistema, é a parte valor no par de chave-valor que compreende o rótulo gerado pelo sistema no recurso onde o uso ocorreu. Consulte também Rótulos do sistema disponíveis.
location.location String Local do uso no nível de um país, multirregião, região ou zona, ou global para recursos que não têm local específico. Para mais informações, consulte Geografia e regiões e Locais do Google Cloud.
location.country String Quando location.location é um país, região ou zona, este campo é o país de uso, por exemplo, US. Para mais informações, consulte Geografia e regiões e Locais do Google Cloud.
location.region String Quando location.location é uma região ou zona, este campo é a região de uso, por exemplo, us-central1. Para mais informações, consulte Geografia e regiões e Locais do Google Cloud.
location.zone String Quando location.location é uma zona, este campo é a zona de uso, por exemplo, us-central1-a Para mais informações, consulte Geografia e regiões e Locais do Google Cloud.
cost Ponto flutuante O custo do uso antes de qualquer crédito, para uma precisão de até seis casas decimais. Para conseguir o custo total, incluindo os créditos, é preciso incluir credits.amount no custo. Veja esta consulta de exemplo para mais informações.
currency String A moeda em que o custo é cobrado. Para mais informações, consulte Moeda local para faturamento e pagamentos.
currency_conversion_rate Ponto flutuante A taxa de câmbio de dólares americanos para a moeda local. Ou seja, cost/currency_conversion_rate é o custo em dólares americanos.
usage.amount Ponto flutuante A quantidade de usage.unit usada.
usage.unit String A unidade base em que o uso do recurso é medido. Por exemplo, a unidade base para armazenamento padrão é byte-segundos.
usage.amount_in_pricing_units Ponto flutuante A quantidade de usage.pricing_unit usada.
usage.pricing_unit String A unidade em que o uso de recursos é medido, de acordo com a API Cloud Billing Catalog.
credits Struct credits contém campos que descrevem a estrutura e o valor dos créditos associados às SKUs do Google Cloud e da Plataforma Google Maps.
credits.id String Se presente, indica que um crédito está associado à SKU do produto. Os valores de credits.id são um identificador alfanumérico exclusivo (por exemplo, 12-b34-c56-d78) ou uma descrição do tipo de crédito (como Desconto por uso contínuo: CPU).

Se o campo credits.id estiver vazio, a SKU do produto não está associada a um crédito.

credits.full_name String O nome do crédito associado à SKU do produto. Esta é uma descrição legível de um credits.id alfanumérico. Por exemplo, Crédito do teste sem custos financeiros ou Desconto por compromisso de uso com base em gastos.

Os valores credits.full_name estão presentes apenas para SKUs com um credits.id alfanumérico. Se o valor de credits.id for uma descrição do tipo de crédito (como Desconto por uso contínuo: CPU), o campo credits.full_name estará vazio.

credits.type String Este campo descreve a finalidade ou a origem do credits.id. Os tipos de crédito incluem:
  • COMMITTED_USAGE_DISCOUNT: Contratos por uso contínuo com base em recursos para o Compute Engine em retorno a preços com muito desconto para uso da VM.
  • COMMITTED_USAGE_DISCOUNT_DOLLAR_BASE: Contratos por uso contínuo com base em gastos adquiridos para serviços em troca do seu compromisso em gastar um valor mínimo.
  • DISCOUNT: o tipo de crédito com desconto é usado para créditos recebidos após um limite de gastos contratual ser atingido. Nos relatórios do Cloud Billing disponíveis no Console do Google Cloud, o tipo de crédito com desconto é listado como Descontos com base em gastos (contratuais).
  • FREE_TIER: alguns serviços oferecem uso gratuito de recursos até os limites especificados. Nesses serviços, os créditos são aplicados para implementar o uso de nível gratuito.
  • PROMOTION: o tipo de crédito promocional inclui Teste gratuito do Google Cloud e créditos de campanha de marketing ou outras concessões para usar o Google Cloud. Quando disponíveis, os créditos promocionais são considerados uma forma de pagamento e são aplicados automaticamente para reduzir a fatura total.
  • RESELLER_MARGIN: se você for um revendedor, o tipo de crédito reseller margin indica os descontos do programa para revendedores recebidos em cada item de linha qualificado.
  • SUBSCRIPTION_BENEFIT: créditos ganhos ao adquirir assinaturas de longo prazo para serviços em troca de descontos.
  • SUSTAINED_USAGE_DISCOUNT: o desconto por uso prolongado é um desconto automático que você ganha ao usar recursos específicos do Compute Engine em um período significativo do mês de faturamento.
credits.name String Uma descrição do crédito aplicado à conta de faturamento do Cloud.
credits.amount Ponto flutuante Valor do crédito aplicado ao uso.
adjustment_info Struct adjustment_info contém campos que descrevem a estrutura e o valor de um ajuste nos itens de linha de custo associados a uma conta do Cloud Billing.

Os valores adjustment_info só estarão presentes se o item de linha de custo for gerado para uma modificação do Cloud Billing. Pode ocorrer uma modificação por motivos de correção ou não. O tipo adjustment_info contém detalhes sobre o ajuste, se ele foi emitido para corrigir um erro ou por outros motivos.

adjustment_info.id String Se presente, indica que um ajuste está associado a um item de linha de custo. adjustment_info.id é o ID exclusivo de todos os ajustes associados causados por um problema.
adjustment_info.description String A descrição do ajuste e a causa.
adjustment_info.type String

O tipo de ajuste.

Os tipos incluem:

  • USAGE_CORRECTION: uma correção devido ao uso informado incorretamente.
  • PRICE_CORRECTION: uma correção devido a regras de precificação incorretas.
  • METADATA_CORRECTION: uma correção para corrigir metadados sem alterar o custo.
  • GOODWILL: um crédito emitido para o cliente pela reputação.
  • SALES_BASED_GOODWILL: um crédito emitido para o cliente pela loja, como parte de um contrato.
  • SLA_VIOLATION: um crédito emitido para o cliente devido a uma violação de objetivo de nível de serviço (SLO).
  • BALANCE_TRANSFER: um ajuste para transferir fundos de uma conta para pagamento para outra.
  • ACCOUNT_CLOSURE: um ajuste para levar uma conta encerrada a um saldo zero.
  • GENERAL_ADJUSTMENT: uma modificação geral da conta de faturamento.
adjustment_info.mode String

Como o ajuste foi emitido.

Os modos incluem:

  • PARTIAL_CORRECTION: a correção nega parcialmente o uso e o custo originais.
  • COMPLETE_NEGATION_WITH_REMONETIZATION: a correção rejeita totalmente o uso e o custo originais e emite itens de linha corrigidos com o uso e o custo atualizados.
  • COMPLETE_NEGATION: a correção nega totalmente o uso e o custo originais, e nenhum uso adicional é monetizado novamente.
  • MANUAL_ADJUSTMENT: o ajuste é alocado para custo e uso manualmente.
export_time Carimbo de data/hora Um tempo de processamento associado a um anexo de dados do Faturamento do Cloud. Ele sempre aumentará a cada nova exportação.
Consulte também Diferenças entre os dados exportados e as faturas abaixo.
tags Struct

Campos que descrevem a tag, como chave, valor e namespace.

tags.key String

É o nome curto ou de exibição da chave associada a essa tag específica.

tags.value String

Os recursos anexados a um tags.key. A qualquer momento, exatamente um valor pode ser anexado a um recurso de uma determinada chave.

tags.inherited Booleano

Indica se uma vinculação de tag foi herdada (tags herdadas = True) ou diretas/não herdadas (tags herdadas = False). É possível criar uma vinculação de tag para um recurso pai na hierarquia de recursos.

tags.namespace String

Representa a hierarquia de recursos que define valores e chaves de tags. O namespace pode ser combinado com nomes curtos de chave de tag e valor de tag para criar um nome globalmente exclusivo e totalmente qualificado para a chave de tag ou o valor de tag.

cost_at_list Ponto flutuante

Os preços de tabela associados a todos os itens de linha cobrados da sua conta do Cloud Billing.

transaction_type String

O tipo de transação do vendedor. O tipo de transação pode ser um dos seguintes:

  • GOOGLE = 1: serviços vendidos pelo Google Cloud.
  • THIRD_PARTY_RESELLER = 2: serviços de terceiros revendidos pelo Google Cloud.
  • THIRD_PARTY_AGENCY = 3: serviços de terceiros vendidos por um parceiro, com o Google Cloud atuando como o agente.
seller_name String

A razão social do vendedor.

Entender os dados de custo de uso padrão e detalhados

As seções a seguir descrevem os dados de custo de uso padrão e detalhados exportados para o BigQuery.

Sobre os rótulos

Os dados de custo de um rótulo específico mostram o uso a partir da data em que o rótulo foi aplicado a um recurso. Por exemplo, se você adicionar o rótulo environment:dev a uma VM do Compute Engine em 15 de janeiro de 2024, qualquer análise de environment:dev incluirá apenas o uso dessa VM desde 15 de janeiro.

Também é possível ver os dados dos rótulos em momentos diferentes para serviços diferentes, dependendo de quando cada serviço fornece esses dados.

Rótulos do sistema disponíveis

Os rótulos do sistema são pares de chave-valor para metadados importantes sobre o recurso que gerou o uso. Os seguintes rótulos de sistema são automaticamente incluídos no uso aplicável.

system_labels.key Exemplo de system_labels.value Descrição
compute.googleapis.com/machine_spec n1-standard-1, custom-2-2048 Configuração da máquina virtual. Consulte Tipos de máquina para mais informações.
compute.googleapis.com/cores para n1-standard-4 é 4. Para custom-2-2048 é 2 O número de vCPUs disponíveis para a máquina virtual.
compute.googleapis.com/memory para n1-standard-4 é 15360 (isto é, 15 GB * 1024 MB/GB), para custom-2-2048 é 2048 A quantidade de memória (em MB) disponível para a máquina virtual.
compute.googleapis.com/is_unused_reservation true; false Indica o uso que foi reservado por meio de Reservas de zona, mas não usado.

Diferenças entre os dados exportados e as faturas

Os produtos do Google Cloud informam dados de uso e custo para processos do Cloud Billing em intervalos variados. Como resultado, pode haver um atraso entre o uso dos serviços do Google Cloud e a disponibilização do uso e dos custos para visualização no Cloud Billing. Normalmente, os custos ficam disponíveis em um dia, mas às vezes podem demorar mais de 24 horas.

No final de um mês, é possível que o uso informado com atraso não esteja incluído na fatura desse mês e, em vez disso, passe para a fatura do mês seguinte.

Quando você consulta seus custos usando campos de carimbo de data/hora, os dados retornados podem identificar o uso informado posteriormente que não foi incluído originalmente na fatura gerada para o mesmo mês de uso. Consequentemente, os dados do Faturamento do Cloud retornados podem não ser mapeados diretamente para essa fatura.

Os campos do carimbo de data/hora incluem:

  • usage_start_time
  • usage_end_time
  • export_time

Para retornar dados do Faturamento do Cloud que mapeia diretamente para uma fatura, consulte invoice.month em vez dos campos de carimbo de data/hora.

Impostos

A partir de 1º de setembro de 2020, os dados de custo diário mostrarão a garantia de impostos de cada um dos seus projetos, em vez de um único item de linha. Se você tiver consultas ou visualizações que dependem de dados fiscais, talvez seja necessário atualizar as consultas para considerar essas alterações.

Por exemplo, para os custos registrados antes de 1º de setembro, os dados de custo de uso são semelhantes aos exemplos a seguir, que mostram uma responsabilidade total de impostos de US$ 10.

billing_account_id project.id cost_type cost
123456-ABCDEF-123456 projeto-exemplo Normal US$ 60
123456-ABCDEF-123456 projeto-teste Normal US$ 40
123456-ABCDEF-123456 [vazio] Imposto US$ 10

Nos custos registrados após 1º de setembro, os US$ 10 são divididos em US$ 6 para example-project e US$ 4 para test-project:

billing_account_id project.id cost_type cost
123456-ABCDEF-123456 projeto-exemplo Normal US$ 60
123456-ABCDEF-123456 projeto-teste Normal US$ 40
123456-ABCDEF-123456 projeto-exemplo Imposto US$ 6
123456-ABCDEF-123456 projeto-teste Imposto US$ 4

Erros e ajustes

No caso raro de os dados do Cloud Billing conterem um erro ou precisarem de um ajuste, eles serão anexados com dados corretivos. Esses ajustes se enquadram em uma destas duas categorias: correções ou modificações de faturamento.

Modificações de faturamento

As modificações de faturamento aparecem como itens de linha separados. Se você recebeu uma modificação de faturamento, um novo item de linha na exportação do Cloud Billing para o BigQuery vai mostrar a alteração. Os ajustes mostrados correspondem aos documentos da fatura, nota de crédito e nota de débito disponíveis na área Documentos da seção Faturamento no console do Google Cloud.

Para mais informações sobre modificações de faturamento e como elas são aplicadas, consulte Noções básicas sobre notas e ajustes.

Correções

As correções aparecem como novos dados que negam dados incorretos nas SKUs de origem. Em alguns casos, novos dados substituem a cobrança incorreta. Todas as colunas na exportação de dados de faturamento corresponderão aos dados originais, exceto as seguintes:

  • cost
  • credit
  • usage.amount
  • export_time

Por exemplo, imagine que você recebeu uma cobrança de R $10 pelo uso do SKU A em 1o de janeiro. Na sua fatura de janeiro (emitida no início de fevereiro), você verá uma cobrança de US $10 para SKU A. No entanto, em 2 de fevereiro, o Google Cloud emitiu uma correção para o SKU A, reduzindo o custo de uso para US $5. Você receberá dois itens de linha adicionais na sua fatura de fevereiro (emitida no início de março):

  • - US$ 10 pelo uso em 1o de janeiro (negando a cobrança original)
  • US$ 5 para uso em 1o de janeiro (informando a cobrança pretendida)

Esses novos itens têm uma coluna adjustment_info na exportação de dados de faturamento. A fatura original de janeiro, que mostra a cobrança a mais, não será ajustada. Para verificar as cobranças na exportação de dados de faturamento, confira seus custos por usage_start_time e agrupe por Day. Nessas visualizações, todas as correções ou cobranças pelo uso com monetização atrasada são acumuladas, e você não precisa se preocupar com dados temporariamente incorretos.

Se você quiser informações mais detalhadas sobre as correções, veja todas as cobranças em um mês de fatura e procure cobranças em que a data de uso ocorreu. antes do mês da fatura. Essas cobranças são resultado de correções ou de uso com monetização tardia.

O exemplo de código a seguir mostra como criar uma consulta básica que retorna o custo total das correções ou do uso monetizado com atraso:

SELECT
  SUM(cost)
    + SUM(IFNULL((SELECT SUM(c.amount)
      FROM   UNNEST(credits) c), 0))
    AS total
FROM `project.dataset.gcp_billing_export_v1_XXXXXX-XXXXXX-XXXXXX`
WHERE
  invoice.month = '202311' AND
  DATE(TIMESTAMP_TRUNC(usage_start_time, Day, 'US/Pacific')) < '2023-11-01';

Para conferir um exemplo de consulta que retorna um detalhamento de custos por serviço para cobranças de fatura em que a data de uso ocorreu antes do mês da fatura, consulte Consultar detalhes de custo para conferir correções ou uso monetizado com atraso por serviço em um mês específico da fatura em "Exemplos de consultas de exportação de dados do Cloud Billing".

Sobre créditos promocionais em contratos de preços personalizados

Se você tiver um contrato de preços personalizados, poderá receber créditos promocionais para usar no Google Cloud como parte do contrato. Por exemplo, você pode receber US $1.000 para usar nos recursos do Compute Engine. Os créditos promocionais geralmente são considerados uma forma de pagamento. Quando estiverem disponíveis, os créditos promocionais serão gastos automaticamente a fim de reduzir sua fatura total.

Os termos do seu contrato especificam se os créditos promocionais se aplicam aos custos calculados com o preço de tabela de uma SKU ou o preço líquido (após os descontos).

Se os créditos promocionais se aplicarem a custos calculados no preço de tabela, no relatório da tabela de custos, há um serviço chamado Invoice, com uma SKU chamada Contract billing adjustment. Essa SKU ajusta seus créditos para que sejam aplicadas aos custos no preço de tabela. Para ver o uso a que o ajuste se destina, consulte as colunas system.labels. A chave em system.labels.key é cloud-invoice.googleapis.com/sku_id, e o valor em system.labels.value contém o ID da SKU a que o crédito e o ajuste se aplicam.

Sobre as tags

Tags são recursos na forma de pares de chave-valor que podem ser anexados a recursos diretamente ou por meio de herança. Use as tags para executar estornos, auditorias e outras análises de alocação de custos. Use as tags e a aplicação condicional de políticas para ter um controle detalhado sobre toda a hierarquia de recursos.

As tags têm um modelo de permissões robusto e podem oferecer suporte a herança, gerenciamento centralizado, padronização de nomenclatura e integração do mecanismo de políticas, enquanto os rótulos são uma ferramenta separada que permite anotar recursos. ,

Os dados de tags aparecem nas exportações do BigQuery para recursos, projetos, pastas e organizações.

Tags disponíveis

As exportações de Custos padrão e Custos detalhados para recursos, projetos, pastas e organizações incluem estes campos para os dados de tags: chaves de tags, valor de tags, tags herdadas e namespace de tags.

As tags no nível do recurso na exportação de dados do Cloud Billing estão disponíveis para os seguintes recursos:

  • Instâncias do Compute Engine
  • Buckets do Cloud Storage
  • Instâncias do Spanner
  • Serviços e jobs do Cloud Run
  • Repositórios do Artifact Registry
  • Instâncias do Memorystore para Redis

Limitações das tags

  • As tags podem levar até uma hora para serem propagadas para as exportações do BigQuery. Se uma tag tiver sido adicionada ou removida em uma hora, ou se um recurso existir por menos de uma hora, talvez ela não apareça na exportação.

Exemplos de consulta de custo de uso padrão

Nesta seção, você verá exemplos sobre como consultar os dados de custo de uso padrão do Cloud Billing exportados para o BigQuery.

Como especificar o nome da tabela a ser usado nas consultas

Nestes exemplos, para consultar os dados do Cloud Billing no BigQuery, é preciso especificar o nome da tabela na cláusula FROM. O nome da tabela é determinado usando três valores: project.dataset.BQ_table_name.

Valores comuns usados nas consultas de custo padrão de exemplo

Os exemplos de consulta nesta seção usam o seguinte valor para Nome da tabela: project.dataset.gcp_billing_export_v1_XXXXXX_XXXXXX_XXXXXX

Esses exemplos de consulta também funcionam com os dados detalhados de custo de uso exportados para o BigQuery, embora não sejam gravados para recuperar qualquer informação no nível do recurso fornecida com isso opção detalhada de exportação de custo de uso.

Retornar os custos totais em uma fatura

Nas consultas a seguir, demonstramos duas maneiras de visualizar valores de custo e crédito usando dados de faturamento exportados.

  • O campo total soma diretamente o custo de ponto flutuante e os valores de crédito, o que pode acarretar erros de arredondamento de ponto flutuante.
  • O campo total_exact converte custos e valores de crédito em micros antes de somar, depois reconverte para dólares após a soma, o que evita o erro de arredondamento de ponto flutuante.

Exemplo 1: soma de todos os custos, por fatura

Essa consulta mostra o total da fatura de cada mês, como uma soma de custos regulares, 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 * 1000000 AS int64))
    + SUM(IFNULL((SELECT SUM(CAST(c.amount * 1000000 as int64))
                  FROM UNNEST(credits) c), 0))) / 1000000
    AS total_exact
FROM `project.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 US$ 1005,004832999999984 US$ 1005,00
2 201902 US$ 992,3101739999999717 US$ 992,31
3 201903 US$ 1220,761089999999642 US$ 1220,76

Exemplo 2: retornar detalhes por tipo de custo, por mês da fatura

Nesta consulta, mostramos os totais de cada cost_type para cada mês. Os tipos de custos incluem custos regulares, tributos, 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 * 1000000 AS int64))
    + SUM(IFNULL((SELECT SUM(CAST(c.amount * 1000000 as int64))
                  FROM UNNEST(credits) c), 0))) / 1000000
    AS total_exact
FROM `project.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 US$ 1000,501209987994782 US$ 1000,50
2 201901 rounding_error –US$ 0,500489920049387 –US$ 0,50
3 201901 Tributo US$ 10,000329958477891 US$ 10,00
4 201901 ajuste –US$ 5,002572999387045 –US$ 5,00

Exemplos de consultas com rótulos

Os exemplos a seguir ilustram outras maneiras de consultar dados com rótulos.

Para os exemplos nesta seção, pressuponha o seguinte:

  • Você tem 2 aplicativos (grapefruit-squeezer e chocolate-masher).
  • Para cada aplicativo, você tem 2 ambientes: desenvolvimento (dev) e produção (prod).
  • O ambiente de desenvolvimento tem uma pequena instância por aplicativo.
  • O ambiente de produção tem uma pequena instância nas Américas e uma pequena instância na Ásia.
  • Cada instância é rotulada com o aplicativo e o ambiente.
  • Você tem 1 instância sem rótulos utilizada para testes.

Sua conta total é de US$ 24, detalhada da seguinte maneira:

Instância Rótulos Custo total
Pequena instância com uma vCPU em execução nas Américas Nenhum US$ 4
Pequena instância com uma vCPU em execução nas Américas app: chocolate-masher
ambiente: dev
US$ 2
Pequena instância com uma vCPU em execução nas Américas app: grapefruit-squeezer
ambiente: dev
US$ 3
Pequena instância com uma vCPU em execução nas Américas app: chocolate-masher
ambiente: prod
US$ 3,25
Pequena instância com uma vCPU em execução na Ásia app: chocolate-masher
ambiente: prod
US$ 3,75
Pequena instância com uma vCPU em execução nas Américas app: grapefruit-squeezer
ambiente: prod
US$ 3,50
Pequena instância com uma vCPU em execução na Ásia app: grapefruit-squeezer
ambiente: prod
US$ 4,50

Consultar cada linha sem agrupar

A visão mais granular desses custos seria consultar cada linha sem agrupar. Suponha que todos os campos, exceto os rótulos e a descrição do SKU, sejam os mesmos (projeto, serviço etc.).

SQL padrão

SELECT
  sku.description,
  TO_JSON_STRING(labels) as labels,
 cost as cost
FROM `project.dataset.gcp_billing_export_v1_XXXXXX_XXXXXX_XXXXXX`;

SQL legado

TO_JSON_STRING not supported.
Linha sku.description rótulos custo
1 Pequena instância com uma vCPU em execução nas Américas [] US$ 4
2 Pequena instância com uma vCPU em execução nas Américas [{"key":"app","value":"chocolate-masher"},{"key":"environment","value":"dev"}] US$ 2
3 Pequena instância com uma vCPU em execução nas Américas [{"key":"app","value":"grapefruit-squeezer"},{"key":"environment","value":"dev"}] US$ 3
4 Pequena instância com uma vCPU em execução nas Américas [{"key":"app","value":"chocolate-masher"},{"key":"environment","value":"prod"}] US$ 3,25
5 Pequena instância com uma vCPU em execução na Ásia [{"key":"app","value":"chocolate-masher"},{"key":"environment","value":"prod"}] US$ 3,75
6 Pequena instância com uma vCPU em execução nas Américas [{"key":"app","value":"grapefruit-squeezer"},{"key":"environment","value":"prod"}] US$ 3,50
7 Pequena instância com uma vCPU em execução na Ásia [{"key":"app","value":"grapefruit-squeezer"},{"key":"environment","value":"prod"}] US$ 4,50
TOTAL US$ 24

Agrupar por mapa de rótulos como uma string JSON

Esta é uma maneira rápida e fácil de detalhar os custos por combinação de rótulos.

SQL padrão

SELECT
  TO_JSON_STRING(labels) as labels,
  sum(cost) as cost
FROM `project.dataset.gcp_billing_export_v1_XXXXXX_XXXXXX_XXXXXX`
GROUP BY labels;

SQL legado

TO_JSON_STRING not supported.
Linha rótulos custo
1 [] US$ 4
2 [{"key":"app","value":"chocolate-masher"},{"key":"environment","value":"dev"}] US$ 2
3 [{"key":"app","value":"grapefruit-squeezer"},{"key":"environment","value":"dev"}] US$ 3
4 [{"key":"app","value":"chocolate-masher"},{"key":"environment","value":"prod"}] US$ 7
5 [{"key":"app","value":"grapefruit-squeezer"},{"key":"environment","value":"prod"}] US$ 8
TOTAL US$ 24

Agrupar pelo valor do rótulo de uma chave específica

Detalhar custos para valores de uma chave de rótulo específica é um caso de uso comum. Usando um LEFT JOIN e colocando o filtro de chave na condição JOIN (em vez de WHERE), você inclui um custo que não contém essa chave e, assim, recebe uma visão completa dos custos.

SQL padrão

SELECT
  labels.value as environment,
  SUM(cost) as cost
FROM `project.dataset.gcp_billing_export_v1_XXXXXX_XXXXXX_XXXXXX`
LEFT JOIN UNNEST(labels) as labels
  ON labels.key = "environment"
GROUP BY environment;

SQL legado

SELECT
  labels.value as environment,
  SUM(cost) as cost
FROM [project: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 US$ 15
2 dev US$ 5
3 null US$ 4
TOTAL US$ 24

Agrupar por pares de chave/valor

Tenha cuidado ao interpretar ou exportar esses resultados. Uma linha individual neste caso mostra uma soma válida sem contagem dupla, mas não deve ser combinada com outras linhas (exceto, possivelmente, se a chave for a mesma ou se você estiver certo 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.dataset.gcp_billing_export_v1_XXXXXX_XXXXXX_XXXXXX`
LEFT JOIN UNNEST(labels) as labels
GROUP BY key, value;

SQL legado

SELECT
  labels.key as key,
  labels.value as value,
  SUM(cost)
FROM [project:dataset.gcp_billing_export_v1_XXXXXX_XXXXXX_XXXXXX]
GROUP BY key, value;
Linha chave valor custo
1 null null US$ 4
2 app chocolate-masher US$ 9
3 app grapefruit-squeezer US$ 11
4 ambiente dev US$ 5
5 ambiente prod US$ 15
TOTAL US$ 44

Observe que a soma total é maior que sua fatura.

Consultas de desconto por uso contínuo

As consultas a seguir demonstram maneiras de visualizar as taxas e os créditos associados aos descontos por uso contínuo nos dados de faturamento exportados. Para entender como as taxas e os créditos de compromisso são atribuídos à sua conta e aos projetos do Cloud Billing, consulte Atribuição de descontos por uso contínuo.

Como visualizar taxas de compromisso

Para visualizar as taxas de compromisso dos descontos por uso contínuo na exportação de dados de faturamento, use a consulta de amostra a seguir.

SQL padrão

SELECT
    invoice.month AS invoice_month,
    SUM(cost) as commitment_fees
FROM `project.dataset.gcp_billing_export_v1_XXXXXX_XXXXXX_XXXXXX`
WHERE LOWER(sku.description) LIKE "commitment%"
GROUP BY 1

Como visualizar créditos de compromisso

Para visualizar créditos de desconto por uso contínuo na exportação dos dados de faturamento, use a seguinte consulta de amostra.

SQL padrão

SELECT
    invoice.month AS invoice_month,
    SUM(credits.amount) as CUD_credits
FROM `project.dataset.gcp_billing_export_v1_XXXXXX_XXXXXX_XXXXXX`
LEFT JOIN UNNEST(credits) AS credits
WHERE LOWER(credits.name) LIKE "committed use discount%"
GROUP BY 1

Usar filtros de hierarquia de recursos para analisar a ancestralidade

Os filtros de hierarquia de recursos podem ser usados para agregar custos por elementos de hierarquia, como projetos, pastas e organizações. Estes exemplos de consulta mostram métodos para somar os custos filtrados por elementos da hierarquia de recursos e exibir as ancestralidades do projeto.

Exemplo 1: filtrar por nome de recurso

Este exemplo demonstra consultas que agrupam custos por ancestralidade do projeto e filtram apenas os custos gerados em um 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.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.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: filtrar por nome de exibição

Este exemplo demonstra consultas que agrupam custos por ancestralidade do projeto e filtram apenas os custos gerados em um elemento de hierarquia especificado, identificado pelo nome de exibição fornecido pelo usuário.

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.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.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 tags

Os exemplos a seguir ilustram formas de consultar seus dados com tags.

Calcular custos por mês da fatura com tags

A consulta a seguir demonstra como usar os custos de devolução por mês da fatura da tag 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

Ver os custos dos recursos sem tags

Essa consulta mostra o total da fatura para recursos sem tag, 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

Outros exemplos de consulta

Consultar custos e créditos por projeto de um mês específico da fatura

Se você fornecer o mês de fatura específico de junho de 2020 (no formato AAAAMM), essa consulta retornará uma visualização dos custos e créditos agrupados por projeto, além de mostrar rótulos 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.dataset.gcp_billing_export_v1_XXXXXX_XXXXXX_XXXXXX`
WHERE invoice.month = "202006"
GROUP BY 1, 2
ORDER BY 1;

SQL legado

TO_JSON_STRING not supported.
Linha 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 - Storage [{"key":"ctg_p_env","value":"prod"},{"key":"ctg_team","value":"data"}] 7.645793 -0,003761

Relatórios de custos e preços disponíveis no Console do Google Cloud