【问题标题】:Get the value with Hive regular expression使用 Hive 正则表达式获取值
【发布时间】: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

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

  1. 第一个值 => 1234
  2. 第 4 个值 => ABC
  3. 第 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 正则表达式。

【问题讨论】:

    标签: regex hive


    【解决方案1】:

    我得到了所需的答案。我不得不两次逃离我的管道。

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

    【讨论】:

    • 我仍然需要等待 2 小时才能选择我自己的答案.. 等待它.. :)
    猜你喜欢
    • 2015-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多