hive中nvl()方法的使用,并记录一次报错信息

56 篇文章 11 订阅
55 篇文章 1 订阅
本文讲述了在Hive中遇到关于NLV函数的类型错误,即map参数不一致的问题,并详细介绍了如何解决这一问题。通过实例说明NVL函数在不同数据类型(包括基本类型和map类型)的应用,以及为何map类型必须保持一致。
摘要由CSDN通过智能技术生成

Argument type mismatch ‘map’: The first and seconds arguments of function NLV should have the same type, but they are different: “map<string,int>” and “map<string,string>”

一、报错解决

当使用hive执行一段sql的时候,出现了这样一段报错,查看了详细的代码,定位到了错误的代码行

,nvl(l6.label,map())
,nvl(l7.label,map())
,nvl(l13.label,map())
,nvl(l16.label,map())
,nvl(l19.label,map())
,nvl(l20.label,map())
,nvl(l21.label,map())
,nvl(l32.label,map())
,nvl(l33.label,map())
,nvl(l34.label,map())
,nvl(l35.label,map())
,nvl(l36.label,map())
,nvl(l37.label,map())

在进行一连串的标签定义的时候出现了这个错误

报错信息

Argument type mismatch 'map': The first and seconds arguments of function NLV should have the same type, but they are different: "map<string,int>" and "map<string,string>"

这个报错大概意思是在map类型不一样,NLV的两个参数应该是一样的类型

检查了数据类型之后,发现确实,第一个参数类型是map<string,int>,第二个参数类型是map<string,string>,所以这个在使用nvl的时候需要两个参数的map类型是一致的。

二、NVL的使用

那么看一下nvl怎么使用

查看一下NVL的使用

desc function nvl;

在这里插入图片描述

意思就是当value为null的时候返回default_value,当不为null的时候返回value

1. 基本数据类型的时候
select nvl("string",1);
select nvl(1.0,"string");

当基本数据类型不一致的时候是否可以
在这里插入图片描述

可以看到基本数据类型是没有问题的

2. map()类型

那么map类型是否可以

select nvl(map("string","string"), map(1,1));
select nvl(map("string",1), map());
select nvl(map("string","string"), map());

在这里插入图片描述

可以看出来,map类型如果前后不一样的类型是不可以的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牧码文

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值