开发者社区 > 大数据与机器学习 > 大数据计算 MaxCompute > 正文

,如果我想得到 1,1,[1, 2, [3, 2, 6]]1,2,[2, 3, [4, 3, 1]]

问题一:lQLPJxJzw16UdYLNAbTNBpqw_GJyFq0099oEqmZL78AQAA_1690_436.png
,如果我想得到 1,1,[1, 2, [3, 2, 6]]1,2,[2, 3, [4, 3, 1]]应该怎么办呢?
就是我想json数组里面这两个字段解析成2条记录的两列
lQLPJwMs78-_4MLNAkPNA0KwP5_sFReGxagEqma2XADGAA_834_579.png

问题二:最后两种不对啊我需要的返回是
1,1,[1, 2, [3, 2, 6]]
1,2,[2, 3, [4, 3, 1]]
我要返回两条记录,后面两种方式,返回的也只是1条记录

展开
收起
游客wznnneie2rvz6 2023-07-21 18:00:12 95 0
2 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    可以使用 MaxCompute SQL 中的 json_tuple() 函数和 Lateral View 语法来解析多层嵌套的 JSON 数据。具体的语法如下:

    sql
    Copy
    SELECT sc.Id, q.item, q.item1
    FROM school sc
    LATERAL VIEW json_tuple(sc.json, 'class1.Student[].studentId', 'class1.Student[0].scoreRankIn3Year', 'class1.Student[1].StudentInfo') q
    AS item, item1, item2;
    在这个示例中,json_tuple() 函数的第一个参数是要解析的 JSON 字段,后面的参数是要获取的 JSON 对象的键名。对于多层嵌套的 JSON 数据,可以使用 [
    ] 和 [0] 等语法来访问数组和对象中的元素。使用 Lateral View 语法将解析后的数据展开为多行,然后再通过 select 子句选择需要的列。

    需要注意的是,

    2023-07-29 10:26:56
    赞同 展开评论 打赏
  • 如果你想将 1, 1, [1, 2, [3, 2, 6]]1, 2, [2, 3, [4, 3, 1]] 这两个字段解析成两条记录的两列,你可以使用 MaxCompute 的内置函数 json_tuple 进行 JSON 字段的解析。

    以下是一个示例 SQL 查询,展示如何使用 json_tuple 解析 JSON 字段:

    SELECT
        json_tuple(json_column, 'field1', 'field2', 'field3') AS (col1, col2, col3)
    FROM
        your_table;
    

    假设 json_column 是包含你提到的两个 JSON 字段的列名,your_table 是你要查询的表名。在这个示例中,我们将 JSON 字段分别命名为 field1field2field3,并将它们解析到 col1col2col3 这三个新的列中。

    执行这个查询后,你将得到两条记录,每一条记录有三个列,其中第一个列是 1,第二个列是 12,第三个列是 [1, 2, [3, 2, 6]][2, 3, [4, 3, 1]]

    2023-07-28 20:58:30
    赞同 展开评论 打赏

MaxCompute(原ODPS)是一项面向分析的大数据计算服务,它以Serverless架构提供快速、全托管的在线数据仓库服务,消除传统数据平台在资源扩展性和弹性方面的限制,最小化用户运维投入,使您经济并高效的分析处理海量数据。

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载