У меня проблема с синтаксисом BigQuery, на которой я немного застрял. У меня есть запись в таблице, которая содержит несколько пар значений ключа в виде массива, и я хотел бы обновить только одну указанную строку c в значениях, когда ключом является определенное значение.
Вот запись
[
{
"event_params": [
{
"key": "programType",
"value": {
"string_value": "custom",
"int_value": null,
"float_value": null,
"double_value": null
}
},
{
"key": "firebase_event_origin",
"value": {
"string_value": "app",
"int_value": null,
"float_value": null,
"double_value": null
}
},
{
"key": "firebase_screen_id",
"value": {
"string_value": null,
"int_value": "5",
"float_value": null,
"double_value": null
}
},
{
"key": "programName",
"value": {
"string_value": "overwrite_me",
"int_value": null,
"float_value": null,
"double_value": null
}
}
]
}
]
, и я хотел бы оставить все как есть, кроме случаев, когда "key" = "programName". Я хочу перезаписать string_value "overwrite_me" новой строкой. «анонимный». В общем случае string_value - это произвольная строка, и я просто хочу перезаписать ее тем же значением.
На основе нескольких ответов здесь и здесь Я пробовал следующий запрос (и различные его варианты)
SET
event_params = ARRAY(
SELECT AS STRUCT * REPLACE(
CASE WHEN event_param.key = 'programName' THEN
((SELECT AS STRUCT value.* REPLACE('anonymous' AS string_value)) AS value)
END
)
FROM UNNEST(event_params) as event_param
)
, но BigQuqery всегда выдает мне синтаксические ошибки, в частности, «Синтаксическая ошибка: ожидается»), но получает ключевое слово AS в [9:73] ». Я не совсем уверен, что я делаю неправильно, и я совершенно озадачен.