Это способ запроса так, как вы хотите
WITH
data AS (
SELECT 1 as id, 'Data A' as name,
[
STRUCT(1586333435 as timestamp, 1 as id, 'Hello World' as comment),
STRUCT(1586333635 as timestamp, 2 as id, 'Hello World 2' as comment)
] AS comments
)
SELECT id, name,
(
SELECT ARRAY_AGG(STRUCT(timestamp, id, CASE WHEN id = 1 THEN 'Hello World Now' ELSE comment END as comment))
FROM UNNEST(comments)
)
FROM data
Таким образом, ваше заявление об обновлении должно выглядеть примерно так:
UPDATE `projectA.dataSetA.Post`
SET comments = (
SELECT ARRAY_AGG(STRUCT(timestamp, id, CASE WHEN id = 1 THEN 'Hello World Now' ELSE comment END as comment))
FROM UNNEST(comments)
)
WHERE id=1;
Будьте осторожны с идентификаторами. Идентификатор в операторе where принадлежит точке данных, id в случае, когда инструкция принадлежит комментарию, который должен быть отредактирован.