Select 使用正则表达式的 SQL 路径中的深度

Select the depth in SQL path using regex expression

我正在使用 Athena 查询 S3,我想 select 密钥直到某个路径级别。 以下是一些关键示例:

我想查询这些行和 select 所有字符串,直到 'data/' 是否有要使用的正则表达式或任何 sql 表达式? 实际上我尝试了下一个正则表达式但不起作用:

regex_match = fr'([^/]*[/]){{{depth}}}'

深度=4,下一个查询:

f"SELECT REGEXP_EXTRACT(key,'{regex_match}') AS path FROM bucket_number_1)\
 GROUP BY REGEXP_EXTRACT(key, '{regex_match}')"

但我点了空数据框

感谢任何帮助!

你可以使用

regex_match = r'^((?:[^/]*/){5})'

详情:

  • ^ - 字符串开头
  • ((?:[^/]*/){5}) - 捕获第 1 组:
    • (?:[^/]*/){5} -
    • 连续五次出现
    • [^/]* - 除了 / 字符
    • 之外的任何零个或多个字符
    • / - / 个字符。