【发布时间】:2016-03-15 17:40:03
【问题描述】:
想要一些关于如何在 Google BigQuery 中处理表操作(重命名列)的建议。
目前,我有一个包装器来执行此操作。我的表按日期分区。 eg:如果我有一个表名事实,我将有几个表命名:
fact_20160301
fact_20160302
fact_20160303...等
我的重命名列包装器会生成别名查询。 IE。如果我想从 ['address', 'name', 'city'] -> ['location', 'firstname', 'town']
我做批量查询操作:
select address as location, name as firstname, city as town
并对父表执行 WRITE_TRUNCATE。
我的主要问题在于 BigQuery 仅支持 50 个并发作业。这意味着,当我提交批处理请求时,我一次只能执行大约 30 个分区,因为我想为正在运行的 ETL 作业保留 20 个位置。
另外,我还没有找到一种方法可以对批处理操作执行 poll_job 以查看批处理中的所有作业是否都已完成。
如果有人有一些提示或技巧,我很想听听。
【问题讨论】:
-
这个带有“rename”和write_truncate的选择背后的用例是什么?听起来不太实用。了解您的案例将有助于回答您的问题
-
我们正在用 bigquery 替换 vertica。我们的团队有时会收到重命名列的请求,因此我们会在整个版块中重命名列,以免在他们查询特定列时中断任何上游或下游作业。
-
您考虑过使用视图吗?这是零成本与执行一种“选择进入”的方式,您需要为整个表扫描付费。不过还有一些编码:)
-
感谢您的建议,但不要认为意见会有所帮助。顺便说一句,你是 BQ-mate 的作者。伟大的扩展:)。我们所有从事 BQ 工作的团队都安装了它。
-
太棒了!很高兴它被广泛使用!谢谢!
标签: google-api google-bigquery