遇到的问题--presto---提取json中的数组值为null

Posted 张小凡vip

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了遇到的问题--presto---提取json中的数组值为null相关的知识,希望对你有一定的参考价值。

情况

我们有数据结构如下:

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

以上是关于遇到的问题--presto---提取json中的数组值为null的主要内容,如果未能解决你的问题,请参考以下文章

从 Presto 中的 JSON 数组中提取值

Presto URL 函数

从 Presto 中的 JSON 列中选择特定值

从android中的JsonObject中提取坐标

提取所有 JSON 密钥

正则表达式 - 尝试从字符串中提取 5 位单词(presto)