NUMBER,
NUMBER(10),
NUMBER(10,2) oracle上述数据类型对应到大数据计算MaxCompute时 不损失精度的情况下具体类型分别对应什么?文档上不是很明确,是这三个吗?decimal(38,18)
decimal(10,0)
decimal(10,2)
在Oracle中,NUMBER(10)表示一个精度为10的十进制数,而在MaxCompute中,decimal(38,18)表示一个精度为38的十进制数。因此,Oracle中的NUMBER(10)可以映射到MaxCompute中的decimal(38,18)。
对于NUMBER(10,2),它表示一个精度为10的十进制数,其中小数部分有2位。在MaxCompute中,decimal(10,2)表示一个精度为10的十进制数,其中小数部分有2位。因此,Oracle中的NUMBER(10,2)可以映射到MaxCompute中的decimal(10,2)。
至于NUMBER(10,0),它表示一个精度为10的十进制数,其中没有小数部分。在MaxCompute中,decimal(10,0)也表示一个精度为10的十进制数,其中没有小数部分。因此,Oracle中的NUMBER(10,0)可以映射到MaxCompute中的decimal(10,0)。
是,看下这里。是decimal 2.0
https://help.aliyun.com/zh/maxcompute/user-guide/data-type-mappings?spm=a2c4g.11174283.0.i1 ,此回答整理自钉群“MaxCompute开发者社区2群”
在阿里云MaxCompute中,为了保持精度不损失,对于Oracle数据库中的NUMBER、NUMBER(10)和NUMBER(10,2)数据类型,我们可以对应映射到MaxCompute的DECIMAL类型,但需要注意MaxCompute对于DECIMAL类型的精度和刻度的具体规定。
Oracle的NUMBER类型在不指定精度和刻度时,理论上可以存储几乎无限大的数值和任意精度的小数。然而,在MaxCompute中,DECIMAL类型是有明确的精度和刻度限制的。
Oracle的NUMBER相当于可以存储任意大小和精度的数字,映射到MaxCompute时,可以选择DECIMAL(38,18)来尽可能保留较大的数值和较高的小数位精度,但具体映射取决于业务数据的实际需求。
Oracle的NUMBER(10),默认无小数点,映射到MaxCompute时,可以对应DECIMAL(10,0),用来存储最多10位的整数。
Oracle的NUMBER(10,2),表示最多10位数,其中2位是小数部分,映射到MaxCompute时,可以对应DECIMAL(10,2),用来存储最多8位整数和2位小数的数值。
因此,对应关系如下:
NUMBER
-> MaxCompute DECIMAL(38,18)
(或根据实际数据需求选择合适的DECIMAL类型)NUMBER(10)
-> MaxCompute DECIMAL(10,0)
NUMBER(10,2)
-> MaxCompute DECIMAL(10,2)
在MaxCompute中,DECIMAL类型的最大精度为38,最大刻度为18,所以在设计表结构时,务必确保DECIMAL类型的定义符合MaxCompute的规定,并能满足实际业务数据的存储需求。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
MaxCompute(原ODPS)是一项面向分析的大数据计算服务,它以Serverless架构提供快速、全托管的在线数据仓库服务,消除传统数据平台在资源扩展性和弹性方面的限制,最小化用户运维投入,使您经济并高效的分析处理海量数据。