【发布时间】:2021-01-22 19:54:36
【问题描述】:
我正在通过 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 表示货币金额而不是浮点类型。
有人知道如何解决这个问题吗?
【问题讨论】: