Как использовать REGEXP_EXTRACT для извлечения конкретной строки в Data Studio - PullRequest
1 голос
/ 20 сентября 2019

У меня есть идентификатор в столбце, который в настоящее время форматируется как:

[P0000000000109669288] (https://link.com/#/company::_e73d4f95_a66f_4366_b32a_3c14be37d510?p=i_start:2019-09-17%2000:45:00&p=i_timezone:America/Los_Angeles&f=session_id:eq:P0000000000109669288)

Мне нужно получить только P0000000000109669288, поэтому данные в скобках, и они отображаются в новом столбцев таблице в Google Data Studio.Конечной целью является создание объединенной таблицы с этим идентификатором в качестве объединенного ключа (в другом источнике данных идентификатор также отображается без ссылки).

Я пытался использовать некоторые формулы с использованием REGEXP_EXTRACT, например

REGEXP_EXTRACT(session_id, "[(.*?)]")

, но я не могу заставить его работать.

Возможно ли это?

Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 20 сентября 2019

Предполагая, что ваш текст всегда начинается с некоторого текста в скобках, за которым следует переменный текст, я думаю, что вы можете сделать это с помощью комбинации SUBSTRING() и INSTR():

SUBSTRING(txt, 2, INSTR(txt, ']') - 2)

Преимущество этого подхода заключается в том, что он будет работать на всех версиях MySQL, особенно до 8.0, где функции REGEXP_REPLACE() и т. п. не существует.

Демонстрация на DB Fiddle :

 WITH a AS (SELECT '[P0000000000109669288] (https://link.com/#/company::_e73d4f95_a66f_4366_b32a_3c14be37d510?p=i_start:2019-09-17%2000:45:00&p=i_timezone:America/Los_Angeles&f=session_id:eq:P0000000000109669288)' txt FROM DUAL)
SELECT SUBSTRING(txt, 2, INSTR(txt, ']') - 2) new_txt FROM a;

| new_txt              |
| -------------------- |
| P0000000000109669288 |
0 голосов
/ 20 сентября 2019

С комбинацией ответов выше, я думаю, я нашел это:

SUBSTR (session_id, 2, 40).

Это извлекает все, начиная со второго символа в строке, иостанавливается на 40-м символе строки.Поскольку все идентификаторы имеют одинаковую длину, это было исправлением !!

Большое спасибо всем!Теперь у меня все еще есть проблемы с присоединением к таблицам, но я при необходимости создам другой поток.

0 голосов
/ 20 сентября 2019

используйте это

SELECT REGEXP_SUBSTR(`session_id`, '\\[P[0-9]*\\]'),'[',''),']')

находит в идентификаторе сеанса [P0000000000109669288] Где вы должны удалить скобки

Но это работает только в mysql 8.x

Хорошо, я nmysql в одиночку, он работает нормально, См, и я смею

SELECT REPLACE(REPLACE(REGEXP_SUBSTR( '[P0000000000109669288] (ht tps://link.com/#/company::_e73d4f95_a66f_4366_b32a_3c14be37d510?p=i_start:2019-09-17%2000:45:00&p=i_timezone:America/Los_Angeles&f=session_id:eq:P0000000000109669288)'
 , '\\[P[0-9]*\\]'),'[',''),']','');
...