根据第一个路径聚合 Urls
Aggregate Urls based on first path
假设我有一个 table,里面有一堆 URL
URL Some_Value
------------------------------------------------
0 www.google.com/help/experience 3
1 www.google.com/help/tutorial 1
2 www.google.com/signup 0
3 www.google.com/signup/form 199
4 www.google.com/signup/believe 3
5 www.google.com/signup/new 1
6 www.google.com/welcome/kr 15
7 www.google.com/help/location 2
8 www.google.com/store/shirts 1
我想将值聚合到 URL 中的第一条路径,我该怎么做?
所以它看起来像这样:
URL agg_value
www.google.com/help. 6
www.google.com/signup 193
www.google.com/store. 1
www.google.com/welcome 15
etc...
我知道 substr() 是执行此操作的最佳方法,但我不知道如何使用 substr 在第二个 '/' 处停止
select substr('www.google.com/store/shirts',1,5)
可以使用正则表达式获取 URL 路径中的第一个文件夹。
SELECT regexp_extract(URL, '^[^\/]*\/[\w-]+') AS URL, sum(Some_Value) AS agg_value
FROM mytable
GROUP BY 1
正则表达式模式:
^
- URL 字符串的开始
[^\/]*
- 除了 /
之外的任何字符
\/
- /
字符
[\w-]+
- 一个或多个单词字符 a-z
、A-Z
、0-9
、_
和连字符 -
假设我有一个 table,里面有一堆 URL
URL Some_Value
------------------------------------------------
0 www.google.com/help/experience 3
1 www.google.com/help/tutorial 1
2 www.google.com/signup 0
3 www.google.com/signup/form 199
4 www.google.com/signup/believe 3
5 www.google.com/signup/new 1
6 www.google.com/welcome/kr 15
7 www.google.com/help/location 2
8 www.google.com/store/shirts 1
我想将值聚合到 URL 中的第一条路径,我该怎么做?
所以它看起来像这样:
URL agg_value
www.google.com/help. 6
www.google.com/signup 193
www.google.com/store. 1
www.google.com/welcome 15
etc...
我知道 substr() 是执行此操作的最佳方法,但我不知道如何使用 substr 在第二个 '/' 处停止
select substr('www.google.com/store/shirts',1,5)
可以使用正则表达式获取 URL 路径中的第一个文件夹。
SELECT regexp_extract(URL, '^[^\/]*\/[\w-]+') AS URL, sum(Some_Value) AS agg_value
FROM mytable
GROUP BY 1
正则表达式模式:
^
- URL 字符串的开始[^\/]*
- 除了/
之外的任何字符
\/
-/
字符[\w-]+
- 一个或多个单词字符a-z
、A-Z
、0-9
、_
和连字符-