【问题标题】:How to remove unused column names from Bigquery Schema如何从 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

【问题讨论】:

    标签: sql google-bigquery


    【解决方案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

    另一种方法是添加一个包含所需字段的新人员记录列,将数据复制到其中,然后删除旧的人员记录。

    【讨论】:

    • 您能简单介绍一下如何实现这一点吗?因为我没有从该记录中获得任何数据。我不想在任何地方复制。我只需要删除。
    猜你喜欢
    • 2016-05-26
    • 2022-12-19
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 2020-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多