amazon-s3 - AWS - Redshift 十进制问题
问题描述
我通过 S3 存储桶将数据从 Amazon EventBridge 发送到 Redshift。
我对发送的十进制值有疑问。
这是我存储在 s3 上的 jsonpath 文件的示例。
{
"jsonpaths": [
"$.id",
"$detail.TotalPaid"
]
}
redshift 上的列类型是 Decimal(12,2)
如果我运行 SQL 插入,数据将正确保存 -
insert into payments values(1, 10.15);
但是,如果从 EventBus 传递相同的信息,则 TotalPaid 列将保存为 10.14。
仅在发送带有 2 个小数位的值时,上述内容似乎是一个问题。例如,如果发送 10.1,则列中的数据将正确保存为 10.10
我之前曾尝试将列设置为 VARCHAR 类型,但数据库中保存了不正确的值。我打算尝试使用 Float 类型,但查看 AWS 文档确实说使用 DECIMAL 表示货币金额而不是浮点类型。
有谁知道如何解决这个问题?
解决方案
问题解决了。我必须将 roundec 转换参数添加到 AWS 传输流上的复制命令 - https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-conversion.html#copy-roundec
推荐阅读
- sql - 计算同一行中的每月和十二个最后日期
- flutter - 在 Flutter 中取消 PositionStream
- php - 点击发送短信 API Laravel
- cucumber - 使用 BDD Cucumber and Sauce Labs 进行自动化测试
- azure - Azure ARM 模板与 resourceId 连接
- java - 读取 CSV 文件并在 java 中拆分值
- python - python中的列表排序 - AAA vs AA等
- python - 在函数中指定文件名:df.to_json
- python - 在 python 中构建具有字符串搜索逻辑的函数
- java - 显示项目符号时出现 ConcurrentModificationException