Как обновить строки в BigQuery на основе значения в повторяющемся поле - PullRequest
0 голосов
/ 15 января 2020

Мне нужно обновить значения в повторяющемся поле для определенных строк в таблице BigQuery. Обновляемые строки выбираются на основе значений в повторяющемся поле. Я не могу понять, как сделать это. Например, допустим, у меня есть такая схема:

move_id: integer
color: string
moved_quants: repeated
moved_quants.quantity = integer
moved_quants.value = float

И следующие данные:

enter image description here

Моя цель чтобы обновить значение move_quants.value до 0,6 * количество для любой строки, которая содержит хотя бы один Move_quants.value = 0. Раньше мне приходилось выполнять ту же задачу на основе цвета, и это было относительно просто:

UPDATE
  `testing`
SET
  moved_quants = ARRAY(
    SELECT AS STRUCT * REPLACE(0.6 * quantity AS value)
    FROM
    UNNEST(moved_quants)
  )
WHERE color = 'red'

Однако теперь мне нужно обновить строки, в которых есть хотя бы один moved_quants.value = 0, и я не могу понять, как это сделать. Кто-нибудь может помочь?

1 Ответ

2 голосов
/ 15 января 2020

Думаю, я понял это:

UPDATE
  `testing`
SET
  moved_quants = ARRAY(
    SELECT AS STRUCT * REPLACE(0.6 * quantity AS value)
    FROM
    UNNEST(moved_quants)
  )
WHERE
  ARRAY_LENGTH(ARRAY(
    (SELECT AS STRUCT * FROM UNNEST(moved_quants) WHERE inventory_value = 0)
  )) > 0

Это верно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...