【问题标题】:How to Delete rows from Structure in bigquery如何从 bigquery 中的结构中删除行
【发布时间】:2020-08-14 17:36:43
【问题描述】:

你能帮我解决我的问题吗,我是 Bigquery 的新手。

我有一个包含多个“记录”类型字段的表。我需要从其中一条记录中删除一行。考虑下面的例子:

id         date     subid.id    subid.flag
1234    1/4/2020      1234-1        1
                      1234-2        1
                      1234-3        1
                      1234-4       -1
5678    1/5/2020      5678-1        1
                      5678-2        1

我的上述要求是从带有标志-1的结构子ID中删除行。做这个的最好方式是什么 ?请帮忙。

sample data

【问题讨论】:

  • 这能回答你的问题吗? Google BigQuery Delete Rows?
  • 您好 Digvijay,感谢您的回复。我不想删除整行,但我想从结构中删除某些行并保持该行中的剩余数据完好无损。 @Gordon Linoff 给出的答案对我来说很有用。

标签: sql google-bigquery unnest


【解决方案1】:

以下是 BigQuery 标准 SQL

#standardSQL
SELECT * EXCEPT(subid),
  ARRAY(
    SELECT AS VALUE subid 
    FROM t.subid  WITH OFFSET
    WHERE flag != -1 
    ORDER BY OFFSET 
  ) AS subid
FROM `project.dataset.table` t

【讨论】:

    【解决方案2】:

    您可以取消嵌套和重新聚合。如果我理解正确:

    select id, date,
           (select array_agg(subid order by n)
            from unnest(t.subid) subid with offset as n
            where subid.flag <> -1
           ) as subid
    from t;
    

    【讨论】:

      猜你喜欢
      • 2018-07-18
      • 1970-01-01
      • 2021-07-02
      • 1970-01-01
      • 2016-08-09
      • 2017-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多