使用Hive正则表达式获取值

时间:2016-07-13 19:33:23

标签: regex hive

我想在hive中提取正则表达式匹配值。下面是我的表列数据。该数据仅适用于单列。将此列视为csv数据列表。

表1: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

我想要管道之间的第二个值。

  1. 第一个值=> 1234
  2. 第4个值=> ABC
  3. 第五个值=>真
  4. 我的查询:

    select regexp_extract(col1, '1234\|([^|]{0,})\|[^|]{0,}\|ABC\|true', 1) col from table1;
    

    预期产出:

    REQUIRED
    REQUIRED
    <NULL>(OR EMPTY)
    REQUIRED
    

    当前查询输出:

    <NULL>
    <NULL>
    <NULL>
    <NULL>
    

    我不知道查询何时出错。这是一个蜂巢正则表达式。

1 个答案:

答案 0 :(得分:0)

我得到了必要的答案。我不得不两次逃脱管道。

select regexp_extract(col1, '1234\\|([^|]{0,})\\|[^|]{0,}\\|ABC\\|true', 1) col from table1;