我正在尝试检查列中的所有数据是否都具有有效日期。
create table dates (tm string, dt string) row format delimited fields terminated by '\t'
date.txt(sample data)
20181205 15
20171023 23
20170516 16
load data local inpath 'dates.txt' overwrite into table dates;
create temporary macro isitDate(s string)
case when regexp_extract(s,'((0[1-9]|[12][0-9]|3[01])',0) = ''
then false
else true
end;
select * from dates where isitDate(dt);
但是select语句给出了以下错误-
失败,例外 java.io.IOException:org.apache.hadoop.hive.ql.metadata.HiveException: 无法执行方法public java.lang.String org.apache.hadoop.hive.ql.udf.UDFRegExpExtract.evaluate(java.lang.String,java.lang.String,java.lang.Integer) 在以下对象的对象org.apache.hadoop.hive.ql.udf.UDFRegExpExtract@66b45e1e 带有参数的org.apache.hadoop.hive.ql.udf.UDFRegExpExtract类 {15:java.lang.String,(((0 [1-9] | [12] [0-9] | 3 [01]):java.lang.String, 0:java.lang.Integer},大小为3
我的正则表达式有问题吗
答案 0 :(得分:0)
犯了一个愚蠢的错误,宏中有一个额外的开括号