簡體   English   中英

如何檢索與 BigQuery 作業關聯的用戶和 SQL 代碼?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM