如何在Google BigQuery中进行表操作



想得到一些关于如何处理Google BigQuery中的表操作(重命名列)的建议。

目前,我有一个包装器来执行此操作。我的表按日期分区。例如:如果我有一个表名事实,我将有几个表命名为:

fact_20160301

fact_20160302

fact_20160303... 等等

我的重命名列包装器生成别名查询。 即,如果我想从["地址"、"名称"、"城市"] -> ["位置"、"名字"、"城镇"]

我做批量查询操作: select address as location, name as firstname, city as town

并对父表执行WRITE_TRUNCATE。

我的主要问题在于 BigQuery 仅支持 50 个并发作业。这意味着,当我提交批处理请求时,我一次只能执行大约 30 个分区,因为我想为正在运行的 ETL 作业保留 20 个位置。

另外,我还没有找到一种方法可以对批处理操作进行poll_job以查看批处理中的所有作业是否已完成。

如果有人有一些提示或技巧,我很想听听。

我可以提出两个选项

使用视图

视图创建脚本和执行非常简单 - 与使用select into方法扫描整个表的成本相比,它是快速且免费的。
您可以使用表创建视图:使用正确设置的类型属性插入 API

使用作业:插入提取,然后加载

在这里,您可以将表提取到 GCS,然后使用调整后的架构将其加载回 GBQ

上述方法将 a) 消除查询(扫描)表的成本成本,b) 可以帮助解决限制。但可能不取决于表的实际数量和您可能具有的其他要求

操作模式的最佳方式是通过 Google Big Query API。

  1. 使用表 get api 检索表的现有架构。 https://cloud.google.com/bigquery/docs/reference/v2/tables/get
  2. 操作架构文件、重命名列等。
  3. 再次使用 api 对架构执行更新,将其设置为新修改的版本。这应该全部发生在一个作业中 https://cloud.google.com/bigquery/docs/reference/v2/tables/update

相关内容

  • 没有找到相关文章

最新更新