开发者社区 > 大数据与机器学习 > 大数据开发治理DataWorks > 正文

DataWorks这种json字符串怎么按weight倒序排列,然后取前三的bbb值?

DataWorks求助:{"aaaa":[{"bbb":1,"weight":10},{"bbb":2,"weight":2},{"bbb":3,"weight":5},{"bbb":4,"weight":3}]} 这种json字符串怎么按weight倒序排列,然后取前三的bbb值?

展开
收起
真的很搞笑 2023-09-06 14:20:46 67 0
1 条回答
写回答
取消 提交回答
  • 在DataWorks中,您可以使用SQL语句来处理JSON字符串并按照weight倒序排列,并取前三个bbb值。具体操作步骤如下:

    在DataWorks控制台的数据开发模块中,创建一个ODPS SQL节点。
    在SQL节点中,使用如下SQL语句来处理JSON字符串:

      bbb
    FROM
      (
        SELECT 
          bbb
        FROM
          (
            SELECT
              parse_json('{"aaaa":[{"bbb":1,"weight":10},{"bbb":2,"weight":2},{"bbb":3,"weight":5},{"bbb":4,"weight":3}]}') AS json_obj
          ) t
          LATERAL VIEW explode(json_tuple(json_obj['aaaa'], 'bbb', 'weight')) t1 AS bbb, weight
          ORDER BY weight DESC
      ) t2
    LIMIT 3;
    

    这个SQL语句的执行过程如下:

    首先,使用parse_json函数将JSON字符串解析为json对象。
    然后,使用json_tuple函数将json对象中的数组字段'aaaa'拆分为多行,每行包含bbb和weight两个字段。
    接着,按照weight字段倒序排列。
    最后,使用LIMIT关键字取前三个bbb值。
    执行完这个SQL语句后,您将得到按照weight倒序排列的前三个bbb值。

    如果您需要将结果保存到目标表中或进行其他操作,可以在SQL语句中添加相应的语句。希望以上信息能对您有所帮助。如果您有其他问题,请随时提问。

    2023-09-25 11:25:54
    赞同 展开评论 打赏

DataWorks基于MaxCompute/Hologres/EMR/CDP等大数据引擎,为数据仓库/数据湖/湖仓一体等解决方案提供统一的全链路大数据开发治理平台。

相关产品

  • 大数据开发治理平台 DataWorks
  • 热门讨论

    热门文章

    相关电子书

    更多
    DataWorks数据集成实时同步最佳实践(含内测邀请)-2020飞天大数据平台实战应用第一季 立即下载
    DataWorks商业化资源组省钱秘籍-2020飞天大数据平台实战应用第一季 立即下载
    基于DataWorks数据服务构建疫情大屏-2020飞天大数据平台实战应用第一季 立即下载