【发布时间】:2018-01-18 22:05:48
【问题描述】:
我最近遇到了一个问题,我在一个列中有许多网站的名称(有重复),我必须找出同时作为 http 和 https 存在的域(例如:https://www.google.com 和 http://www.google.com )。我的查询是 -
`SELECT distinct SPLIT(origin,"://")[OFFSET(1)] as domain
FROM "chrome-ux-report.chrome_ux_report.201710" x
WHERE SPLIT(x.origin,"://")[OFFSET(0)] = "http"
and SPLIT(x.origin,"://")[OFFSET(1)] in
(SELECT SPLIT(y.origin,"://")[OFFSET(1)]
FROM "chrome-ux-report.chrome_ux_report.201710" y
WHERE SPLIT(y.origin,"://")[OFFSET(0)] = "https" )
ORDER BY domain`
此查询需要 O(n^2) 时间。了解了 python,我不禁想到了一个解决方案,我可以构建一个以域为键、http 和 https 存在为值的新表,例如 dict['www.google.com'] = [1,1 ] 或在 sql 中 -
Domain http https
www.google.com 1 1
这需要 O(n) 时间。知道我该怎么做吗?提前致谢。
【问题讨论】:
-
问题是找到所有以 https 和 http 形式存在的域。我从 python 中获取了字典的想法。 (现在我看到它是多余的)
-
您使用的是 MySQL 还是 BigQuery?你已经同时标记了这两者..
标签: mysql google-bigquery