情况
我们有数据结构如下:
skuIdsParams:{"skuIds":["123","456"]}
在presto中适用语句查询如下:
presto> select skuIdsParams, json_extract_scalar(skuIdsParams,'$.skuIds') from v_event_2 where "$part_date">'2021-04-26' and "$part_event"='VIEW_ORDER_PAGE_EVENT' AND ( POSITION('new/buy/order' IN "router") > 0 ) order by "#event_time" desc;
skuIdsParams | _col1
---------------------------------------+-------
{"skuIds":["123","456"]} | NULL
使用json_extract_scalar 提取 json中的数组 获取到的值为null
原因
json_extract_scalar用于提取标量值(数字、字符串、布尔值)。
而skuIds关联的值是一个数组。
解决方案
需要使用json_extract,json_extract返回一个JSON类型的值,其中包含一个JSON数字数组,并将其强制转换为SQL数组
把查询语句中的json_extract