Amazon Redshift 错误地四舍五入 Numeric(9,4) 值
Posted
技术标签:
【中文标题】Amazon Redshift 错误地四舍五入 Numeric(9,4) 值【英文标题】:Amazon Redshift incorrectly rounding up Numeric(9,4) value 【发布时间】:2017-07-11 07:40:32 【问题描述】:我试图加载数据,例如49.9999 进入 numeric(9,4) 列。如何通过复制命令将值四舍五入到 50.00。
复制命令示例:
COPY <table_name> (PRICE_BAND_CODE,PRICE_BAND_DESC,PROD_LEVEL1_CODE,PRICE_BAND_LOWER,PRICE_BAND_UPPER,PRICE_BAND_SEQ)
FROM '<s3 path>/PriceBandDIM.gz'
credentials 'aws_access_key_id=xxxxxxxxxxxx;aws_secret_access_key=xxxxxxxxxxxxxxxx'
delimiter '|'
IGNOREBLANKLINES EMPTYASNULL GZIP NULL AS '\000'
ROUNDEC BLANKSASNULL TRIMBLANKS REMOVEQUOTES
STATUPDATE ON IGNOREHEADER 0;
PRICE_BAND_LOWER
和 PRICE_BAND_UPPER
的数据类型为 numeric(9,4),但在处理数据时会将数据四舍五入。
请告诉我如何处理这种情况。
【问题讨论】:
排除ROUNDEC
参数是否正常?
【参考方案1】:
ROUNDEC 参数必须取消。当输入值的小数位数大于列的小数位数时,向上舍入数值。默认情况下,COPY 会在必要时截断值以适应列的比例。
COPY <table_name> (PRICE_BAND_CODE,PRICE_BAND_DESC,PROD_LEVEL1_CODE,PRICE_BAND_LOWER,PRICE_BAND_UPPER,PRICE_BAND_SEQ)
FROM '<s3 path>/PriceBandDIM.gz'
credentials 'aws_access_key_id=xxxxxxxxxxxx;aws_secret_access_key=xxxxxxxxxxxxxxxx'
delimiter '|'
IGNOREBLANKLINES EMPTYASNULL GZIP NULL AS '\000'
BLANKSASNULL TRIMBLANKS REMOVEQUOTES
STATUPDATE ON IGNOREHEADER 0;
如果我做了一个错误的假设,请发表评论,我会重新调整我的答案。
【讨论】:
以上是关于Amazon Redshift 错误地四舍五入 Numeric(9,4) 值的主要内容,如果未能解决你的问题,请参考以下文章
Redshift 中的 DAU WAU MAU 错误:[Amazon](500310) 无效操作:由于内部错误,不支持此类关联子查询模式;
Pentaho DI 无法连接到 AWS Redshift - Amazon 错误 100021