Я пытаюсь использовать DML в BigQuery для обновления вложенных полей доходов. Проблема в том, что я не хочу просто заменять значение дохода, а вместо этого умножаю его на определенный коэффициент.
Для замены я обнаружил:
UPDATE `project.dataset.table`
SET hits = ARRAY(
SELECT AS STRUCT * REPLACE (
(SELECT AS STRUCT transaction.* REPLACE ( 1 AS transactionRevenue)) AS transaction
)
FROM UNNEST(hits) as transactionRevenue
)
WHERE true
Но хотелось бы иметь что-то вроде:
UPDATE `project.dataset.table`
SET hits = ARRAY(
SELECT AS STRUCT * REPLACE (
(SELECT AS STRUCT transaction.* REPLACE ( (transactionRevenue*5) AS transactionRevenue)) AS transaction
)
FROM UNNEST(hits) as transactionRevenue
)
WHERE true
Такой подход не работает. Сообщение об ошибке: Нет соответствующей подписи для оператора * для типов аргументов: STRUCT, INT64. Поддерживаемые подписи: INT64 * INT64; FLOAT64 * FLOAT64; NUMERIC * NUMERIC в [4:48]