繁体   English   中英

如何在 AWS Athena 中的最后一个分隔符之前获取部分字符串

[英]How to get part of the String before last delimiter in AWS Athena

假设我在 AWS Athena 中有下表

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

我使用 LEFT()、RIGHT()、LOCATE()、SUBSTRING_INDEX() 函数尝试了各种形式的 MySql 查询,但似乎 athena 不支持所有这些函数。

您可以使用regexp_replace()删除最后一个'-'后面的字符串部分:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM