Regex 在配置单元中,如何仅通过列的子字符串查询具有group的表?

Regex 在配置单元中,如何仅通过列的子字符串查询具有group的表?,regex,hive,Regex,Hive,例如,如果有一个列为“path”的示例表“sample\u hive\u tables”。如果总共有3条记录的路径为 "abc&page_id=defghi&other_parameters" "abc&page_id=defghi" "abc&page_id=efghi" "abc" 查询应该告诉我们,页面id为“defghi”的记录显示两次,页面id为“efghi”的记录显示一次。page\u id的值将以“&page\u id=”开头,以零或“&”结尾。表

例如,如果有一个列为“path”的示例表“sample\u hive\u tables”。如果总共有3条记录的路径为

"abc&page_id=defghi&other_parameters"
"abc&page_id=defghi"
"abc&page_id=efghi"
"abc"

查询应该告诉我们,页面id为“defghi”的记录显示两次,页面id为“efghi”的记录显示一次。page\u id的值将以“&page\u id=”开头,以零或“&”结尾。表中某些记录的页面id可能不存在。如何编写查询来实现这一点。

创建一个新列,其值介于
page\u id=
(&,“)
之间,并使用该列进行分组和计数

select val,count(val) from
(
    select regexp_extract(path,(?<=page_id=).*?(?=\"|&)) as val 
    from sample_hive_tables
) a
group by val;
从中选择val、计数(val)
(
选择regexp_extract(路径,(?)?