如何从 Bigquery Schema 中删除未使用的列名
Posted
技术标签:
【中文标题】如何从 Bigquery Schema 中删除未使用的列名【英文标题】:How to remove unused column names from Bigquery Schema 【发布时间】:2021-12-30 02:34:36 【问题描述】:使用 Bigquery,我试图删除嵌套的 schmea,如下所示,但无法这样做。谁能告诉我
表格:
FiledName Type Mode
Person RECORD NULLABLE
Person.Name STRING NULLABLE
Person.Add RECORD NULLABLE
Person.Add.line STRING NULLABLE
代码:
ALTER TABLE `<project_id.dataset.table_name` DROP COLUMN 'Person.Add'
我必须删除整条记录。
预期输出:
FiledName Type Mode
Person RECORD NULLABLE
Person.Name STRING NULLABLE
【问题讨论】:
【参考方案1】:您可以使用以下方法 - 它选择除 person.add
之外的所有内容并插入到新表中
create table `project_id.dataset.new_table_name` as
select * replace(
(select as struct person.* except(add)) as person
)
from `project_id.dataset.table_name`;
【讨论】:
小查询。对于人员字段名,如果我有“重复”模式怎么办?我如何删除该场景的嵌套列?你能告诉我吗? 我已投票,我会将问题恢复为原始问题。我将创建一个新的。谢谢 是的,这无疑是可以接受的。【参考方案2】:不幸的是,根据文档,这现在无法完成: https://cloud.google.com/bigquery/docs/reference/standard-sql/data-definition-language#details_14
另一种方法是添加一个包含所需字段的新人员记录列,将数据复制到其中,然后删除旧的人员记录。
【讨论】:
您能简单介绍一下如何实现这一点吗?因为我没有从该记录中获得任何数据。我不想在任何地方复制。我只需要删除。以上是关于如何从 Bigquery Schema 中删除未使用的列名的主要内容,如果未能解决你的问题,请参考以下文章
如何将 BigQuery Struct Schema 字符串转换为 Javascript 对象?