数据排序

  • 文檔創建者: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後關閉

    獲取幫助
    線上支援
    獲取專業技術支援,快速幫助您解決問題
    工作日9:00-12:00,13:30-17:30在线
    頁面反饋
    針對當前網頁的建議、問題反饋
    售前咨詢
    業務咨詢
    電話:0933-790886或 0989-092892
    郵箱:taiwan@fanruan.com
    頁面反饋
    *問題分類
    不能為空
    問題描述
    0/1000
    不能為空

    反馈已提交

    网络繁忙