Monitorar o uso de tokens de insights de dados

Neste documento, explicamos como monitorar o consumo de tokens para as verificações de insights de dados do Knowledge Catalog (antigo Dataplex Universal Catalog) usando o Cloud Logging e o Cloud Monitoring. Ao monitorar o uso de tokens por verificação e por job, você pode entender as tendências de uso do modelo e estimar os custos faturados do projeto.

Como funciona o registro de uso de tokens

Quando um job de verificação de insights de dados (jsonPayload.type="DATA_DOCUMENTATION") é concluído com um estado SUCCEEDED, o Knowledge Catalog grava uma entrada de registro no registro dataplex.googleapis.com/data_scan. Essa entrada de registro contém um bloco billableTokenUsage em jsonPayload.dataDocumentation que registra o detalhamento de tokens do job. Outras entradas de registro do job (como eventos CREATED, STARTED, FAILED ou CANCELLED) não incluem um bloco billableTokenUsage.

No bloco billableTokenUsage, é possível acompanhar três categorias principais de tokens para estimar o faturamento:

Métrica Descrição Fórmula (usando campos billableTokenUsage)
Tokens de entrada não armazenados em cache Tokens de entrada que não foram disponibilizados pelo cache de contexto, incluindo tokens de comando de uso de ferramentas. max(promptTokenCount - cachedContentTokenCount, 0) + toolUsePromptTokenCount
Tokens de entrada em cache Tokens de entrada disponibilizados pelo cache de contexto. Os tokens em cache são rastreados separadamente porque não são cobrados de acordo com a taxa de entrada padrão sem cache. cachedContentTokenCount
Tokens de saída Tokens de resposta gerados mais tokens de raciocínio (pensamento). Os tokens de raciocínio são faturados como tokens de saída. candidatesTokenCount + thoughtsTokenCount

Para detalhes sobre os preços dos tokens, consulte Preços do agente do Data Cloud.

Campos de token na entrada de registro

Cada entrada de registro do dataplex.googleapis.com/data_scan inclui identificadores padrão de recursos e jobs, como resource.labels.datascan_id, resource.labels.location, jsonPayload.jobId e jsonPayload.state. Para verificações de insights de dados bem-sucedidas, o objeto jsonPayload.dataDocumentation.billableTokenUsage contém os seguintes campos:

Campo Descrição
promptTokenCount Total de tokens de comando enviados ao modelo, incluindo tokens em cache.
cachedContentTokenCount Parte dos tokens de comando disponibilizados pelo cache de contexto.
toolUsePromptTokenCount Tokens de comando adicionados por chamadas de ferramenta (como contexto de esquema, perfil ou histórico de consultas).
candidatesTokenCount Tokens de resposta gerados, exceto os tokens de raciocínio.
thoughtsTokenCount Tokens de raciocínio (pensamento) gerados pelo modelo.

O exemplo a seguir mostra uma entrada de registro dataplex.googleapis.com/data_scan para um job de verificação de insights de dados bem-sucedido:

{
  "resource": {
    "type": "dataplex.googleapis.com/DataScan",
    "labels": {
      "datascan_id": "my-insights-scan",
      "location": "us-central1",
      "resource_container": "projects/1234567890"
    }
  },
  "jsonPayload": {
    "type": "DATA_DOCUMENTATION",
    "jobId": "8f2b3c4d-1234-5678-9abc-def012345678",
    "state": "SUCCEEDED",
    "dataDocumentation": {
      "billableTokenUsage": {
        "promptTokenCount": "20412",
        "candidatesTokenCount": "7053"
      }
    }
  }
}

Neste exemplo, o job não usou cache de contexto, tokens de raciocínio ou chamadas de ferramenta. Como resultado, os tokens de entrada não armazenados em cache são iguais a 20,412, os tokens de entrada armazenados em cache são iguais a 0 e os tokens de saída são iguais a 7,053.

Antes de começar

Antes de consultar os registros de token de insights de dados ou criar um painel de monitoramento, conclua os pré-requisitos a seguir.

Funções exigidas

Para receber as permissões necessárias para monitorar o uso de tokens de insights de dados, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto:

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.

Ativar APIs

Ative as APIs Dataplex, Geração de registros e API Monitoring, se ainda não estiverem ativadas.

Funções necessárias para ativar APIs

Para ativar APIs, você precisa da permissão serviceusage.services.enable. Se você criou o projeto, provavelmente já tem essa permissão pelo papel de proprietário (roles/owner). Caso contrário, é possível conseguir essa permissão pelo papel de administrador do Service Usage (roles/serviceusage.serviceUsageAdmin). Saiba como conceder papéis.

Ativar as APIs

Verificar a configuração de roteamento de registros

As verificações de insights de dados gravam registros com o nome dataplex.googleapis.com/data_scan. As configurações do painel neste documento leem esses registros do bucket de registros _Default do projeto. Verifique se o roteamento de registros do projeto atende às seguintes condições:

  • O coletor _Default está ativado e encaminha registros para o bucket de registros _Default.
  • O coletor _Default não tem um filtro de exclusão que descarta registros dataplex.googleapis.com/data_scan ou DATA_DOCUMENTATION.

Console

  1. No console do Google Cloud , acesse a página Logging > Roteador de registros.

    Acessar o roteador de registros

  2. Localize o coletor _Default e verifique se o status dele é Ativado e se o destino é o bucket _Default.

  3. Clique no menu do coletor () e selecione Ver detalhes do coletor. Verifique se nenhum filtro de exclusão corresponde a dataplex.googleapis.com/data_scan ou DATA_DOCUMENTATION.

gcloud

Descreva o coletor _Default para inspecionar o status, o destino e os filtros de exclusão:

gcloud logging sinks describe _Default --project=PROJECT_ID

Substitua PROJECT_ID pelo ID do projeto do Google Cloud.

Verifique se disabled não está definido como true, se destination termina com /buckets/_Default e se nenhuma entrada em exclusions corresponde a data_scan.

Ativar a Análise de Observabilidade no bucket _Default

Para executar consultas SQL nos registros de verificação de insights de dados e alimentar o painel personalizado da Análise de Observabilidade, faça upgrade do bucket de registros _Default do seu projeto para usar a Análise de Observabilidade.

Antes de ativar a Análise de Observabilidade no bucket de registros _Default, considere o seguinte:

  • O upgrade de um bucket para a Análise de Observabilidade não pode ser desfeito e não gera cobranças extras.
  • Não é necessário criar um conjunto de dados vinculado do BigQuery.
  • As consultas SQL da Análise de Observabilidade só retornam registros que chegam após a conclusão do upgrade. Os registros mais antigos continuam disponíveis na Análise de registros, mas não aparecem nos resultados da consulta SQL. Depois de fazer upgrade do bucket, execute pelo menos uma verificação de insights de dados para que o painel tenha dados para exibir.

Console

  1. No console do Google Cloud , acesse a página Logging > Armazenamento de registros.

    Acessar o armazenamento de registros

  2. Localize a linha do bucket _Default e verifique a coluna Análise de observabilidade disponível:

    • Se a coluna mostrar Abrir, a Análise de Observabilidade já está ativada.
    • Se a coluna mostrar Fazer upgrade, clique em Fazer upgrade e confirme o upgrade.
  3. Aguarde alguns minutos até que o status da coluna mude para Aberto.

gcloud

  1. Faça upgrade do bucket de registros _Default para ativar a Análise de Observabilidade:

    gcloud logging buckets update _Default \
        --location=global --enable-analytics --project=PROJECT_ID
    

    Substitua PROJECT_ID pelo ID do projeto Google Cloud .

  2. Após alguns minutos, verifique se o upgrade foi concluído:

    gcloud logging buckets describe _Default \
        --location=global --project=PROJECT_ID
    

    Confirme se a saída inclui analyticsEnabled: true.

Ver o uso de tokens por job na Análise de Registros

Para inspecionar o consumo de tokens de jobs individuais de verificação de insights de dados, use a Análise de registros ou a Google Cloud CLI. Para agregações por hora ou diárias no projeto, crie um painel usando a Análise de Observabilidade.

Console

  1. No console do Google Cloud , acesse a página Logging > Análise de registros.

    Acessar a Análise de registros

  2. Se o editor de consultas não estiver visível, ative a opção Mostrar consulta.

  3. Digite esta consulta no editor de consultas:

    log_id("dataplex.googleapis.com/data_scan")
    jsonPayload.type="DATA_DOCUMENTATION"
    jsonPayload.dataDocumentation.billableTokenUsage.promptTokenCount:*
    

    Opcional: para filtrar uma verificação ou execução de job específica, anexe uma das seguintes linhas à consulta:

    resource.labels.datascan_id="DATA_SCAN_ID"
    jsonPayload.jobId="JOB_ID"
    

    Substitua:

    • DATA_SCAN_ID: o ID da verificação de insights de dados.
    • JOB_ID: o ID de uma execução de job de verificação específica.
  4. Selecione um período (por exemplo, Últimas 24 horas) e clique em Executar consulta.

  5. Expanda uma entrada de registro e abra jsonPayload > dataDocumentation > billableTokenUsage para inspecionar as contagens de tokens desse job.

gcloud

Leia as entradas de registro de verificação de insights de dados recentes e formate os campos de token como uma tabela:

gcloud logging read \
    'log_id("dataplex.googleapis.com/data_scan") AND jsonPayload.type="DATA_DOCUMENTATION" AND jsonPayload.dataDocumentation.billableTokenUsage.promptTokenCount:*' \
    --project=PROJECT_ID --freshness=1d --limit=20 \
    --format='table(timestamp, resource.labels.datascan_id:label=SCAN,
jsonPayload.jobId:label=JOB,
jsonPayload.dataDocumentation.billableTokenUsage.promptTokenCount:label=PROMPT,
jsonPayload.dataDocumentation.billableTokenUsage.cachedContentTokenCount:label=CACHED,
jsonPayload.dataDocumentation.billableTokenUsage.toolUsePromptTokenCount:label=TOOL_USE,
jsonPayload.dataDocumentation.billableTokenUsage.candidatesTokenCount:label=CANDIDATES,
jsonPayload.dataDocumentation.billableTokenUsage.thoughtsTokenCount:label=THOUGHTS)'

Substitua PROJECT_ID pelo ID do projeto do Google Cloud.

Uma coluna vazia na tabela de saída indica tokens 0 para esse campo. Para transformar esses campos em métricas, use as fórmulas em Como funciona o registro de uso de tokens.

Consultar o uso de tokens usando a Análise de Observabilidade

Também é possível executar ou personalizar as consultas SQL do widget diretamente na página Análise de dados de registros no console doGoogle Cloud .

Os gráficos diários e por hora compartilham a mesma consulta de gráfico, que retorna uma linha por job de verificação. Cada widget de gráfico agrupa e soma as linhas por dia (timeBinSize: 86400s) ou por hora (timeBinSize: 3600s). Se você editar uma consulta de gráfico e colá-la novamente em um widget de painel, preserve os aliases de coluna timestamp, total_non_cached_input_tokens, total_cached_input_tokens e total_output_tokens.

Para filtrar uma consulta para uma única verificação, anexe a seguinte condição à cláusula WHERE:

AND JSON_VALUE(resource.labels, '$.datascan_id') = 'DATA_SCAN_ID'

Substitua DATA_SCAN_ID pelo ID da verificação de insights de dados.

Exemplo de consulta de gráfico (gráficos diários e por hora)

SELECT
  timestamp,
  GREATEST(
    IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.promptTokenCount') AS INT64), 0)
    - IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.cachedContentTokenCount') AS INT64), 0),
    0)
  + IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.toolUsePromptTokenCount') AS INT64), 0)
    AS total_non_cached_input_tokens,
  IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.cachedContentTokenCount') AS INT64), 0)
    AS total_cached_input_tokens,
  IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.candidatesTokenCount') AS INT64), 0)
  + IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.thoughtsTokenCount') AS INT64), 0)
    AS total_output_tokens
FROM `PROJECT_ID.global._Default._Default`
WHERE
  log_id = 'dataplex.googleapis.com/data_scan'
  AND JSON_VALUE(json_payload, '$.type') = 'DATA_DOCUMENTATION'
  AND JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.promptTokenCount') IS NOT NULL

Substitua PROJECT_ID pelo ID do projeto do Google Cloud.

Exemplo de consulta por job de verificação

SELECT
  timestamp,
  JSON_VALUE(resource.labels, '$.datascan_id') AS data_scan_id,
  JSON_VALUE(resource.labels, '$.location') AS location,
  JSON_VALUE(json_payload, '$.jobId') AS job_id,
  JSON_VALUE(json_payload, '$.state') AS state,
  GREATEST(
    IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.promptTokenCount') AS INT64), 0)
    - IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.cachedContentTokenCount') AS INT64), 0),
    0)
  + IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.toolUsePromptTokenCount') AS INT64), 0)
    AS non_cached_input_tokens,
  IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.cachedContentTokenCount') AS INT64), 0)
    AS cached_input_tokens,
  IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.candidatesTokenCount') AS INT64), 0)
  + IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.thoughtsTokenCount') AS INT64), 0)
    AS output_tokens
FROM `PROJECT_ID.global._Default._Default`
WHERE
  log_id = 'dataplex.googleapis.com/data_scan'
  AND JSON_VALUE(json_payload, '$.type') = 'DATA_DOCUMENTATION'
  AND JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.promptTokenCount') IS NOT NULL
ORDER BY timestamp DESC
LIMIT 500

Substitua PROJECT_ID pelo ID do projeto do Google Cloud.

Criar um painel usando a Análise de Observabilidade

Para visualizar e acompanhar o consumo de tokens do modelo ao longo do tempo, crie um painel personalizado do Monitoring usando a Análise de Observabilidade.

Essa abordagem executa consultas SQL diretamente nos registros de verificação de insights de dados no bucket de registros _Default. Ele oferece vários benefícios:

  • Precisão:as consultas calculam as contagens exatas de tokens diretamente dos payloads JSON de entrada de registro, em vez de estimativas de métricas agregadas.
  • Histórico de jobs granular:além dos gráficos agregados, é possível inspecionar jobs de verificação individuais em uma visualização tabular.
  • Sem custo extra:o upgrade do bucket de registros _Default para a Análise de Observabilidade não gera cobranças adicionais.

Essa opção cria um painel do Monitoring com três widgets que executam consultas SQL nos seus registros:

  • Uso diário de tokens (gráfico de barras empilhadas)
  • Uso de tokens por hora (gráfico de linhas)
  • Uso de tokens por job de verificação (tabela mostrando os últimos 500 jobs)

A configuração JSON do painel a seguir usa a variável incorporada @__project_id (@__project_id.global._Default._Default), que consulta automaticamente o projeto em que você abre o painel. Não é necessário editar nenhum marcador de projeto no JSON antes de importá-lo.

Console

  1. No console do Google Cloud , acesse a página Monitoring > Painéis.

    Ir para "Painéis"

  2. Clique em Criar painel.

  3. Na barra de ferramentas, clique em Configurações de , selecione JSON e, em seguida, selecione Editor JSON.

  4. Substitua o conteúdo atual do editor pela definição JSON do painel fornecida na próxima seção.

  5. Clique em Aplicar alterações. Com o salvamento automático ativado, o Monitoring salva o painel como Data Insights - Token Usage.

  6. Na primeira vez que você abrir o painel, cada widget vai pedir para você confirmar a execução da consulta SQL no mecanismo do BigQuery para seu projeto. Verifique se o prompt lista seu projeto e clique em Continuar execução em cada widget.

  7. Selecione um período na barra de ferramentas do painel (por exemplo, Últimos 7 dias).

gcloud

  1. Salve a definição JSON do painel em um arquivo local chamado dashboard.json.
  2. Crie o painel no Monitoring:

    gcloud monitoring dashboards create \
        --project=PROJECT_ID \
        --config-from-file=dashboard.json
    

    Substitua PROJECT_ID pelo ID do projeto doGoogle Cloud .

  3. Abra a página Painéis no console do Google Cloud , selecione Análise de insights: uso de tokens e clique em Continuar execução em cada widget para autorizar a execução da consulta SQL.

Definição JSON do painel

Para criar o painel, abra a seção a seguir e copie a definição JSON:

Definição de JSON

{
  "displayName": "Data Insights - Token Usage",
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "xPos": 0,
        "yPos": 0,
        "width": 24,
        "height": 16,
        "widget": {
          "title": "Daily token usage",
          "xyChart": {
            "chartOptions": {
              "mode": "COLOR",
              "displayHorizontal": false
            },
            "dataSets": [
              {
                "plotType": "STACKED_BAR",
                "targetAxis": "Y1",
                "breakdowns": [],
                "dimensions": [
                  {
                    "column": "timestamp",
                    "columnType": "TIMESTAMP",
                    "sortColumn": "timestamp",
                    "sortOrder": "SORT_ORDER_ASCENDING",
                    "timeBinSize": "86400s"
                  }
                ],
                "measures": [
                  {
                    "column": "total_non_cached_input_tokens",
                    "aggregationFunction": {
                      "type": "sum",
                      "parameters": []
                    }
                  },
                  {
                    "column": "total_cached_input_tokens",
                    "aggregationFunction": {
                      "type": "sum",
                      "parameters": []
                    }
                  },
                  {
                    "column": "total_output_tokens",
                    "aggregationFunction": {
                      "type": "sum",
                      "parameters": []
                    }
                  }
                ],
                "timeSeriesQuery": {
                  "opsAnalyticsQuery": {
                    "sql": "SELECT\n  timestamp,\n  GREATEST(\n    IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.promptTokenCount') AS INT64), 0)\n    - IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.cachedContentTokenCount') AS INT64), 0),\n    0)\n  + IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.toolUsePromptTokenCount') AS INT64), 0)\n    AS total_non_cached_input_tokens,\n  IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.cachedContentTokenCount') AS INT64), 0)\n    AS total_cached_input_tokens,\n  IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.candidatesTokenCount') AS INT64), 0)\n  + IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.thoughtsTokenCount') AS INT64), 0)\n    AS total_output_tokens\nFROM `@__project_id.global._Default._Default`\nWHERE\n  log_id = 'dataplex.googleapis.com/data_scan'\n  AND JSON_VALUE(json_payload, '$.type') = 'DATA_DOCUMENTATION'\n  AND JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.promptTokenCount') IS NOT NULL"
                  }
                }
              }
            ],
            "yAxis": {
              "label": "tokens",
              "scale": "LINEAR"
            }
          }
        }
      },
      {
        "xPos": 24,
        "yPos": 0,
        "width": 24,
        "height": 16,
        "widget": {
          "title": "Hourly token usage",
          "xyChart": {
            "chartOptions": {
              "mode": "COLOR",
              "displayHorizontal": false
            },
            "dataSets": [
              {
                "plotType": "LINE",
                "targetAxis": "Y1",
                "breakdowns": [],
                "dimensions": [
                  {
                    "column": "timestamp",
                    "columnType": "TIMESTAMP",
                    "sortColumn": "timestamp",
                    "sortOrder": "SORT_ORDER_ASCENDING",
                    "timeBinSize": "3600s"
                  }
                ],
                "measures": [
                  {
                    "column": "total_non_cached_input_tokens",
                    "aggregationFunction": {
                      "type": "sum",
                      "parameters": []
                    }
                  },
                  {
                    "column": "total_cached_input_tokens",
                    "aggregationFunction": {
                      "type": "sum",
                      "parameters": []
                    }
                  },
                  {
                    "column": "total_output_tokens",
                    "aggregationFunction": {
                      "type": "sum",
                      "parameters": []
                    }
                  }
                ],
                "timeSeriesQuery": {
                  "opsAnalyticsQuery": {
                    "sql": "SELECT\n  timestamp,\n  GREATEST(\n    IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.promptTokenCount') AS INT64), 0)\n    - IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.cachedContentTokenCount') AS INT64), 0),\n    0)\n  + IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.toolUsePromptTokenCount') AS INT64), 0)\n    AS total_non_cached_input_tokens,\n  IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.cachedContentTokenCount') AS INT64), 0)\n    AS total_cached_input_tokens,\n  IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.candidatesTokenCount') AS INT64), 0)\n  + IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.thoughtsTokenCount') AS INT64), 0)\n    AS total_output_tokens\nFROM `@__project_id.global._Default._Default`\nWHERE\n  log_id = 'dataplex.googleapis.com/data_scan'\n  AND JSON_VALUE(json_payload, '$.type') = 'DATA_DOCUMENTATION'\n  AND JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.promptTokenCount') IS NOT NULL"
                  }
                }
              }
            ],
            "yAxis": {
              "label": "tokens",
              "scale": "LINEAR"
            }
          }
        }
      },
      {
        "xPos": 0,
        "yPos": 16,
        "width": 48,
        "height": 20,
        "widget": {
          "title": "Token usage per scan job (latest 500)",
          "timeSeriesTable": {
            "columnSettings": [],
            "dataSets": [
              {
                "tableTemplate": "",
                "timeSeriesQuery": {
                  "opsAnalyticsQuery": {
                    "sql": "SELECT\n  timestamp,\n  JSON_VALUE(resource.labels, '$.datascan_id') AS data_scan_id,\n  JSON_VALUE(resource.labels, '$.location') AS location,\n  JSON_VALUE(json_payload, '$.jobId') AS job_id,\n  JSON_VALUE(json_payload, '$.state') AS state,\n  GREATEST(\n    IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.promptTokenCount') AS INT64), 0)\n    - IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.cachedContentTokenCount') AS INT64), 0),\n    0)\n  + IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.toolUsePromptTokenCount') AS INT64), 0)\n    AS non_cached_input_tokens,\n  IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.cachedContentTokenCount') AS INT64), 0)\n    AS cached_input_tokens,\n  IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.candidatesTokenCount') AS INT64), 0)\n  + IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.thoughtsTokenCount') AS INT64), 0)\n    AS output_tokens\nFROM `@__project_id.global._Default._Default`\nWHERE\n  log_id = 'dataplex.googleapis.com/data_scan'\n  AND JSON_VALUE(json_payload, '$.type') = 'DATA_DOCUMENTATION'\n  AND JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.promptTokenCount') IS NOT NULL\nORDER BY timestamp DESC\nLIMIT 500"
                  }
                }
              }
            ],
            "metricVisualization": "NUMBER"
          }
        }
      }
    ]
  }
}

Limitações

  • As métricas de token só estarão completas se os registros dataplex.googleapis.com/data_scan não forem excluídos ou roteados para fora do bucket de registros _Default.
  • Somente os jobs bem-sucedidos com metadados de token são contabilizados. As entradas de registro sem um bloco billableTokenUsage são excluídas das consultas e métricas.
  • Use esses painéis para monitorar tendências de uso e estimar custos, não para reconciliar uma fatura oficial do Cloud Billing.
  • Cada projeto do Google Cloud requer uma configuração de painel própria.
  • As consultas SQL não retornam entradas de registro gravadas antes que a Análise de Observabilidade fosse ativada no bucket _Default.
  • O widget de tabela por job exibe no máximo os 500 jobs mais recentes no período selecionado. Para inspecionar jobs mais antigos, consulte a Análise de Registros.

A seguir