[英]How retrieve the user and SQL code associated with a BigQuery job?
出於安全目的,我希望能夠審核誰在某個項目中運行何種類型的查詢。 這可能嗎?
從命令行使用bq ls -j
可以提供一些信息; bg show -j
給出了更多。 但既不顯示用戶也不顯示查詢本身。
在CLI中,您可以運行bq ls -j -a
來檢索項目中所有用戶的作業。
然后你可以為bq show -j <job_id>
運行每個作業id,為了獲得更多細節,你將選擇使用json響應:
bq show --format=prettyjson -j job_joQEqPwOiOoBlOhDBEgKxQAlKJQ
這將返回以下格式,其中包含您的查詢,您的用戶和bytesprocessed等...
{
"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
您還使用 sql 查詢 INFORMATION_SCHEMA 以獲取用戶和查詢。
例如像這樣:
SELECT
creation_time,
job_type,
query,
user_email,
job_id,
parent_job_id,
cache_hit,
total_bytes_processed,
total_bytes_billed
FROM `your_project_id.region-eu.INFORMATION_SCHEMA.JOBS`
WHERE creation_time >= '2023-01-11' -- table is partitioned on creation_time
也可以看看:
https://cloud.google.com/bigquery/docs/information-schema-jobs
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.