IP地理函数可以识别一个IP地址是内网IP地址还是外网IP地址,也可以判断IP地址所属的国家、省份、城市。本文档介绍IP地理函数的基本语法及示例。

基本语法

函数名 说明 样例
ip_to_domain(ip) 判断某IP地址是内网地址还是外网地址。返回值为intranet或internet。 SELECT ip_to_domain(ip)
ip_to_country(ip) 判断某IP地址所属国家。 SELECT ip_to_country(ip)
ip_to_province(ip) 判断某IP地址所属省份。 SELECT ip_to_province(ip)
ip_to_city(ip) 判断某IP地址所属城市。 SELECT ip_to_city(ip)
ip_to_geo(ip) 判断某IP地址所在位置的经纬度。返回结果格式为纬度,经度

关于geohash函数的详细信息,请参见地理函数

SELECT ip_to_geo(ip)
ip_to_city_geo(ip) 判断某IP地址所属城市的经纬度,返回结果格式为纬度,经度。此函数返回的是城市经纬度,每个城市只有一个经纬度。 SELECT ip_to_city_geo(ip)
ip_to_provider(ip) 获取某IP地址对应的网络运营商。 SELECT ip_to_provider(ip)
ip_to_country(ip,'en') 判断某IP地址所属国家,返回国家码。 SELECT ip_to_country(ip,'en')
ip_to_country_code(ip) 判断某IP地址所属国家,返回国家码。 SELECT ip_to_country_code(ip)
ip_to_province(ip,'en') 判断某IP地址所属省份,返回英文省名或者中文拼音。 SELECT ip_to_province(ip,'en')
ip_to_city(ip,'en') 判断某IP地址所属城市,返回英文城市名或者中文拼音。 SELECT ip_to_city(ip,'en')

示例

此处列举了IP地理函数在不同场景下的查询分析示例。您在执行查询分析语句后,还可以选择合适的统计图表展示查询分析结果。

  • 统计不包含内网请求的请求总数,相关查询分析语句如下所示:
    * | SELECT count(1) where ip_to_domain(ip)!='intranet'
  • 统计Top10的访问省份,相关查询分析语句如下所示:
    * | SELECT count(1) as pv, ip_to_province(ip) as province GROUP BY province order by pv desc limit 10
    如果上述结果中包含了内网请求,且您希望过滤这部分请求,可以使用如下查询分析语句:
    * | SELECT count(1) as pv, ip_to_province(ip) as province WHERE ip_to_domain(ip) != 'intranet'  GROUP BY province ORDER BY pv desc limit 10
  • 统计不同国家的平均响应延时、最大响应延时以及最大延时对应的请求,相关查询分析语句如下所示:
    * | SELECT AVG(latency),MAX(latency),MAX_BY(requestId, latency) ,ip_to_country(ip) as country group by country limit 100
  • 统计不同网络运营商的平均延时,相关查询分析语句如下所示:
    * | SELECT AVG(latency) , ip_to_provider(ip) as provider group by provider limit 100
  • 统计IP地址的经纬度,确认请求客户端的分布情况,相关查询分析语句如下所示:
    * | SELECT count(1) as pv , ip_to_geo(ip) as geo group by geo order by pv desc