У меня есть таблица BigQuery с некоторыми данными. Мне нужно обновить некоторые строки, которые соответствуют значению в массиве. Мне не нужно обновлять массив.
Таблица выглядит следующим образом:
+-------------------------+----------------------+
| timestamp | arr |
+-------------------------+----------------------+
| 2020-03-16 23:00:00 UTC | not_selected |
| | selected_array_value |
| 2020-03-16 22:00:00 UTC | selected_array_value |
| 2020-03-16 21:00:00 UTC | not_selected |
| 2020-03-16 20:00:00 UTC | selected_array_value |
| | not_selected |
| 2020-03-16 19:00:00 UTC | |
+-------------------------+----------------------+
Мне нужно изменить временную метку для некоторых строк, где массив содержит значение примерно так:
+-------------------------+----------------------+
| timestamp | arr |
+-------------------------+----------------------+
| 2020-03-16 12:00:00 UTC | not_selected |
| | selected_array_value |
| 2020-03-16 11:00:00 UTC | selected_array_value |
| 2020-03-16 21:00:00 UTC | not_selected |
| 2020-03-16 09:00:00 UTC | selected_array_value |
| | not_selected |
| 2020-03-16 19:00:00 UTC | |
+-------------------------+----------------------+
Я могу выбрать элементы с помощью
SELECT * FROM dataset_id.table_id, UNNEST(arr) as array_value
WHERE array_value = 'selected_array_value'
Что мне нужно, это что-то вроде
UPDATE dataset_id.table_id, UNNEST(arr) as array_value
SET timestamp = TIMESTAMP_SUB(timestamp, INTERVAL 11 HOUR)
WHERE array_value = 'selected_array_value'
Когда я пытаюсь это сделать, запрос не проверяется, так как UPDATE не нравится запятая. Я перепробовал много вариантов и не могу найти синтаксис. Также я не могу найти примеры людей, делающих подобные вещи. Есть мысли?