DataWorks在建表语句时
create table not if exists tablename(
sr_amt decimal comment '收入金额');这种写法,精确到小数点几位?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在DataWorks中,使用CREATE TABLE
语句创建表时,如果定义字段类型为DECIMAL
,但未明确指定精度和小数位数(如DECIMAL(p, s)
),则默认情况下,DECIMAL
类型的精度和小数位数会采用系统默认值。根据MaxCompute的SQL语法规范,默认的DECIMAL
类型通常为DECIMAL(10, 0)
,即总精度为10位,小数位数为0位。
因此,在以下建表语句中:
CREATE TABLE IF NOT EXISTS tablename (
sr_amt DECIMAL COMMENT '收入金额'
);
字段sr_amt
的默认精度为DECIMAL(10, 0)
,这意味着它只能存储整数值,无法精确到小数点后位数。
若希望字段能够支持小数点后的精确位数,则需要显式指定DECIMAL
的精度和小数位数。例如: - 若要支持最多18位数字,其中小数点后保留2位,可以定义为DECIMAL(18, 2)
。 - 示例语句如下:
CREATE TABLE IF NOT EXISTS tablename (
sr_amt DECIMAL(18, 2) COMMENT '收入金额'
);
在此示例中,sr_amt
字段可以存储最多18位数字,其中小数点后保留2位。
DECIMAL
的精度和小数位数,系统将使用默认值DECIMAL(10, 0)
,这可能导致数据存储不符合预期。DECIMAL
的精度和小数位数,以确保数据存储的准确性和一致性。如果您需要进一步确认默认行为或调整精度,请参考具体的业务场景和数据要求进行配置。
DataWorks基于MaxCompute/Hologres/EMR/CDP等大数据引擎,为数据仓库/数据湖/湖仓一体等解决方案提供统一的全链路大数据开发治理平台。