删除 BigQuery 列的可能方法
A possible way to remove BigQuery column
我正在四处寻找更新现有 BigQuery table 的方法。
使用 CLI 我可以将 table 复制到一个新的。现在,我正在寻找一个有效的 remove/rename 专栏。
据说无法删除列。那么在将 table1 复制到 table2 时是否可以排除某些列?
谢谢,
您可以通过 运行 将旧 table 复制到新查询的查询来完成此操作。您应该指定 allowLargeResults:true
和 flattenSchema:false
。前者允许您拥有大于 128MB 的查询结果,后者防止重复字段在结果中被展平。
您可以将结果写入与源 table 相同的 table,但使用 writeDisposition:WRITE_TRUNCATE
。这将自动用结果覆盖 table 。但是,如果您想先测试查询,您总是可以先将结果写入临时 table,然后在您执行此操作时将临时 table 复制到旧 table对它很满意(使用 WRITE_TRUNCATE
自动替换 table)。
(请注意,我在这里描述的标志是它们在底层 API 中的名称,但它们在 Web UI 和 bq CLI 中的查询选项中都有类似物)。
例如,如果您有一个 table t1 模式为 {a, b, c, d} 并且您想要删除字段 c,并将 b 重命名为 b2,您可以 运行
SELECT a, b as b2, d FROM t1
我正在四处寻找更新现有 BigQuery table 的方法。
使用 CLI 我可以将 table 复制到一个新的。现在,我正在寻找一个有效的 remove/rename 专栏。
据说无法删除列。那么在将 table1 复制到 table2 时是否可以排除某些列?
谢谢,
您可以通过 运行 将旧 table 复制到新查询的查询来完成此操作。您应该指定 allowLargeResults:true
和 flattenSchema:false
。前者允许您拥有大于 128MB 的查询结果,后者防止重复字段在结果中被展平。
您可以将结果写入与源 table 相同的 table,但使用 writeDisposition:WRITE_TRUNCATE
。这将自动用结果覆盖 table 。但是,如果您想先测试查询,您总是可以先将结果写入临时 table,然后在您执行此操作时将临时 table 复制到旧 table对它很满意(使用 WRITE_TRUNCATE
自动替换 table)。
(请注意,我在这里描述的标志是它们在底层 API 中的名称,但它们在 Web UI 和 bq CLI 中的查询选项中都有类似物)。
例如,如果您有一个 table t1 模式为 {a, b, c, d} 并且您想要删除字段 c,并将 b 重命名为 b2,您可以 运行
SELECT a, b as b2, d FROM t1