首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从BigQuery表中查询域名后缀

从BigQuery表中查询域名后缀
EN

Stack Overflow用户
提问于 2014-01-14 13:50:19
回答 2查看 608关注 0票数 1

我正在尝试从我的网站表中获取域名后缀,但是,在BigQuery中没有反向功能,并且我的域名有域名,如example.example.com。因此,我无法设置'.‘的第一次/第三次出现。因为存在数量不一致的“.”

代码语言:javascript
复制
SELECT
  SUBSTR(Domain,( INSTR(Domain,'.')+1)) AS user_tld,
  COUNT(*) AS activity_count
FROM [table]
GROUP EACH BY
  user_tld
  HAVING
  user_tld IS NOT NULL AND NOT user_tld 
  IN ('')
  ORDER BY 
  user_tld DESC
  LIMIT 250;

这就是我目前所在的位置,只能列出整个域名或第一个‘’之后的域名。

EN

回答 2

Stack Overflow用户

发布于 2014-01-14 15:38:42

  1. BQ有一些很棒的URL函数:https://developers.google.com/bigquery/query-reference?#urlfunctions
  2. if这不能完成这项工作,试着使用regexp_extract而不是substring,你可以为你的字符串定义确切的字符串结构,如果你愿意,还可以定义它以从字符串末尾开始匹配。
票数 1
EN

Stack Overflow用户

发布于 2014-01-15 02:52:55

正如user2881671所说,您可以使用TLD()函数:

代码语言:javascript
复制
SELECT TLD('http://' + req_host), COUNT(*) c
FROM [httparchive:runs.2014_01_01_requests]
GROUP BY 1
ORDER BY 2 DESC
LIMIT 1000

17130999    .com     
3106860     .net     
894779      .ru  
538917      .de  
504799      .org     
252716      .jp  
247244      .com.br  
225529      .fr  
218345      .pl  
206532      .co.uk  

请注意,TLD()“足够智能”,可以识别出TLD是“.co.uk”而不是“.uk”。

如果你只想要'.uk‘部分,正则表达式也不错:

代码语言:javascript
复制
SELECT COUNT(*) c, REGEXP_EXTRACT(req_host, r'(\.[^.:]*)\.?:?[0-9]*$')
FROM [httparchive:runs.2014_01_01_requests]
GROUP BY 2
ORDER BY 1 DESC
LIMIT 1000;

17130999    .com     
3106860     .net     
903360      .ru  
539167      .de  
504799      .org     
491532      .jp  
276205      .br  
258811      .cn  
237798      .pl  
230407      .fr
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21106892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档