【发布时间】:2016-11-16 13:06:57
【问题描述】:
我想在 hive 中提取一个正则表达式匹配值。下面是我的表格列数据。数据仅适用于单列。将此列视为 csv 数据列表。
table1:col1
1234|REQUIRED|VALUE|ABC|true
3991|NOT REQUIRED|VALUE|ABC|false,1234|REQUIRED|VALUE||true
3214|NOT REQUIRED|VALUE|ABCD|true,1234|REQUIRED|VALUE|ABC|false,1234|NOT REQUIRED|||false
1254|NOT REQUIRED||UPC|true,1235|REQUIRED||ABC|true
我想要管道之间的第二个值。
- 第一个值 => 1234
- 第 4 个值 => ABC
- 第 5 个值 => 真
我的查询:
select regexp_extract(col1, '1234\|([^|]{0,})\|[^|]{0,}\|ABC\|true', 1) col from table1;
预期输出:
REQUIRED
REQUIRED
<NULL>(OR EMPTY)
REQUIRED
当前查询输出:
<NULL>
<NULL>
<NULL>
<NULL>
我不知道查询时出错的地方。这是一个 Hive 正则表达式。
【问题讨论】: