是否可以在google bigquery中检索扩展或完整的查询历史记录?

Guu*_*uus 6 google-bigquery

我最近发现我不小心从BigQuery中删除了一个表,它是通过查询其他表(我还有)来构造的.

由于BigQuery中的表删除是永久性的(对吗?),我想重建丢失的表,最好不要重写查询.

WebUI中的查询历史记录显然只显示有限数量的查询.遗憾的是,我正在寻找的那个不在该列表中.

所以我的问题是,是否有可能以某种方式恢复从查询历史中消失的查询?

(我知道我正在寻找的查询的创建日期)

Pen*_*m10 9

在CLI中,您可以运行bq ls -j -a以检索项目中所有用户的作业.

然后,您可以运行每个作业ID a bq show -j <job_id>,以便获得更多详细信息,您将选择使用json响应:

bq show --format=prettyjson -j job_joQEqPwOiOoBlOhDBEgKxQAlKJQ
Run Code Online (Sandbox Code Playgroud)

这将返回以下格式,其中包含您的查询,您的用户和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": ""
}
Run Code Online (Sandbox Code Playgroud)

使用API​​,您需要传递allUsers属性以列出所有用户的作业https://cloud.google.com/bigquery/docs/reference/v2/jobs/list#allUsers


Pat*_*ice 4

使用JobID,您可以查询特定作​​业(此处记录)。这将为您提供一个作业资源,其中将包含您的查询。

如果您不知道 JobID...我认为这取决于查询的运行方式。它可能由 App Engine(如果您通过代码运行)记录在开发人员控制台的“日志”部分中。您还可以查看工作列表(归功于 OP)并在其中查找您最近的工作。您还可以从列表中获得工作资源,因此它们将包含您所需的一切。