反馈已提交

网络繁忙

数据排序

  • 文档创建者:Roxy
  • 历史版本:1
  • 最近更新:Roxy 于 2023-06-12
  • 1. 概述

    在进行数据处理时,经常需要对数据进行排序,本文来介绍如何在 FineDataLink 中使用 Spark SQL 进行排序。

    2. 全局排序

    使用「Spark SQL」 中的 Order by 语句对查询结果集执行一个全局排序,对于大数据量的数据集,这个过程将消耗很大的时间来执行。

    desc:降序。 

    asc:升序。 

    示例 1:将 NEW_SALESDETAIL 数据中的销售额按照升序排列。

    select * from
    NEW_SALESDETAIL
    order by `销售额`  ASC 

    注:表名为上游节点的名称;语句不能直接复制,例如「NEW_SALESDETAIL 」需点击输入源生成。

    预览数据即可看到升序排列的数据,如下图所示:

    示例 2:将 NEW_SALESDETAIL 数据中的销售额按照降序排列。

    select * from
    NEW_SALESDETAIL
    order by `销售额`  DESC 

    注:表名为上游节点的名称;语句不能直接复制,例如「NEW_SALESDETAIL 」需点击输入源生成。

    预览即可看到降序排列的数据,如下图所示:

    3. 局部排序

    3.1 SORT BY 和 DISTRIBUTE BY 

    局部排序一般需要 SORT BY 和 DISTRIBUTE BY 结合使用。

    SORT BY 执行局部排序,每个数据是有序的,但是不能保证所有的数据是有序的,除非只有一个组别,好处是执行了局部排序之后可以为接下去的全局排序提高不少的效率。 

    ditribute by 是按照组别形式进行排序。ditribute by 的功能有点类似 group by。 

    示例:将 NEW_SALESDETAIL 数据中的销售额按照店号分组进行升序排列。

    select * from
    NEW_SALESDETAIL
    distribute by `店号`  sort by  `店号`,`销售额`   ASC

     店号升序排列,销售额按照店号组内升序排列,结果如下图所示:

    3.2 CLUSTER BY

    cluster by 的功能就是 distribute by 和 sort by 相结合。 

    示例 1:

    select * from

    NEW_SALESDETAIL

    distribute by `店号`  sort by  `店号`   ASC   

    示例 2:

    select * from

    NEW_SALESDETAIL

    cluster by `店号`

    注:示例 1 和示例 2 的 SQL 语句是等价的,它们返回的结果集也是一样的。

    结果即升序排列店号,如下图所示:


    附件列表


    主题: 数据开发-定时任务
    • 有帮助
    • 没帮助
    • 只是浏览
    • 评价文档,奖励 1 ~ 100 随机 F 豆!

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭



    AI

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持