使用 SQL 从 url 中剥离域名
Posted
技术标签:
【中文标题】使用 SQL 从 url 中剥离域名【英文标题】:Stripping the domain name from a url using SQL 【发布时间】:2018-10-03 14:56:44 【问题描述】:我正在使用 Big Query 的 Hacker News 数据集,并且正在查看哪些 url 的新闻报道最多。我还想去掉域名,看看哪些域名的新闻报道最多。我在 R 中工作,在让后续查询正常工作时遇到了一些麻烦。
# Select the ten domains that have the most stories
sql_domain <- "SELECT url REPLACE(CASE WHEN REGEXP_CONTAINS(url, '//')
THEN url ELSE CONCAT('http://', url) END, '&', '?') as domain_name,
COUNT(domain_name) as story_number
FROM `bigquery-public-data.hacker_news.full`
WHERE type = 'story'
GROUP BY domain_name
ORDER BY story_number DESC
LIMIT 10"
我不需要剥离***域;例如,***
不是必需的,***.com
很好。非常感谢您的帮助!
【问题讨论】:
也许您想要网络功能之一? cloud.google.com/bigquery/docs/reference/standard-sql/… @ElliotBrossard 非常优雅!我正在尝试:sql_domain_ag <- "SELECT NET.REG_DOMAIN(url) as domain_name, COUNT(domain_name) as story_number
现在收到“错误:无法识别的名称:[2:29] [invalidQuery] 的域名”,所以我一定是不正确地调用了该函数,或者其他什么。
【参考方案1】:
问题出在您的查询中 - 您应该使用如下方式(对于 BigQuery 标准 SQL)
SELECT
NET.REG_DOMAIN(url) AS domain_name,
COUNT(NET.REG_DOMAIN(url)) AS story_number
FROM `bigquery-public-data.hacker_news.full`
WHERE type = 'story'
GROUP BY 1
ORDER BY story_number DESC
LIMIT 10
这将为您提供如下所示的内容
Row domain_name story_number
1 github.com 81784
2 medium.com 71953
3 youtube.com 58119
4 blogspot.com 52925
5 nytimes.com 48986
6 techcrunch.com 43924
7 google.com 26326
8 wordpress.com 23372
9 arstechnica.com 23162
10 wired.com 18480
【讨论】:
以上是关于使用 SQL 从 url 中剥离域名的主要内容,如果未能解决你的问题,请参考以下文章