Sql 如何在bigquery中从结构中删除行

Sql 如何在bigquery中从结构中删除行,sql,google-bigquery,unnest,Sql,Google Bigquery,Unnest,你能帮我提个问题吗,我对Bigquery还不熟悉 我有一个包含多个记录类型字段的表。我需要从一条记录中删除一行。下面的例子如下: id date subid.id subid.flag 1234 1/4/2020 1234-1 1 1234-2 1 1234-3 1 1234-4

你能帮我提个问题吗,我对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
我上面的要求是从结构subid中删除带有标志-1的行。最好的方法是什么?请帮忙


你可以放松和重新聚集。如果我理解正确:

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;

下面是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

这回答了你的问题吗?嗨,Digvijay,谢谢你的回复。我不想删除整行,但我想从结构中删除某些行,并保持该行的剩余数据不变。@Gordon Linoff给出的答案对我的情况很有用。