【问题标题】:How to update a nested record to a static value如何将嵌套记录更新为静态值
【发布时间】:2020-02-25 07:00:29
【问题描述】:

我有嵌套数据,想更新一个数组键的值,该数组实际上是数组格式user_properties['first_open_time']['int_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"
            }
          }
        ]
      }
    ]

【问题讨论】:

  • 请参阅此Stackoverflow 帖子。
  • 感谢您的建议,但我正在寻找一个更简单的解释。这篇文章中包含的主题太多。我对 BigQuery 中的 DML 命令非常陌生。

标签: google-bigquery


【解决方案1】:

你基本上需要重构结构,在这个过程中改变你想要改变的东西:

-- 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

【讨论】:

    猜你喜欢
    • 2019-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 2021-10-23
    • 2017-05-29
    • 1970-01-01
    相关资源
    最近更新 更多