问题1:大数据计算MaxCompute取分位数的函数percentile,看了下文档 https://help.aliyun.com/zh/maxcompute/user-guide/percentile?spm=a2c4g.11186623.0.i2
求分位数的列只能是bigint类型吗?double类型可以不
问题2:话说为啥double类型的不支持呢?求解惑,比如1.5 2.3 5.8 这三个数,我取个0.5中位数,不就是2.3吗?
在MaxCompute中,使用percentile
函数时,求分位数的列只能是数值类型的列。这是因为percentile
函数用于计算数值列中的分位数值,而非数值列无法进行计算。
以下是一些使用percentile
函数的示例:
-- 假设有一个表名为my_table,包含了一个数值列value
-- 求value列的中位数(即50%分位数)
SELECT percentile(value, 0.5) FROM my_table;
-- 求value列的上四分位数(即75%分位数)
SELECT percentile(value, 0.75) FROM my_table;
在上述示例中,percentile
函数的第一个参数是要计算分位数的数值列,第二个参数是对应的分位数值(介于0到1之间)。你可以根据需要将其替换为具体的数值或变量。
请确保在使用percentile
函数时,选择的列是数值类型,并且数据是有效的数值数据。如果选择的列不是数值类型,或者包含了非数值数据,则会导致计算失败或产生不准确的结果。
回答1:参数说明指明了colname:必填。值为BIGINT类型的列。double的我理解不行,可以用cast转换一下
https://help.aliyun.com/zh/maxcompute/user-guide/type-conversions?spm=a2c4g.11186623.0.i19#section-gvj-1jl-vdb
回答2:double类型会有精度问题存在
https://help.aliyun.com/zh/maxcompute/use-cases/fix-the-precision-issue-of-the-round-function?spm=a2c4g.11186623.0.i27,此回答整理自钉群“MaxCompute开发者社区2群”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
MaxCompute(原ODPS)是一项面向分析的大数据计算服务,它以Serverless架构提供快速、全托管的在线数据仓库服务,消除传统数据平台在资源扩展性和弹性方面的限制,最小化用户运维投入,使您经济并高效的分析处理海量数据。