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