如何在redshift上取消嵌套json字符串数组[重复]

Posted

技术标签:

【中文标题】如何在redshift上取消嵌套json字符串数组[重复]【英文标题】:how to unnest a json string array on redshift [duplicate] 【发布时间】:2020-07-03 02:05:01 【问题描述】:

我在 Redshift 表中有一个称为流派的字段。它以字符串的形式存储,而不是以 JSON 数组的形式存储,因为 redshift 没有提供这种功能。

 ["id": 27, "name": "Horror", "id": 878, "name": "Science Fiction"]

我想提取元素 - 'id' 和 'name' 并将其转储到另一个表格中,格式如下。我该怎么做?

【问题讨论】:

这可能会有所帮助:torsten.io/stdout/expanding-json-arrays-to-rows 这个问题已经在这里回答了***.com/questions/30195760/… 【参考方案1】:

@botchniaque,@mangusta

感谢大家的帮助,我就是这样做的

WITH exploded_array AS (
    SELECT 
      id AS movie_id,
      json_extract_path_text( JSON_EXTRACT_ARRAY_ELEMENT_TEXT(genres, seq.i) , 'id' ) AS id ,
      json_extract_path_text( JSON_EXTRACT_ARRAY_ELEMENT_TEXT(genres, seq.i) , 'name' ) AS name
    FROM movies_staging, seq_0_to_100 AS seq
  
    WHERE seq.i < JSON_ARRAY_LENGTH(genres)
  )
  
SELECT *
FROM exploded_array;

【讨论】:

以上是关于如何在redshift上取消嵌套json字符串数组[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Amazon Redshift 的列中取消嵌套/展开/展平逗号分隔值?

在 BigQuery 中取消嵌套 JSON 字符串化数组

如何在 Presto 中交叉加入取消嵌套 JSON 数组

如何在 BigQuery 标准 SQL 中取消嵌套多个数组

Redshift Postgresql - 如何解析嵌套的 JSON

如何在 BigQuery 中取消嵌套多个数组?