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

解析效果:

在这里插入图片描述

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值