小编Sha*_*ner的帖子

更新 Snowflake 中的混合嵌套对象

我有一个雪花表,其中有一个变体列 ( raw)。

该表中的每一行都是复杂的(字典和数组)并且是嵌套的(多个层次结构)。

我想要做的是能够更新某个数组中的特定项目。

使用示例会更容易理解它,因此将其视为表中的一行:

{
  "id": "1234"
  "x_id": [
    {
      "y_id": "790437306684007491",
      "y_state": "some_state"
    }
  ],
  "comments": {
    "1": [
      {
        "comment_id": "bb288743-3b73-4423-b76b-f26b8c37f7d4",
        "comment_timestamp": "2021-02-10 14:53:25.667564",
        "comment_text": "Hey"
      },
      {
        "comment_id": "7378f332-93c4-4522-9f73-3b6a8a9425ce",
        "comment_text": "You",
        "comment_timestamp": "2021-02-10 14:54:21.337046"
      }
    ],
    "2": [
      {
        "comment_id": "9dd0cbb0-df80-4b0f-b399-9ee153161462",
        "comment_text": "Hello",
        "comment_timestamp": "2021-02-09 09:26:17.987386"
      },
      {
        "comment_id": "1a3bf1e8-82b5-4a9c-a959-a1da806ce7e3",
        "comment_text": "World",
        "comment_timestamp": "2021-02-09 09:28:32.144175"
      }
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

我想要的是更新特定评论的评论文本。

我知道我可以以编程方式更新整个 JSON 并使用 更新整个对象PARSE_JSON,但这种方法还不够,因为可能有其他更新会覆盖其他注释,因此这种方法将失败(因为这些更新将相互覆盖)。

首先,我尝试了天真的方法(我知道这行不通,但我必须尝试):

update table1
set …
Run Code Online (Sandbox Code Playgroud)

sqlalchemy variant snowflake-schema snowflake-cloud-data-platform

5
推荐指数
1
解决办法
3217
查看次数