如何在BigQuery中恢复已删除的视图?

时间:2017-10-24 12:21:45

标签: google-bigquery

我在bigquery中删除了视图。我开始知道有一个选项可以根据表快照装饰器恢复已删除的表。有没有办法检索已删除的bigquery视图?

2 个答案:

答案 0 :(得分:5)

有一种方法可以找回它。您需要搜索在创建视图时滚动的插入日志。从堆栈驱动程序日志中可以看到此日志。步骤如下:

  1. 转到GCP控制台

  2. 单击堆栈驱动程序日志记录

  3. 点击搜索文本框中的箭头,然后选择“转换为高级过滤器”
  4. 现在删除所有内容并将其粘贴在下面的查询中。不要忘记在查询中输入视图名称。

resource.type="bigquery_resource" protoPayload.methodName="tableservice.insert" protoPayload.serviceData.tableInsertRequest.resource.tableName.tableId="Your_view_name"

  1. 您将获得视图创建的记录,现在单击“全部展开并转到视图”部分。您可以在其中找到创建视图时使用的查询。
  2. 只需将该查询粘贴到bigquery中,然后单击保存视图即可。

或者,如果要搜索视图更新以恢复特定版本,则可以使用以下过滤器:

resource.type="bigquery_resource"
protoPayload.serviceData.tableUpdateRequest.resource.tableName.datasetId="<dataset_id>"
protoPayload.resourceName="projects/<project_id>/datasets/<dataset_id>/tables/<table_or_view_id>"

我希望这可以帮助您恢复BQ视图。

答案 1 :(得分:3)

不幸的是,我不认为这是可能的。我刚刚使用Jordan的方法测试了here所描述的取消删除表的方法,但它没有用。我还尝试获取查询视图的作业的详细信息,希望它能在视图后面显示SQL,但是,唉,它只显示视图的实际SQL。

除非有一个BigQuery工程师有伎俩,否则我会想到另一种方式,我认为它已经消失了。

这是一个很好的例子,说明为什么我们强迫开发人员将他们的SQL /视图放在源代码控制中。