有可能在谷歌bigquery中检索完整的查询历史并关联其成本吗



我正在查询多个表,并且可以查看每个查询的成本以供个人使用。当我查看查询历史记录时,我只看到我在帐户上运行的查询。

因此,我的问题是,是否有可能从查询历史记录中查看项目中其他人运行的查询(以及查询的成本(?

您可以使用作业信息模式:

SELECT query, total_bytes_processed FROM `region-us`.INFORMATION_SCHEMA.JOBS_BY_PROJECT WHERE project_id = 'you_project_id' AND user_email = 'my@eamil.com'

根据文档,没有按作业和用户获取成本的直接方法。然而,有一种方法可以做到这一点

为了进行详细的计费分析,我建议您使用自定义过滤器将日志导出到BigQuery,并从中分析每个用户和查询作业的计费。

因此,您可以使用日志查看器或API创建导出。创建水槽时使用以下自定义过滤器:

resource.type="bigquery_resource"
logName="projects/<your_project>/logs/cloudaudit.googleapis.com%2Fdata_access"
protoPayload.methodName="jobservice.jobcompleted"

上述过滤器将检索已完成的查询作业,而数据访问日志是对BigQuery中运行的每个查询以及扫描的总字节数的全面审计。我想指出的是,您必须确保data_access日志已启用,链接。

从日志条目中,您将获得以下字段:

  • protoPayload.authenticationInfo.principal电子邮件
  • protoPayload.serviceData.jobCompletedEvent.job.jobName.jobId
  • protoPayload.serviceData.jobCompletedEvent.job.jobConfiguration.query.query
  • protoPayload.serviceData.jobCompletedEvent.job.jobStatistics.totalBilledBytes

在BigQuery中,您可以使用以下查询:

SELECT
protopayload_auditlog.authenticationInfo.principalEmail AS email,
protopayload_auditlog.servicedata_v1_bigquery.jobCompletedEvent.job.jobStatistics.totalBilledBytes AS total_billed_bytes,
protopayload_auditlog.servicedata_v1_bigquery.jobCompletedEvent.job.jobConfiguration.query.query AS query,
protopayload_auditlog.servicedata_v1_bigquery.jobCompletedEvent.job.jobName.jobId as job_id
FROM
`<myproject>.<mydataset>.cloudaudit_googleapis_com_data_access`
WHERE
protopayload_auditlog.methodName = 'jobservice.jobcompleted';

然后,要获得每个查询的价格估计,您可以使用totalBilledBytes和定价摘要,以便为每个查询添加一个带有价格估计的新列。因此,您有一个最终的表,其中包含用户的电子邮件、查询代码、计费的总字节数、作业id和估计价格

最新更新