Как удалить строки из структуры в bigquery - PullRequest
0 голосов
/ 30 апреля 2020

Не могли бы вы помочь мне с моим вопросом, я новичок в 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. Каков наилучший способ сделать это? Пожалуйста, помогите.

образец данных

Ответы [ 2 ]

0 голосов
/ 30 апреля 2020

Ниже для BigQuery Standard 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
0 голосов
/ 30 апреля 2020

Вы можете снять и повторно собрать. Если я правильно понимаю:

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;
...