Как получить часть строки перед последним разделителем в AWS Афина - PullRequest
0 голосов
/ 05 февраля 2020

Предположим, у меня есть следующая таблица в AWS Афина

+----------------+
|     Thread     |
+----------------+
| poll-23        |
| poll-34        |
| pool-thread-24 |
| spartan.error  |
+----------------+

Мне нужно извлечь часть строки из столбцов перед последним разделителем (Здесь '-' - разделитель)

В основном нужен запрос, который может дать мне вывод как

+----------------+
|     Thread     |
+----------------+
| poll           |
| poll           |
| pool-thread    |
| spartan.error  |
+----------------+

Также мне нужен запрос по группе, который может генерировать этот


+---------------+-------+
|    Thread     | Count |
+---------------+-------+
| poll          |     2 |
| pool-thread   |     1 |
| spartan.error |     1 |
+---------------+-------+

Я пробовал различные формы MySql запросов, используя Функции LEFT (), RIGHT (), LOCATE (), SUBSTRING_INDEX (), но кажется, что Афина не поддерживает все эти функции.

1 Ответ

2 голосов
/ 05 февраля 2020

Вы можете использовать regexp_replace(), чтобы удалить часть строки, которая следует за последней '-':

select regexp_replace(thread, '-[^-]*$'; ''), count(*) 
from mytable
group by regexp_replace(thread, '-[^-]*$', '')
...