我已经在BigQuery中加载了我的应用程序日志,我需要根据这些日志中的IP地址计算国家/地区.
我在我的表和从MaxMind下载的GeoIP映射表之间编写了一个连接查询.
理想的查询将OUTER JOIN使用范围过滤器,但BQ仅=在连接条件下支持.因此查询执行INNER JOIN并处理每一侧的缺失值JOIN.
我修改了原始查询,因此可以在维基百科公共数据集上运行.
有人可以帮助我让这个跑得更快吗?
SELECT id, client_ip, client_ip_code, B.Country_Name as Country_Name
FROM
(SELECT id, contributor_ip as client_ip, INTEGER(PARSE_IP(contributor_ip)) AS client_ip_code, 1 AS One
FROM [publicdata:samples.wikipedia] Limit 1000) AS A1
JOIN
(SELECT From_IP_Code, To_IP_Code, Country_Name, 1 AS One
FROM
-- 3 IP sets: 1.valid ranges, 2.Gaps, 3. Gap at the end of the set
-- all Ranges of valid IPs:
(SELECT From_IP_Code, To_IP_Code, Country_Name FROM [QA_DATASET.GeoIP]) …Run Code Online (Sandbox Code Playgroud)