ODPS-SDK调用排坑笔记(2)

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 业务上需要通过对二级类目的聚合,输出每个类目下排名30天销量排名TOP100的商品信息。抽象到SQL层面就是:通过对X字段的分组,获取每个分组前N条数据。

一、业务背景

业务上需要通过对二级类目的聚合,输出每个类目下排名30天销量排名TOP100的商品信息。抽象到SQL层面就是:通过对X字段的分组,获取每个分组前N条数据。

二、原始方案

说实话,这个方法有些low,但起码能实现功能。使用存储过程,思路如下:

1.创建一张临时表先放着:create temp_top_by_catename2

2.查询所有的二级类目: select distict cate_level2_name from xxx where ds=max_pt('xxx')

3.将cate_level2_name存储在变量数组中catename[];

4.游标遍历catename[];select * from xxx as a where a.cate_level2_name=catename order by sales_count_30 desc limit 100

将每个二级类目的查询结果insert到temp_top_by_catename2表
方案缺点:
(1)时间成本太高,因为有多少个catename分组,就要查询N次表,更改插入N次表。跑了30小时才插了<100个类目分组
(2)另外表基数量很大,每次查询计划的cost值很高。
(3)如果SQL有中断,数据的完整性很难保证

三、优化方案

基于上述方案的种种不爽,问自己一个问题,能否一条语句可以解决Group+Order+topN输出?于是开始了度娘之旅,但都是些嵌套+子查询的方式曲线救国,并达不到想要的效果。在试,从ODPS的函数着手,翻了一遍返现只有一个神奇API貌似像,名字给出:“row_num”.先普及下这个函数的定义:

语法:row_number() over (partition by 分组字段 order by 排序字段 desc ) as topNum

拆解:

(1)partition by :按照某一字段进行分组

(2)order by:分组之后按照该字段进行升序或降序排列

(3)topNum:自定义的名字,就是后面我们要用到的TOPN,同步数据时可设置成变量,动态调整

四、源码
image
五、性能结果
image
自此 over,知识有限,大家如有更好的方案欢迎私聊。

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
目录
相关文章
|
1月前
|
大数据 网络安全 数据安全/隐私保护
大数据-03-Hadoop集群 免密登录 超详细 3节点云 分发脚本 踩坑笔记 SSH免密 集群搭建(二)
大数据-03-Hadoop集群 免密登录 超详细 3节点云 分发脚本 踩坑笔记 SSH免密 集群搭建(二)
116 5
|
1月前
|
XML 大数据 网络安全
大数据-03-Hadoop集群 免密登录 超详细 3节点云 分发脚本 踩坑笔记 SSH免密 集群搭建(一)
大数据-03-Hadoop集群 免密登录 超详细 3节点云 分发脚本 踩坑笔记 SSH免密 集群搭建(一)
68 4
|
6月前
|
存储 缓存 NoSQL
大数据 | HDFS 元数据持久化笔记
大数据 | HDFS 元数据持久化笔记
175 0
|
6月前
|
存储 分布式计算 大数据
大数据笔记 | HDFS 常用操作命令
大数据笔记 | HDFS 常用操作命令
262 0
|
6月前
|
大数据 Linux 网络安全
大数据笔记 | 无密钥登录操作步骤
大数据笔记 | 无密钥登录操作步骤
74 0
|
SQL 分布式计算 NoSQL
第14章 大数据管理——复习笔记
第14章 大数据管理——复习笔记
|
分布式计算 Hadoop 大数据
大数据 | Hadoop HA高可用搭建保姆级教程(大二学长的万字笔记)(下)
大数据 | Hadoop HA高可用搭建保姆级教程(大二学长的万字笔记)(下)
243 0
|
分布式计算 运维 Hadoop
大数据 | Hadoop HA高可用搭建保姆级教程(大二学长的万字笔记)(上)
大数据 | Hadoop HA高可用搭建保姆级教程(大二学长的万字笔记)(上)
475 0
|
存储 分布式计算 大数据
六、【计算】大数据Shuffle原理与实践(下) | 青训营笔记
六、【计算】大数据Shuffle原理与实践(下) | 青训营笔记
六、【计算】大数据Shuffle原理与实践(下) | 青训营笔记
|
SQL 大数据
【8-16大数据笔记】操作表DML相关语句
【8-16大数据笔记】操作表DML相关语句
【8-16大数据笔记】操作表DML相关语句