记录所有 BigQuery 查询
Posted
技术标签:
【中文标题】记录所有 BigQuery 查询【英文标题】:logging all BigQuery queries 【发布时间】:2015-07-01 00:05:26 【问题描述】:是否可以将所有 BigQuery 请求记录到 Cloud Storage 中的文件中(或者更好地记录到 BigQuery 表中)?似乎 bq 中可用的 --apilog 选项主要用于调试目的,但我想做的是跟踪所有查询,就像在 CloudStorage 中的特定文件上记录所有访问请求一样。
更具体地说,我不只是想记录我自己的查询,而是 (a) 同一项目中所有用户的查询,最好还 (b) 任何人 的查询我拥有的数据集中的表。
【问题讨论】:
【参考方案1】:我知道它来晚了,但 GCP 在其最新版本中引入了审计日志的这一新功能。
参考这个 - Audit Logs BQ
【讨论】:
【参考方案2】:在 CLI 中,您可以运行 bq ls -j -a
来检索项目中所有用户的作业。您可以将所有输出重定向到存储文件。
然后您可以为每个作业 id 运行 bq show -j <job_id>
,为了获得更多详细信息,您将选择使用 json 响应:
bq show --format=prettyjson -j job_joQEqPwOiOoBlOhDBEgKxQAlKJQ
这将返回以下格式,其中包含您的查询、您的用户和字节处理等...
"configuration":
"dryRun": false,
"query":
"createDisposition": "CREATE_IF_NEEDED",
"destinationTable":
"datasetId": "",
"projectId": "",
"tableId": ""
,
"query": "",
"writeDisposition": "WRITE_TRUNCATE"
,
"etag": "",
"id": "",
"jobReference":
"jobId": "",
"projectId": ""
,
"kind": "bigquery#job",
"selfLink": "",
"statistics":
"creationTime": "1435006022346",
"endTime": "1435006144730",
"query":
"cacheHit": false,
"totalBytesProcessed": "105922683030"
,
"startTime": "1435006023171",
"totalBytesProcessed": "105922683030"
,
"status":
"state": "DONE"
,
"user_email": ""
使用 API 您需要传递 allUsers 属性来列出来自所有用户 https://cloud.google.com/bigquery/docs/reference/v2/jobs/list#allUsers 的作业
【讨论】:
如果有一些示例代码用于定期运行该查询并将新结果附加到 BQ 表中,那将是非常棒的。写起来并不难,但我敢肯定有人已经做到了。 您可能需要添加行数bq ls -j -a -n 1000
以显示超过最后 50 个查询。【参考方案3】:
BigQuery 具有 INFORMATION_SCHEMA.JOBS_BY_*
视图来检索有关 BigQuery 作业的实时元数据。此视图包含当前正在运行的作业,以及过去 180 天已完成作业的历史记录。
更多信息见Getting jobs metadata using INFORMATION_SCHEMA
【讨论】:
【参考方案4】:现在使用 INFORMATION_SCHEMA 表有更好的方法。
以下是获取项目过去 90 天内所有查询的简单方法:
SELECT
job_id,
start_time,
user_email,
total_bytes_processed,
query
FROM `region-us`.INFORMATION_SCHEMA.JOBS_BY_PROJECT
WHERE creation_time BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 90 DAY)
AND CURRENT_TIMESTAMP()
AND job_type = "QUERY"
AND end_time BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 90 DAY) AND CURRENT_TIMESTAMP()
ORDER BY total_bytes_processed DESC
完整的文档可以在这里找到:https://cloud.google.com/bigquery/docs/information-schema-jobs
【讨论】:
以上是关于记录所有 BigQuery 查询的主要内容,如果未能解决你的问题,请参考以下文章