我有一个JSON文件,我把我的SQL查询,它将在Hive上自动运行。
JSON结构如下:
{
"name": "query1",
"query": "select regexp_extract(column, '(.*)\s\|', 1) as column_one from data"
}
我们的想法是提取第一个空格+竖条之前的所有内容。
对于一个给定的例子,当我在Hive中尝试时,它按预期工作:
select regexp_extract('First part | Second Part', '(.*)\s\|', 1) as column_one;
First part
正如你所看到的,你已经需要一个反斜杠s
和|
,否则在Hive中不起作用。但是,当使用JSON文件自动运行时,我得到以下内容:
Fir
然后我明白你需要另一个反斜杠来转义JSON,所以我用了下面的:
{
"name": "query1",
"query": "select regexp_extract(column, '(.*)\s\|', 1) as column_one from data"
}
但是,它仍然给我Fir
而不是First part
。
可以使用
{
"name": "query1",
"query": "select regexp_extract(column, '([^|]*?)[[:space:]]*[|]', 1) as column_one from data"
}
注意
([^|]*?)
-捕获除|
以外的任何零个或多个字符尽可能少[[:space:]]*
-零或多个空白字符[|]
-|
字符(在字符类[...]
中,|
字符被视为管道符号)。