Google bigquery BigQuery-从架构中删除未使用的列
我不小心在我的BigQuery表架构中添加了一个错误的列 我不想重新加载整个表的百万行,而是想知道是否有以下可能: 通过使用某种筛选器对表运行select*查询,并将结果保存到同一个表中,删除包含错误列的值为的坏行。 删除现在未使用的列。 是否支持此功能或类似功能?Google bigquery BigQuery-从架构中删除未使用的列,google-bigquery,Google Bigquery,我不小心在我的BigQuery表架构中添加了一个错误的列 我不想重新加载整个表的百万行,而是想知道是否有以下可能: 通过使用某种筛选器对表运行select*查询,并将结果保存到同一个表中,删除包含错误列的值为的坏行。 删除现在未使用的列。 是否支持此功能或类似功能? “将结果保存到表”功能可能有一个紧凑的模式选项。将结果保存到表是您的选择。用你感兴趣的选定列在大表上试试,你可以应用一个限制使它变小 如果您的表不包含记录/重复类型字段-您的简单选项是: 选择有效列,同时将坏记录过滤到新临时表中 选
“将结果保存到表”功能可能有一个紧凑的模式选项。将结果保存到表是您的选择。用你感兴趣的选定列在大表上试试,你可以应用一个限制使它变小 如果您的表不包含记录/重复类型字段-您的简单选项是: 选择有效列,同时将坏记录过滤到新临时表中 选择<原始列列表> 从你的桌子上 其中
我希望Google BigQuery团队能在某个时候为您这样的案例提供更好的支持,当您需要操作和输出重复/记录数据时,但目前这是我发现的最好的解决方法-至少对我自己来说,下面是代码。假设c是要删除的列
CREATE OR REPLACE TABLE transactions.test_table AS
SELECT * EXCEPT (c) FROM transactions.test_table;
或者第二种方法,我最喜欢的是以下步骤
使用要排除的列编写Select查询。
转到查询设置
在“目标设置”“为查询结果设置目标表”中,输入与步骤1中输入的完全相同的项目名称、数据集名称和表名称。
在目标表写入首选项中,选择覆盖表。
保存查询设置并运行查询。
根据文档,从大查询中删除列是最省时的方法
ALTER TABLE[TABLE_name]DROP COLUMN(如果存在)[COLUMN_name]限制如何有助于使架构变小而不是表大小?限制将有助于测试它。您可以在“选择”中列出要保留的列。我有许多重复/记录字段。这就是为什么我使用select*并避免使用展平结果,以在保存到新表时保持准确的模式。在我的答案中添加了更多与重复/记录内容相关的内容。如果您觉得它很有用,但在实施过程中需要帮助,请发布另一个问题以及所有相关的详细信息,我很乐意提供帮助。我想补充的是,您甚至可以将所有数据复制到临时表,并在将数据复制回原始表时使用筛选选项。这样,您可以在必要时还原操作,而不会丢失这些删除列中的数据。请尝试GCP文档中描述的方法之一:在代码部分之间加一个“`”。@Xenikh补充道,感谢您的建议。