我正在尝试从我的网站表中获取域名后缀,但是,BigQuery中没有反向功能,我的域名包含example.example.com等域名。因此,我无法设置'。'的第1 /第3个外观。因为“。”的数量不一致。
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;
这是我目前所处的位置,只能在第一个'。'之后列出整个域名或域名。
答案 0 :(得分:1)
答案 1 :(得分:0)
如user2881671所述,您可以使用TLD()函数:
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'部分,正则表达式也很好:
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