Monitorar o uso de tokens de insights de dados

Este documento explica como monitorar o consumo de tokens para verificações de insights de dados do Knowledge Catalog (antigo Dataplex Universal Catalog) usando o Cloud Logging e o Cloud Monitoring. O acompanhamento do uso de tokens por verificação e por job permite entender as tendências de uso do modelo e estimar os custos faturados do projeto.

Como funciona a geração de registros 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 a discriminação 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 veiculados no cache de contexto, incluindo tokens de comando de uso de ferramentas. max(promptTokenCount - cachedContentTokenCount, 0) + toolUsePromptTokenCount
Tokens de entrada armazenados em cache Tokens de entrada veiculados no cache de contexto. Os tokens armazenados em cache são rastreados separadamente porque não são precificados na taxa de entrada não armazenada em cache padrão. cachedContentTokenCount
Tokens de saída Tokens de resposta gerados mais tokens de raciocínio (pensamento). Tokens de raciocínio são faturados como tokens de saída. candidatesTokenCount + thoughtsTokenCount

Para mais detalhes sobre os preços de tokens, consulte Preços do Data Cloud Agent.

Campos de token na entrada de registro

Cada entrada de registro dataplex.googleapis.com/data_scan inclui identificadores de recursos e jobs padrão, 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 armazenados em cache.
cachedContentTokenCount Parte dos tokens de comando veiculados no cache de contexto.
toolUsePromptTokenCount Tokens de comando adicionados por chamadas de ferramentas (como esquema, perfil ou contexto do histórico de consultas).
candidatesTokenCount Tokens de resposta gerados, excluindo 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 o cache de contexto, tokens de raciocínio ou chamadas de ferramentas. 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 registros de tokens 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 com papéis personalizados ou outros papéis predefinidos.

Ativar APIs

Ative as APIs Dataplex, Logging e Monitoring, se alguma delas ainda não estiver ativada.

Funções necessárias para ativar APIs

Para ativar as 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, você pode receber essa permissão pelo papel de administrador de uso do serviço (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 descarte registros dataplex.googleapis.com/data_scan ou DATA_DOCUMENTATION.

Console

  1. No Google Cloud console do, 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 seu Google Cloud projeto.

Verifique se disabled não está definido como true, destination termina com /buckets/_Default e 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 ativar o painel personalizado da Análise de observabilidade, faça upgrade do bucket de registros _Default do projeto para usar a Análise de observabilidade.

Antes de ativar a Análise de observabilidade no bucket de registros _Default, revise as considerações a seguir:

  • Não é possível desfazer o upgrade de um bucket para a Análise de observabilidade, e ele não gera custos 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 ainda estão 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 Google Cloud console do, 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á estará ativada.
    • Se a coluna mostrar Upgrade, clique em Upgrade e confirme o upgrade.
  3. Aguarde alguns minutos até que o status da coluna mude para Abrir.

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 Google Cloud projeto.

  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.

Conferir o uso de tokens por job na Análise de registros

Para inspecionar o consumo de tokens de jobs de verificação de insights de dados individuais, use a Análise de registros ou a Google Cloud CLI. Para agregações por hora ou por dia no projeto, é possível criar um painel usando a Análise de observabilidade.

Console

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

    Acessar o Explorador de registros

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

  3. Insira a consulta a seguir 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 seu Google Cloud ID do projeto.

Uma coluna vazia na tabela de saída indica 0 tokens para esse campo. Para transformar esses campos nas métricas, use as fórmulas em Como funciona a geração de registros 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 de widget diretamente na página Análise de dados de registros no Google Cloud console.

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 de volta 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 seu Google Cloud ID do projeto.

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 seu Google Cloud ID do projeto.

Criar um painel usando a Análise de observabilidade

Para visualizar e acompanhar o consumo de tokens do modelo ao longo do tempo, é possível criar 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. Ela oferece vários benefícios:

  • Precisão:as consultas calculam 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 de gráficos agregados, é possível inspecionar jobs de verificação individuais em uma visualização tabular.
  • Sem custo adicional:o upgrade do bucket de registros _Default para a Análise de observabilidade não gera custos adicionais.

Essa opção cria um painel do Monitoring com três widgets que executam consultas SQL nos 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 que mostra os 500 jobs mais recentes)

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

Console

  1. No Google Cloud console do, 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, selecione JSON e 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 que você confirme a execução da consulta SQL no mecanismo do BigQuery para o 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 seu Google Cloud ID do projeto.

  3. Abra a página Painéis no Google Cloud console do , selecione Verificação 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, expanda a seção a seguir e copie a definição JSON:

Definição 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ó serão concluídas se os registros dataplex.googleapis.com/data_scan não forem excluídos ou encaminhados para fora do bucket de registros _Default.
  • Somente jobs bem-sucedidos com metadados de token são contados. 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 conciliar uma fatura oficial do Cloud Billing.
  • Cada Google Cloud projeto exige a própria configuração do painel.
  • As consultas SQL não retornam entradas de registro gravadas antes da ativação da Análise de observabilidade no bucket _Default.
  • O widget de tabela por job mostra 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