如何从 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 中的句子中删除 \n����

Bigquery如何从数据流中删除记录

如何将 BigQuery Struct Schema 字符串转换为 Javascript 对象?

我们如何识别在 bigquery information_schema 中使用 Tableau 运行的大查询查询

从 BigQuery 中的数组中删除重复项

从 python 字典自动生成 BigQuery 架构