ntile mysql 支持吗

ntile mysql 支持吗,第1张

ntile mysql 支持

继续介绍几个序列函数:

NTILE,ROW_NUMBER,RANK和DENSE_RANK

环境信息:

Hive版本为apache-hive-0.14.0-bin

Hadoop版本为hadoop-2.6.0

Tez版本为tez-0.7.0

数据

P088888888888,2016-02-10,1

P088888888888,2016-02-11,3

P088888888888,2016-02-12,1

P088888888888,2016-02-13,9

P088888888888,2016-02-14,3

P088888888888,2016-02-15,12

P088888888888,2016-02-16,3

P066666666666,2016-02-10,6

P066666666666,2016-02-11,2

P066666666666,2016-02-12,1

P066666666666,2016-02-13,9

P066666666666,2016-02-14,2

P066666666666,2016-02-15,20

P066666666666,2016-02-16,2

导入数据到Hive表中:

load data localinpath '/home/hadoop/testhivedata/windows_func.txt' overwrite into tablewindows_func

NTILE

NTILE(n),用于将分组数据按照顺序切分成n片,返回当前切片

NTILE不支持ROWS BETWEEN,比如 NTILE(2) OVER(PARTITION BY polno ORDER BY createtime ROWSBETWEEN 3 PRECEDING AND CURRENT ROW)如果切片不均匀,默认增加第一个切片的分布。

SELECT

polno,

createtime,

pnum,

NTILE(2) OVER(PARTITION BY polno ORDER BY createtime) AS rn1,--分组内将数据分成2片

NTILE(3) OVER(PARTITION BY polno ORDER BY createtime) AS rn2, --分组内将数据分成3片

NTILE(4) OVER(ORDER BY createtime) AS rn3 --将所有数据分成4片

FROM windows_func ORDER BY polno,createtime

在数据拆分有原有的一个单库多表关联查询 *** 作,往往会转变为一个跨库的join查询 *** 作,而现在的针对mysql的daas方案很难真正的支撑到这种类型的 *** 作,即使能够支持估计也很难真正达到一个高性能。在我们原来的设想中这些问题都简单的转化为应用层去解决,这务必是增加了一个应用层开发的复杂度和难度。而针对这种情况最好的方法是构建一个统一的领域服务层来解决,即最终的上层或顶层是关注的领域服务能力,虽然跨库的问题在DaaS层很难解决,但是在领域服务层却比较容易定制开发相应的服务来解决。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/6117463.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-15
下一篇 2023-03-15

发表评论

登录后才能评论

评论列表(0条)

保存