【问题标题】:Is it possible to retrieve an extended or full query history in google bigquery?是否可以在 google bigquery 中检索扩展或完整的查询历史记录?
【发布时间】:2015-09-17 08:35:38
【问题描述】:

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

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

webUI 中的查询历史显然只显示有限数量的查询。不幸的是,我正在寻找的那个不在该列表中。

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

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

【问题讨论】:

标签: google-bigquery


【解决方案1】:

在 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 的作业

【讨论】:

    【解决方案2】:

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

    如果您不知道 JobID... 这取决于我假设的查询是如何运行的。它可能由 App Engine(如果您通过代码运行它)在开发者控制台的日志部分记录。您还可以查看Jobs List(归功于 OP)并在那里查找您最近的工作。您还可以从列表中获得工作资源,因此它们将包含您需要的所有内容。

    【讨论】:

    • @Guus 非常欢迎 :) 正如您在文档中看到的那样,这些文件保留了 6 个月,所以这应该不是问题。唯一的缺点是您需要 JobID 才能获得它,您不能只获得所有已运行作业的列表(AFAIK)
    • 不幸的是,可能是因为我通过 Web 界面运行查询并且因为我的日志记录 API 被禁用,所以我无法找到日志。
    • @Guus 哦...这都是从 webUI 运行的?...然后确保您以运行该查询的用户身份登录并查看其最近的作业,并希望为了最好的? :S
    • 它不是“最近的”,但是使用jobs.list API,我能够检索到包含所需信息的作业列表。
    • @Guus 我在答案中添加了工作列表,只是为了让它更完整:)。
    【解决方案3】:

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

    即使您尚未设置堆栈驱动程序日志记录,您仍然可以尝试查找您的查询。 BigQuery 日志默认启用,您可以在 30 天内从 stackdriver 检索这些日志。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-13
      • 2023-03-20
      • 2017-11-04
      • 2022-10-07
      • 2013-06-26
      相关资源
      最近更新 更多