URL的BigQuery查询语法获取路径

Vin*_*eph 3 google-bigquery

我的网址列中有一行。

我喜欢将URL分为域和路径。我可以通过使用BigQuery语法中的Domain(URL)来进行域名处理。

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

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

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

N.N*_*.N. 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)
Run Code Online (Sandbox Code Playgroud)

并考虑与MS日志解析器进行比较。

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

请享用