Как обновить вложенную запись до значения c - PullRequest
0 голосов
/ 25 февраля 2020

Я вложил данные и хочу обновить значение ключа массива, который фактически находится в формате массива user_properties['first_open_time']['int_value']. Я хочу изменить это значение на stati c value -1582243200000 ie .-. Пример структуры данных выглядит следующим образом:

    [
      {
        "user_properties": [
          {
            "key": "ga_session_id",
            "value": {
              "string_value": null,
              "int_value": "1582306435",
              "float_value": null,
              "double_value": null,
              "set_timestamp_micros": "1582306435527000"
            }
          },
          {
            "key": "ga_session_number",
            "value": {
              "string_value": null,
              "int_value": "1",
              "float_value": null,
              "double_value": null,
              "set_timestamp_micros": "1582306435527000"
            }
          },
          {
            "key": "first_open_time",
            "value": {
              "string_value": null,
              "int_value": "1582308000000",
              "float_value": null,
              "double_value": null,
              "set_timestamp_micros": "1582306432489000"
            }
          }
        ]
      }
    ]

1 Ответ

0 голосов
/ 27 февраля 2020

Вам необходимо восстановить структуру, изменив то, что вы хотите изменить в процессе:

-- CREATE TABLE `temp.firebase_sample`
-- AS (
-- SELECT * FROM `bingo-blast-174dd.analytics_151321511.events_20200225`
-- );

UPDATE `temp.firebase_sample` a
SET user_properties = (
  SELECT
    ARRAY_AGG(STRUCT(key,
        STRUCT(value.string_value,
          IF(key='first_open_time', 1582243200000, value.int_value),
          value.float_value,
          value.double_value,
          value.set_timestamp_micros)))
  FROM UNNEST(a.user_properties) x)
WHERE TRUE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...