IP地理函数可用于判断IP地址属于内网还是外网,也可用于分析IP地址所属的国家、省份、城市。本文介绍IP地理函数的基本语法及示例。
IP地址函数
函数名称 | 说明 | 示例 |
---|---|---|
ip_to_domain(KEY) | 判断目标IP地址是内网地址还是外网地址。
返回结果为intranet或internet。
|
|
ip_to_country(KEY) | 分析目标IP地址所属国家或地区。
返回结果为国家或地区的中文名称。 |
|
ip_to_country(KEY,'en') | 分析目标IP地址所属国家或地区。
返回结果为国家或地区的代码。 |
|
ip_to_country_code(KEY) | 分析目标IP地址所属国家或地区。
返回结果为国家或地区的代码。 |
|
ip_to_province(KEY) | 分析目标IP地址所属省份。
返回结果为省份的中文名称。 |
|
ip_to_province(KEY,'en') | 分析目标IP地址所属省份。
返回结果为省份的行政区划代码。 |
|
ip_to_city(KEY) | 分析目标IP地址所属城市。
返回结果为城市的中文名称。 |
|
ip_to_city(KEY,'en') | 分析目标IP地址所属城市。
返回结果为城市的行政区划代码。 |
|
ip_to_geo(KEY) | 分析目标IP地址所在位置的经纬度。
返回结果格式为 关于geohash函数的详细信息,请参见地理函数。 |
|
ip_to_city_geo(KEY) | 分析目标IP地址所属城市的经纬度。此函数返回的是城市经纬度,每个城市只有一个经纬度。
返回结果格式为 |
|
ip_to_provider(KEY) | 分析目标IP地址对应的网络运营商。
返回结果为网络运营商名称。 |
|
IP网段函数
函数名称 | 说明 | 示例 |
---|---|---|
ip_prefix(KEY,prefix_bits) | 获取目标IP地址的前缀。
返回结果为子网掩码格式的IP地址,例如192.168.1.0/24。 |
|
ip_subnet_min(KEY) | 获取IP网段中的最小IP地址。
返回结果为IP地址,例如192.168.1.0。 |
|
ip_subnet_max(KEY) | 获取IP网段中最大IP地址。
返回结果为IP地址,例如192.168.1.255。 |
|
ip_subnet_range(KEY) | 获取IP网段范围。
返回结果为Array类型的IP地址,例如["192.168.1.0","192.168.1.255"]。 |
|
is_subnet_of('IP网段',KEY) | 判断目标IP地址是否在某网段内。
返回结果为布尔值。 |
|
is_prefix_subnet_of('IP网段',KEY) | 判断目标网段是否为某网段的子网。
返回结果为布尔值。 |
|
示例
- 统计不是来自内网的请求总数。
* | SELECT count(*) AS PV where ip_to_domain(client_ip)!='intranet'
- 统计请求总数Top10的省份。
* | SELECT count(*) as PV, ip_to_province(client_ip) AS province GROUP BY province ORDER BY PV desc LIMIT 10
如果上述结果中包含了内网请求,且您希望过滤这部分请求,可参考如下查询和分析语句。* | SELECT count(*) AS PV, ip_to_province(client_ip) AS province WHERE ip_to_domain(client_ip) != 'intranet' GROUP BY province ORDER BY PV DESC LIMIT 10
- 统计不同国家(地区)的平均响应延时、最大响应延时以及最大延时对应的请求。
* | SELECT AVG(latency) AS avg_latency, MAX(latency) AS max_latency, MAX_BY(requestId, latency) AS requestId, ip_to_country(client_ip) AS country GROUP BY country
- 统计不同网络运营商的平均延时。
* | SELECT AVG(latency) AS avg_latency, ip_to_provider(client_ip) AS provider GROUP BY provider ORDER BY avg_latency
- 统计IP地址的经纬度,确认客户端分布情况。
* | SELECT count(*) AS PV , ip_to_geo(client_ip) AS geo GROUP BY geo ORDER BY PV DESC