BigQuery查询语法获取URL的路径

时间:2014-02-25 01:01:10

标签: google-bigquery

我有一行URL列。

我喜欢将URL分解为域和路径。我可以使用BigQuery语法中的域(URL)来执行域。

我的问题是如何获取网址的路径?

e.g。 http://www.somedomain.com/X/Y/abc

我想将X,Y和abc作为单独的columsn。

2 个答案:

答案 0 :(得分:5)

您可以使用REGEXP提取您需要的内容

SELECT Regexp_extract(URL,r'^http://www(?:[^/]*)/(.*)') as full_path,
 Regexp_extract(URL,r'^http://www(?:[^/]*)/(?:[^/]*/){0}([^/]*)') as full_path0,
 Regexp_extract(URL,r'^http://www(?:[^/]*)/(?:[^/]*/){1}([^/]*)') as full_path1,
 Regexp_extract(URL,r'^http://www(?:[^/]*)/(?:[^/]*/){2}([^/]*)') as full_path2,
 Regexp_extract(URL,r'^http://www(?:[^/]*)/(?:[^/]*/){3}([^/]*)') as full_path3,
FROM 
(Select 'http://www.somedomain.com/X/Y/abc' as URL)

关于与MS日志解析器的比较。

  • Log Parser直接在日志平面文件上运行,而在BQ中则需要 加载它1。
  • 日志解析器在专用计算机上运行,​​而BQ作为云运行 服务(很多机器,你不在乎多少......)
  • 你会发现性能明智的BQ可以更快地完成任务 没有关心你的可用资源 处理。 (日志分析只能以多个线程的数量运行多线程 可用的CPU单元,并消耗了很多机器的缓存 运行)
  • BQ中的正则表达式函数为您提供了所有的灵活性 从日志中提取任何数据模式。

享受

答案 1 :(得分:0)

ga_sessions已点击叶表,自动分解您的网址

为例
http://www.somedomain.com/X/Y/abc

hits.page.pagePathLevel1 will have 'www.somedomian.com/'
hits.page.pagePathLevel2 will have '/X/'
hits.page.pagePathLevel3 will have '/Y/'