我最近发现我不小心从BigQuery中删除了一个表,它是通过查询其他表(我还有)来构造的.
由于BigQuery中的表删除是永久性的(对吗?),我想重建丢失的表,最好不要重写查询.
WebUI中的查询历史记录显然只显示有限数量的查询.遗憾的是,我正在寻找的那个不在该列表中.
所以我的问题是,是否有可能以某种方式恢复从查询历史中消失的查询?
(我知道我正在寻找的查询的创建日期)
在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