regexp_replace 配置单元中的正则表达式
regular expression in regexp_replace hive
我的 table 中有几行。这行看起来像:
Atribute |
---------------|
B=10;MB=12;A=33|
---------------|
MB=16;B=12;A=23|
---------------|
A=10;MB=23;B=58|
等等
我只需要在 'B=' 之后获取数字。对于那个例子,我应该得到:
10
12
58
为了得到这个结果,我应该写什么 select 查询? (查询不应与 'MB=' 和 'B=' 混淆)
hive> select regexp_extract('B=10\;AB=12\;B=33', '(\;|^)B=([0-9]*)', 2);
OK
10
Time taken: 0.157 seconds, Fetched: 1 row(s)
hive> select regexp_extract('MB=16\;B=12\;A=23', '(\;|^)B=([0-9]*)', 2);
OK
12
Time taken: 0.11 seconds, Fetched: 1 row(s)
hive> select regexp_extract('A=10\;MB=23\;B=58', '(\;|^)B=([0-9]*)', 2);
OK
58
Time taken: 0.134 seconds, Fetched: 1 row(s)
hive>
第一组将尝试匹配值为 'B' 的字符串开头或后面跟有值 'B' 的字符串的分号。
我的 table 中有几行。这行看起来像:
Atribute |
---------------|
B=10;MB=12;A=33|
---------------|
MB=16;B=12;A=23|
---------------|
A=10;MB=23;B=58|
等等
我只需要在 'B=' 之后获取数字。对于那个例子,我应该得到:
10
12
58
为了得到这个结果,我应该写什么 select 查询? (查询不应与 'MB=' 和 'B=' 混淆)
hive> select regexp_extract('B=10\;AB=12\;B=33', '(\;|^)B=([0-9]*)', 2);
OK
10
Time taken: 0.157 seconds, Fetched: 1 row(s)
hive> select regexp_extract('MB=16\;B=12\;A=23', '(\;|^)B=([0-9]*)', 2);
OK
12
Time taken: 0.11 seconds, Fetched: 1 row(s)
hive> select regexp_extract('A=10\;MB=23\;B=58', '(\;|^)B=([0-9]*)', 2);
OK
58
Time taken: 0.134 seconds, Fetched: 1 row(s)
hive>
第一组将尝试匹配值为 'B' 的字符串开头或后面跟有值 'B' 的字符串的分号。