【问题标题】:A possible way to remove BigQuery column删除 BigQuery 列的一种可能方法
【发布时间】:2015-11-20 15:27:09
【问题描述】:

我正在寻找更新现有 BigQuery 表的方法。

使用CLI,我可以将表格复制到新表格。现在,我正在寻找一种有效的删除/重命名列的方法。

据说不能删除列。那么在将 table1 复制到 table2 以排除某些列时是否有可能?

谢谢,

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    您可以通过运行将旧表复制到新表的查询来执行此操作。您应该指定allowLargeResults:trueflattenSchema:false。前者允许查询结果大于 128MB,后者防止重复字段在结果中被展平。

    您可以将结果写入与源表相同的表,但使用writeDisposition:WRITE_TRUNCATE。这将用结果自动覆盖表。但是,如果您想先测试查询,您总是可以先将结果写入临时表,然后在您满意时将临时表复制到旧表上(使用WRITE_TRUNCATE 原子替换表)。

    (注意,我在这里描述的标志是它们在底层 API 中的名称,但它们在 Web UI 和 bq CLI 的查询选项中都有类似的名称。

    例如,如果您有一个具有架构 {a, b, c, d} 的表 t1,并且您想删除字段 c,并将 b 重命名为 b2,您可以运行

    SELECT a, b as b2, d FROM t1
    

    【讨论】:

    • 谢谢!听起来不错 :) 现在具有挑战性的事实是从更新的 JSON 模式文件(嵌套和重复字段)生成查询。实际上,每个模式都是版本化的,当创建新版本时,将触发更新作业,以便使用旧版本更新所有表。
    • 我们正在使用 WebUI 执行此操作,但是创建的表在字段上丢失了它的“必需”(它们都变为 NULLABLE)。有什么想法可以将 REQUIRED 放在桌面上吗?
    猜你喜欢
    • 2010-11-14
    • 1970-01-01
    • 2020-09-03
    • 2021-10-25
    • 1970-01-01
    • 2013-06-05
    • 1970-01-01
    • 2011-02-17
    相关资源
    最近更新 更多