为什么mongodb的json 金额类型 集成到dataworks会变成一个json啊,无论mongodb reader writer配置什么type都一样,都会将源表40.00这种转成{"finite":true,"high":3475653012423180288,"infinite":false,"low":4000,"naN":false,"negative":false}这种
这是因为 MongoDB 中的金额类型是 BSON 格式的,而不是 JSON 格式的。当您使用 MongoDB Reader 将 MongoDB 中的数据导入到 DataWorks 中时,由于 BSON 格式的金额类型无法直接转换为 JSON 格式,因此 MongoDB Reader 会将其转换为 MongoDB Driver 中对应的值对象,即 Decimal128 对象。而 Decimal128 对象在转换为 JSON 格式时,会被转换为一个包含多个属性的 JSON 对象,形如 {"$numberDecimal": "40.00"}。
为了将 MongoDB 中的金额类型正确转换为 JSON 格式,您可以在数据导入到 DataWorks 后,使用 DataWorks 中的数据转换功能进行转换。具体步骤如下:
在 DataWorks 中找到需要转换的表,进入表的详情页面。
单击“数据转换”按钮,进入数据转换页面。
在数据转换页面中,使用 SQL 语句对数据进行转换。例如,可以使用如下 SQL 语句将 Decimal128 类型的金额转换为 JSON 格式的字符串:
sql Copy SELECT CAST(price AS VARCHAR) AS price_json FROM my_table;
上述 SQL 语句将查询 `my_table` 表中的 `price` 字段,并将其转换为 JSON 格式的字符串,存储到 `price_json` 字段中。
单击“保存并执行”按钮,等待数据转换完成。
完成数据转换后,您可以在 DataWorks 中导出转换后的数据,并将其保存到指定的文件或存储介质中。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
DataWorks基于MaxCompute/Hologres/EMR/CDP等大数据引擎,为数据仓库/数据湖/湖仓一体等解决方案提供统一的全链路大数据开发治理平台。