Я считаю, что в наборе данных BigQuery fh-bigquery.geocode.geolite_city_bq_b2
есть неточности, и мне любопытно, если бы другие тоже это заметили.
Справочная информация: У меня есть код BigQuery от РамтинМ. Серадж бежит, и его / моя логика кажется здоровой.Однако существуют IP-адреса, которые, как известно, представляют определенные места, например, Токио, 150.249.199.17, но которые указаны в запросе Рамтина в Рочестере, штат Нью-Йорк или в Оттаве, штат Калифорния.Если логика запроса является надежной, то единственный вывод состоит в том, что базовый набор данных 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.Обратите внимание, что все вычисленные значения, такие как IPV4_TO_INT64 () IP-адреса, попадают в диапазоны, возвращаемые запросом выше.
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 Я бы поднял первый ответ или добавил бы комментарий, но яРепутонов пока не хватает!