1

我想在 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

但我不知道如何使用正则表达式在下一个空格之后获取文本部分

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

4

1 回答 1

3

尝试这个:

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

而且,对于其余的,这就像拼写密西西比这个词:你需要知道什么时候停止......

于 2017-03-10T18:07:04.957 回答