Использование поля UNNESTed в инструкции UPDATE - PullRequest
0 голосов
/ 16 марта 2020

У меня есть таблица 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 не нравится запятая. Я перепробовал много вариантов и не могу найти синтаксис. Также я не могу найти примеры людей, делающих подобные вещи. Есть мысли?

1 Ответ

1 голос
/ 16 марта 2020
UPDATE dataset_id.table_id
SET timestamp = TIMESTAMP_SUB(timestamp, INTERVAL 11 HOUR)
WHERE 'selected_array_value' IN UNNEST(arr)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...