如何在 Google BigQuery 中执行 table 操作?
How to do table operations in Google BigQuery?
想要一些关于如何处理 Google BigQuery 中的 table 操作(重命名列)的建议。
目前,我有一个包装器可以执行此操作。我的 table 是按日期分区的。例如:如果我有一个 table 名称事实,我将有几个 table 名称:
fact_20160301
fact_20160302
fact_20160303...等等
我的重命名列包装器生成别名查询。 IE。如果我想改变我的 table 架构
['address', 'name', 'city'] -> ['location', 'firstname', 'town']
我做批量查询操作:
select address as location, name as firstname, city as town
并对父 table 执行 WRITE_TRUNCATE。
我的主要问题在于 BigQuery 仅支持 50 个并发作业。这意味着,当我提交批处理请求时,我一次只能做大约 30 个分区,因为我想为正在运行的 ETL 作业保留 20 个位置。
此外,我还没有找到可以对批处理操作执行 poll_job 以查看批处理中的所有作业是否已完成的方法。
如果有人有一些提示或技巧,我很乐意听听。
操作模式的最佳方式是通过 Google 大查询 API。
- 使用 tables get api 检索 table 的现有架构。 https://cloud.google.com/bigquery/docs/reference/v2/tables/get
- 操作您的架构文件、重命名列等
- 再次使用 api 对架构执行更新,将其设置为新修改的版本。这应该全部发生在一份工作中 https://cloud.google.com/bigquery/docs/reference/v2/tables/update
我可以提出两个方案
Using View
创建视图的脚本编写和执行非常简单 - 与使用 select into
方法扫描整个 table 的成本相比,它快速且免费。
您可以使用 Tables: insert API with properly set type 属性
创建视图
Using Jobs: insert EXTRACT and then LOAD
在这里您可以将 table 提取到 GCS,然后使用调整后的架构将其加载回 GBQ
上述方法将 a) 消除查询(扫描)成本 tables 和 b) 可以帮助解决限制。但可能不取决于 table 的实际数量和您可能有的其他要求
想要一些关于如何处理 Google BigQuery 中的 table 操作(重命名列)的建议。
目前,我有一个包装器可以执行此操作。我的 table 是按日期分区的。例如:如果我有一个 table 名称事实,我将有几个 table 名称:
fact_20160301
fact_20160302
fact_20160303...等等
我的重命名列包装器生成别名查询。 IE。如果我想改变我的 table 架构 ['address', 'name', 'city'] -> ['location', 'firstname', 'town']
我做批量查询操作:
select address as location, name as firstname, city as town
并对父 table 执行 WRITE_TRUNCATE。
我的主要问题在于 BigQuery 仅支持 50 个并发作业。这意味着,当我提交批处理请求时,我一次只能做大约 30 个分区,因为我想为正在运行的 ETL 作业保留 20 个位置。
此外,我还没有找到可以对批处理操作执行 poll_job 以查看批处理中的所有作业是否已完成的方法。
如果有人有一些提示或技巧,我很乐意听听。
操作模式的最佳方式是通过 Google 大查询 API。
- 使用 tables get api 检索 table 的现有架构。 https://cloud.google.com/bigquery/docs/reference/v2/tables/get
- 操作您的架构文件、重命名列等
- 再次使用 api 对架构执行更新,将其设置为新修改的版本。这应该全部发生在一份工作中 https://cloud.google.com/bigquery/docs/reference/v2/tables/update
我可以提出两个方案
Using View
创建视图的脚本编写和执行非常简单 - 与使用 select into
方法扫描整个 table 的成本相比,它快速且免费。
您可以使用 Tables: insert API with properly set type 属性
Using Jobs: insert EXTRACT and then LOAD
在这里您可以将 table 提取到 GCS,然后使用调整后的架构将其加载回 GBQ
上述方法将 a) 消除查询(扫描)成本 tables 和 b) 可以帮助解决限制。但可能不取决于 table 的实际数量和您可能有的其他要求