【发布时间】:2017-08-22 11:25:48
【问题描述】:
我正在寻找一个选项来从我的 BigQuery 表中删除一列,例如 ALTER TABLE TABLE_NAME DROP COLUMN_NAME - 但我在网上找到的只是删除旧表并创建一个新表。
我只是想知道,BigQuery 中没有此选项是否有任何合乎逻辑的原因?
【问题讨论】:
标签: google-bigquery
我正在寻找一个选项来从我的 BigQuery 表中删除一列,例如 ALTER TABLE TABLE_NAME DROP COLUMN_NAME - 但我在网上找到的只是删除旧表并创建一个新表。
我只是想知道,BigQuery 中没有此选项是否有任何合乎逻辑的原因?
【问题讨论】:
标签: google-bigquery
删除一列意味着从构成表的所有Capacitor files 中删除数据,这是一项昂贵的操作。如果 BigQuery 只是删除与列相关的元数据,您将需要为无法实际查询的虚拟列支付存储费用,这并不理想。
相反,当您添加列时,BigQuery 会将过去文件中缺少的列视为具有所有 NULL 值,因此不需要修改它们。
有几个不同的选项可以删除一列:
【讨论】:
您可以通过重写表格删除列。
CREATE OR REPLACE TABLE
temp.table_name AS
SELECT
* EXCEPT (column_name)
FROM
temp.table_name
【讨论】:
BigQuery 现在支持DROP COLUMN
ALTER TABLE [[project_name.]dataset_name.]table_name
DROP COLUMN [IF EXISTS] column_name [, ...]
【讨论】: