麻烦请问一下dataworks 利用get_json_object 解析json中的decimal1

麻烦请问一下dataworks 利用get_json_object 解析json中的decimal128类型 不识别成数字类型,而是用getter方法解析,得到的东西没用,我怎么才能识别成数字类型呢

展开
收起
游客3oewgrzrf6o5c 2022-08-26 17:36:56 1049 分享 版权
1 条回答
写回答
取消 提交回答
  • 全栈JAVA领域创作者

    在使用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类型。

    2023-06-08 22:37:43
    赞同 展开评论

DataWorks基于MaxCompute/Hologres/EMR/CDP等大数据引擎,为数据仓库/数据湖/湖仓一体等解决方案提供统一的全链路大数据开发治理平台。

收录在圈子:
+ 订阅
还有其他疑问?
咨询AI助理