我相信 BigQueryfh-bigquery.geocode.geolite_city_bq_b2
数据集中存在不准确之处,我很好奇其他人是否也注意到了这一点。
背景:我正在运行Ramtin M. Seraj的 BigQuery 代码,他/我的逻辑似乎是合理的。然而,已知 IP 地址代表某些地方,例如 Tokyo @ 150.249.199.17,但 Ramtin 的查询表明它们位于美国纽约州罗切斯特或加拿大安大略省渥太华。如果查询逻辑是合理的,那么唯一的结论是底层的 Geolite 数据集不是。
要验证,请查看此查询的结果:
SELECT *
FROM `fh-bigquery.geocode.geolite_city_bq_b2b`
WHERE classB = 38649
从这些结果中注意到startIp
= 150.245.0.0 和endIp
= 150.249.255.255,因此地址 150.249.199.17 在此 IP 范围内。
现在与https://ipinfo.io/150.249.199.17的结果以及以下 BigQuery 的结果进行比较。请注意,所有计算值(例如 IP 地址的 IPV4_TO_INT64())都在上述查询返回的范围内。
SELECT '150.249.199.17' as ipAddress
, NET.IPV4_TO_INT64(NET.IP_FROM_STRING('150.249.199.17')) AS clientIpNum_int
, TRUNC(NET.IPV4_TO_INT64(NET.IP_FROM_STRING('150.249.199.17'))/(256*256)) AS classB
, CAST(TRUNC(NET.IPV4_TO_INT64(NET.IP_FROM_STRING('150.249.199.17'))/(256*256)) as INT64) as client_classB_int
ps 我会支持第一个答案,或者添加评论,但我还没有足够的声望!