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

Google bigquery 可以在google bigquery中检索扩展的或完整的查询历史记录吗?,google-bigquery,Google Bigquery,我最近发现我无意中从BigQuery中删除了一个表,该表是通过查询其他表(我现在仍然有)构建的 由于BigQuery中的表删除是永久性的(对吗?),我希望重建丢失的表,最好不用重写查询 webUI中的查询历史记录显然只显示有限数量的查询。不幸的是,我要找的人不在名单上 所以我的问题是,是否有可能以某种方式恢复从查询历史中消失的查询 (我确实知道我要查找的查询的创建日期)使用JobID,您可以查询特定的作业()。这将为您提供一个资源,其中将包含您的查询 如果你不知道工作ID。。。我想这取决于查询是

我最近发现我无意中从BigQuery中删除了一个表,该表是通过查询其他表(我现在仍然有)构建的

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

webUI中的查询历史记录显然只显示有限数量的查询。不幸的是,我要找的人不在名单上

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


(我确实知道我要查找的查询的创建日期)

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


如果你不知道工作ID。。。我想这取决于查询是如何运行的。它可能由应用程序引擎(如果通过代码运行)在开发人员控制台的日志部分记录。你也可以看一看(这一点归功于OP),看看你最近的工作。您还可以从列表中获得作业资源,因此它们将包含您所需的所有作业。

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

然后,您可以为每个作业id运行a
bq show-j
,为了获得更多详细信息,您将选择使用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属性以列出来自所有用户的作业

这可以使用stackdriver审核日志来完成。这是更多的信息


即使尚未设置stackdriver日志记录,也可以尝试查找查询。默认情况下,BigQuery日志处于启用状态,您可以在30天内从stackdriver中检索这些日志。

@Guus非常欢迎:)正如您在文档中看到的,这些日志保存了6个月,因此应该不会有问题。唯一的缺点是您需要JobID来获取它,您不能只获取所有运行的作业的列表(AFAIK),不幸的是,可能是因为我通过web界面运行了查询,并且由于我的日志api被禁用,我无法找到日志。@Guus oh。。。这都是从webUI运行的?。。。。然后确保您以运行该查询的用户身份登录,查看其最近的作业,并希望一切顺利:SIt不在“最近”,但是使用API我可以检索到包含所需信息的作业列表。@Guus我在回答中添加了作业列表,只是为了使其更完整:)。注意,如果您足够快,可以取消删除表:Nah太晚了(它确实复制了表架构,但没有行)