您的位置:首页 > 财经 > 产业 > Starrocks解析json数组

Starrocks解析json数组

2024/12/23 15:22:32 来源:https://blog.csdn.net/qq_43048011/article/details/140947766  浏览:    关键词:Starrocks解析json数组

json数据

[{"spec": "70g/支","unit": "支","skuId": "1707823848651276346","amount": 6,"weight": 70,"spuName": "伊利 甄稀 苦咖啡味雪糕 流心冰淇淋 70g/支","weightUnit": "克(g)","weightForUnit": "70"}
]

解析代码

   SELECT storeId store_code,skuId sku_coding,get_json_double(cast(t.unnest AS JSON), '$.amount') usage_amount, get_json_string(cast(t.unnest AS JSON), '$.skuId') sub_commodity_SKU_coding,t.unnest,create_time
FROM zmaxx.zmaxx_data.api_commodity_combination , UNNEST(split(regexp_replace(regexp_replace(regexp_replace(childSkuList,' ','') , '\\]|\\[' ,'') ,'},{','}@&{' ),'@&')) AS t

代码解释

  1. regexp_replace(childSkuList,’ ‘,’‘):将空格替换,原因是数据中‘},{’,中间存在空格会导致下面代码无法解析
  2. regexp_replace(data, ‘\]|\[’ ,‘’):替换掉数组的中括号
  3. regexp_replace(data, ,‘},{’,‘}@&{’ ):多个对象之间的‘,’替换成特殊符号(不会出现在数据中),这个特殊符号用来split切分
  4. split(data,‘@&’):切分数据为数组
  5. UNNEST(array):类似hive中的explore()炸裂函数 和lateral view的结合,将一个数组拆成多行数据
  6. get_json_double(cast(t.unnest AS JSON), ‘$.amount’):根据key获取value

解析效果:

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com