想知道如何处理Google BigQuery中的表操作(重命名列)。
目前,我有一个包装器来执行此操作。我的表按日期分区。例如:如果我有一个表名,我会有几个名为:
的表fact_20160301
fact_20160302
fact_20160303 ... etc
我的重命名列包装器生成别名查询。即。如果我想更改我的表架构 ['地址','名称','城市'] - > [' location',' firstname',' town']
我做批量查询操作:
select address as location, name as firstname, city as town
并在父表上执行WRITE_TRUNCATE。
我的主要问题在于BigQuery仅支持50个并发作业。这意味着,当我提交批处理请求时,我一次只能执行大约30个分区,因为我想为正在运行的ETL作业保留20个位置。
此外,我还没有找到一种方法,您可以在批处理操作中执行poll_job,以查看批处理中的所有作业是否都已完成。
如果有人有一些提示或技巧,我很乐意听到它们。
答案 0 :(得分:3)
我可以提出两个选项
使用视图
创建视图非常简单,可以快速自由地与使用select into
方法扫描整个表格的成本进行比较。
您可以使用Tables: insert API通过正确设置type属性
使用Jobs: insert EXTRACT然后加载
在这里,您可以将表提取到GCS,然后将其加载回具有调整后架构的GBQ
以上方法将a)消除查询(扫描)表的成本成本,b)可以帮助限制。但可能不取决于表格的实际数量和您可能有的其他要求
答案 1 :(得分:0)
操纵架构的最佳方式是通过Google Big Query API。