Выберите числа до и после строковых значений - Presto SQL - PullRequest
1 голос
/ 20 марта 2019

Я пытаюсь создать 2 новых столбца из одного столбца.

Мои данные выглядят так:

userid:5438888,locationid:84646646478,property:g

Я хочу создать новый столбец для userid и новый столбец для locationid.Есть еще много строк, и userid s и locationid s не всегда будут иметь одинаковую длину во всем наборе данных.

Я предполагаю, что есть способ разбить текст после : и до ,, но я не уверен, как это будет работать, делая это дважды внутри строки.Меня не волнует часть свойства строки.Только userid и locationid.

1 Ответ

1 голос
/ 21 марта 2019

Это можно сделать с помощью функции split_to_map():

WITH data(attribution_site_id) AS (
    VALUES 'userid:5438888,locationid:84646646478,property:g'
),
t AS (
    SELECT split_to_map(attribution_site_id, ',',':') map
    FROM data
)
SELECT element_at(map, 'userid') as userid,
       element_at(map, 'locationid') as locationid
FROM t

, который производит:

 userid  | locationid
---------+-------------
 5438888 | 84646646478
...