使用正则表达式(SQL-Athena)逐段获取字符串路径

使用正则表达式(SQL-Athena)逐段获取字符串路径,sql,regex,string,amazon-athena,Sql,Regex,String,Amazon Athena,我想在Amazon Athena中将字符串转换为SQL中的行 由于雅典娜不支持某些函数,我被迫做许多正则表达式函数 输入(也可以有不同的长度)可以如下所示: v1 facility username utm_parameter 我想把这张桌子变成这样 1st | 2nd | 3rd | 4th ------ | ------ | ----- | ----- v1 | facility |username | utm_parameter i allrea

我想在Amazon Athena中将字符串转换为SQL中的行

由于雅典娜不支持某些函数,我被迫做许多正则表达式函数

输入(也可以有不同的长度)可以如下所示:

v1 facility username utm_parameter
我想把这张桌子变成这样

1st    |  2nd     | 3rd     | 4th
------ | ------   | -----   | -----
v1     | facility |username | utm_parameter
i allready使用以下代码从字符串中过滤出第一段文本:

SELECT REGEXP_EXTRACT( REGEXP_replace( REGEXP_REPLACE( REGEXP_EXTRACT( REGEXP_EXTRACT(message,'path=\S+'),'"(.*?)"'),'/', ' '),'"',''),'\S+') AS '1st' from data
但是我不知道如何用正则表达式获得下一个空格后的文本部分

有人知道我如何编写下一个正则表达式函数吗?

试试这个:

-- input, don't use in real query
WITH
input(message) AS (
SELECT 'v1 facility username utm_parameter'
)
-- input end, start real query here
SELECT
  SPLIT_PART(message,' ',1) AS "1st"
, SPLIT_PART(message,' ',2) AS "2nd"
, SPLIT_PART(message,' ',3) AS "3rd"
, SPLIT_PART(message,' ',4) AS "4th"
FROM input;

1st|2nd     |3rd     |4th
v1 |facility|username|utm_parameter
对于其他人来说,这就像拼写密西西比这个词:你需要知道什么时候停止