为什么BigQuery没有删除列的选项?

Vij*_*raj 4 google-bigquery

我正在寻找一种从BigQuery表中删除列的选项,例如ALTER TABLE TABLE_NAME DROP COLUMN_NAME-但我在网上找到的只是删除旧表并创建一个新表。

我只是想知道,是否有任何逻辑原因在BigQuery中没有此选项?

Ell*_*ard 6

删除列将意味着从构成该表的所有电容器文件中删除数据,这是一项昂贵的操作。如果BigQuery只是删除与该列相关的元数据,则将向您收取无法实际查询的幻像列的存储空间,这并不理想。

相反,添加列时,BigQuery会将过去文件中缺少的列视为具有所有NULL值,不需要修改它们。

有两个不同的选项可以删除列:

  • 从原始表中选择,但不保留您不想保留的列。然后复制结果表并覆盖原始表。
  • 在表上创建具有所需列的逻辑视图。现在,查询逻辑视图而不是查询表-您可以进行其他“修改”,例如强制转换或过滤,而无需接触基础表。缺点是您将需要为不再需要查询的旧列付费。