首页 > 解决方案 > 在 Hive 中使用正则表达式获取匹配数?

问题描述

我想从基于正则表达式匹配的表中获取计数值。例如,假设我想查找表中所有以“/top”结尾的字符串,并且该表包含以下数据:

id  url
1   example.com/top
2   example.com/index.html
3   example2.com/top

以下查询似乎命中每一行,而不仅仅是两行:

  select
  sum(CASE WHEN url REGEXP '.*/top' THEN 1 ELSE 0 END) as topCount,
  sum(CASE WHEN url REGEXP '.*/index.html' THEN 1 ELSE 0 END) as defaultCount
  from myTable

有什么建议么?

标签: regexhive

解决方案


您可以使用 中的条件where

select count(*) from myTable where url REGEXP '.*/top$'

推荐阅读