麻烦请问一下dataworks 利用get_json_object 解析json中的decimal128类型 不识别成数字类型,而是用getter方法解析,得到的东西没用,我怎么才能识别成数字类型呢
在使用DataWorks中的get_json_object函数解析json格式数据时,get_json_object默认会将decimal类型转换成string类型,因此你需要对返回的字符串进行类型转换才能得到数字类型。
如果你使用的是Hive SQL语句的话,可以使用cast函数或者to_number函数将字符串类型转换成decimal类型,例如:
select cast(get_json_object(json_str, '$.decimal1') as decimal(18,2)) from table; 或者
select to_number(get_json_object(json_str, '$.decimal1')) from table; 另外,在DataWorks的数据开发模块中也支持使用自定义函数UDF来实现更为灵活的类型转换逻辑。你可以编写一个UDF函数来直接将string类型转换成decimal类型,然后在SQL语句中调用该函数即可。
注意:如果你使用的是MaxCompute作为计算引擎,由于MaxCompute不支持decimal类型,因此无法直接进行类型转换。在这种情况下,你可以考虑使用double类型来替代decimal类型。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
DataWorks基于MaxCompute/Hologres/EMR/CDP等大数据引擎,为数据仓库/数据湖/湖仓一体等解决方案提供统一的全链路大数据开发治理平台。