presto中split函数报错Array subscript out of bounds(下标越界)

1、数据示例:

id cat_info

1 服饰/上衣/衬衫

2 服饰/其他

2、实现

select split('服饰/其他', '/')3 as three_cat

报错:Array subscript out of bounds

正确用法:

select if(size(split(cat_info, '/'))>=3,split(cat_info, '/')2 ,'') as three_cat

3、详细说明

3.1 hive用法

复制代码
SELECT 
    id,
    cat_info,
    split(cat_info, '/')[0] one_cat,
    split(cat_info, '/')[1] two_cat,
    if(size(split(cat_info, '/'))>=3,split(cat_info, '/')[2] ,'')three_cat

3.2 presto用法

复制代码
SELECT 
    id,
    cat_info,
    split(cat_info, '/')[1] one_cat,
    split(cat_info, '/')[2] two_cat,
    if(cardinality(split(cat_info, '/'))>=3,split(cat_info, '/')[3] ,'')three_cat

3.3 比较

在计算数组长度的时候,hive和presto的函数不同

hive的size函数默认数组的下标从0开始

presto的cardinality函数默认数组的下标从1开始

相关推荐
古法老登瞎折腾12 小时前
Hive 源码导读(三):都是 SELECT,为什么有的查询不需要 YARN?
数据仓库·hive·hadoop
troy12814 小时前
Java Web 常见面试题(2026 最新整理)
java·前端·hive
l1t15 小时前
DeepSeek总结的有符号、无符号、未对齐:从汇编到 SQL 的教训
汇编·数据库·sql
夜雪一千15 小时前
MySQL 如何提高查询速度:从索引、SQL、表结构到实战调优
android·sql·mysql
高级程序源16 小时前
hive电商平台商品销售数据分析与趋势预测45659-计算机课程设计、毕业设计
vue.js·hive·spring boot·mysql·数据分析·django·课程设计
for_ever_love__16 小时前
LangChain Text-to-SQL:让不会写 SQL 的人查数据库
数据库·sql·langchain·大模型·agent·rag·问答
陈年老古董1 天前
Hive 函数学习笔记(下):窗口函数与经典案例
hive·笔记·学习
天天喝旺仔1 天前
MySQL 索引原理与慢查询优化实战:从 B+ 树到执行计划调优
数据库·sql·mysql·性能优化
爱吃火鸡面呀1 天前
DataX 实战:使用 HDFS Reader 读取 Hive ORC 表并输出到 Stream
hive·hadoop·hdfs