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

时间:2017-03-10 17:19:42

标签: sql regex string amazon-athena

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

由于Athena不支持某些功能,因此强制执行许多正则表达式功能

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

v1 facility username utm_parameter

我希望把它变成一个看起来像这样的表

1st    |  2nd     | 3rd     | 4th
------ | ------   | -----   | -----
v1     | facility |username | utm_parameter

我已经用这段代码过滤掉了字符串中的第一段文字:

SELECT REGEXP_EXTRACT( REGEXP_replace( REGEXP_REPLACE( REGEXP_EXTRACT( REGEXP_EXTRACT(message,'path=\S+'),'"(.*?)"'),'/', ' '),'"',''),'\S+') AS '1st' from data

但我不知道如何使用正则表达式

获取下一个空格后的文本部分

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

1 个答案:

答案 0 :(得分:2)

试试这个:

-- 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

而对于其他人来说,这就像拼写密西西比这个词:你需要知道何时停止......