Google bigquery BigQuery查询语法获取URL的路径

Google bigquery BigQuery查询语法获取URL的路径,google-bigquery,Google Bigquery,我有一个URL列的行 我喜欢将URL分为域和路径。我可以使用BigQuery语法中的域(URL)来创建域 我的问题是如何获取URL的路径 e、 g。 我想把X,Y和abc作为单独的列 您可以使用REGEXP提取所需内容 SELECT Regexp_extract(URL,r'^http://www(?:[^/]*)/(.*)') as full_path, Regexp_extract(URL,r'^http://www(?:[^/]*)/(?:[^/]*/){0}([^/]*)') as

我有一个URL列的行

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

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

e、 g。


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

您可以使用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日志解析器的比较

  • 日志解析器直接在日志平面文件上运行,而在BQ中则需要 先把它装进去
  • 日志解析器在专用机器上运行,而BQ作为云运行 服务(很多机器,你不在乎有多少…)
  • 您会发现,性能明智的BQ做事情更快,更高效 您不关心可用于此目的的资源 处理。(日志解析只能作为多个线程运行。) 可用的CPU单元,并消耗大量的机器缓存吗 (继续运行)
  • BQ中的正则表达式函数为您提供了 从日志中提取任何模式的数据

享受

ga_sessions具有自动分解URL的点击叶表

以你为例

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/'

良好的功能要求,深入调查。我正在和微软的日志解析器做一个喜欢与喜欢的比较。不公平的比较-BigQuery更好(或者不更好?我想看看你的最终结果)。它当然可以受益于此功能-感谢您的请求!有可能在大查询中使用变量吗?不幸的是没有。。。(我认为他们对它有一些功能要求)我们的解决方案是一个离线过程(python),它基于模板生成查询并替换其中的一些占位符字符串。太棒了。对于域部分,可以添加:Regexp\u extract(pageurl,r'^(?:http:\/\/\\/\\ www\.\124; https:\/\/)([^\/]+))