从网址中剥离域名

时间:2018-10-03 13:23:59

标签: sql r google-bigquery

我正在使用Big Query的Hacker News数据集,并正在研究哪些URL具有最多的新闻故事。我也想删除域名,然后看看其中哪些新闻报道最多。我正在R中工作,但在使以下查询开始工作时遇到了一些麻烦。

 sql_domain <- "SELECT url,
                       REPLACE(CASE WHEN REGEXP_CONTAINS(url, '//') 
                           THEN url ELSE '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"

我一直遇到以下错误:“错误:运算符+参数类型不匹配:STRING,STRING。支持的签名:INT64 + INT64; FLOAT64 + FLOAT64; NUMERIC + NUMERIC”

我一生都无法找到替换“ +”运算符的方法。非常感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

  

我一生都无法找到替换“ +”运算符的方法

在BigQuery中-您应使用'http://' + url代替CONCAT('http://', url)

答案 1 :(得分:0)

为了您的目标(向“黑客新闻”提交的顶级域名):

#standardSQL
SELECT NET.REG_DOMAIN(url) domain, COUNT(*) c
  , ROUND(EXP(AVG(LOG(IF(score<=0,0.1,score)))),2) avg_score
FROM `bigquery-public-data.hacker_news.full`
WHERE type = 'story'
GROUP BY 1
ORDER BY 2 DESC
LIMIT 100

请注意,调用NET.REG_DOMAIN()来获取域要容易得多。

enter image description here