IP函數(shù)
本文介紹IP函數(shù)的基本語法及示例。
日志服務支持如下IP函數(shù)。
在日志服務分析語句中,表示字符串的字符必須使用單引號('')包裹,無符號包裹或被雙引號("")包裹的字符表示字段名或列名。例如:'status'表示字符串status,status或"status"表示日志字段status。
函數(shù)類型 | 函數(shù)名稱 | 語法 | 說明 | 支持SQL | 支持SPL |
IPv4地址函數(shù) | ip_to_city(x) | 分析目標IPv4地址所屬城市。 返回結果為城市的中文名稱。 | √ | × | |
ip_to_city(x, 'en') | 分析目標IPv4地址所屬城市。 返回結果為城市的行政區(qū)劃代碼。 | √ | × | ||
ip_to_city_geo(x) | 分析目標IPv4地址所屬城市的經(jīng)緯度。此函數(shù)返回的是城市經(jīng)緯度,每個城市只有一個經(jīng)緯度。 | √ | × | ||
ip_to_country(x) | 分析目標IPv4地址所屬國家或地區(qū)。 返回結果為國家或地區(qū)的中文名稱。 | √ | × | ||
ip_to_country(x, 'en') | 分析目標IPv4地址所屬國家或地區(qū)。 返回結果為國家或地區(qū)的代碼。 | √ | × | ||
ip_to_country_code(x) | 分析目標IPv4地址所屬國家或地區(qū)。 返回結果為國家或地區(qū)的代碼。 | √ | × | ||
ip_to_domain(x) | 判斷目標IPv4地址是內網(wǎng)地址還是外網(wǎng)地址。 | √ | × | ||
ip_to_geo(x) | 分析目標IPv4地址所在位置的經(jīng)緯度。 | √ | × | ||
ip_to_provider(x) | 分析目標IPv4地址所對應的網(wǎng)絡運營商。 | √ | × | ||
ip_to_province(x) | 分析目標IPv4地址所屬省份。 返回結果為省份的中文名稱。 | √ | × | ||
ip_to_province(x, 'en') | 分析目標IPv4地址所屬省份。 返回結果為省份的行政區(qū)劃代碼。 | √ | × | ||
IPv4網(wǎng)段函數(shù) | ip_prefix(x, prefix_bits) | 獲取目標IPv4地址的前綴。 | √ | × | |
is_prefix_subnet_of(x, y) | 判斷目標IPv4網(wǎng)段是否為某網(wǎng)段的子網(wǎng)。 | √ | × | ||
is_subnet_of(x, y) | 判斷目標IPv4地址是否在某網(wǎng)段內。 | √ | × | ||
ip_subnet_max(x) | 獲取IPv4網(wǎng)段中的最大IP地址。 | √ | × | ||
ip_subnet_min(x) | 獲取IPv4網(wǎng)段中的最小IP地址。 | √ | × | ||
ip_subnet_range(x) | 獲取IPv4網(wǎng)段范圍。 | √ | × | ||
IPv6地址函數(shù) | ipv6_to_city(x) | 分析目標IPv6地址所屬城市的名稱。 | √ | × | |
ipv6_to_city_code(x) | 分析目標IPv6地址所屬城市的行政區(qū)劃代碼。 | √ | × | ||
ipv6_to_city_geo(x) | 分析目標IPv6地址所屬城市的經(jīng)緯度。 | √ | × | ||
ipv6_to_country(x) | 分析目標IPv6地址所屬國家或地區(qū)。 | √ | × | ||
ipv6_to_country_code(x) | 分析目標IPv6地址所屬國家或地區(qū)的代碼。 | √ | × | ||
ipv6_to_domain(x) | 判斷目標IPv6地址是內網(wǎng)地址還是外網(wǎng)地址。 | √ | × | ||
ipv6_to_provider(x) | 分析目標IPv6地址所對應的網(wǎng)絡運營商。 | √ | × | ||
ipv6_to_province(x) | 分析目標IPv6地址所屬省份。 | √ | × | ||
ipv6_to_province_code(x) | 分析目標IPv6地址所屬省份的行政區(qū)劃代碼。 | √ | × |
ip_to_city函數(shù)
ip_to_city函數(shù)用于分析目標IPv4地址所屬城市。
語法
返回城市的中文名稱。
ip_to_city(x)
返回城市的行政區(qū)劃代碼。
ip_to_city(x,'en')
參數(shù)說明
參數(shù) | 說明 |
x | 參數(shù)值為IPv4地址。 |
返回值類型
varchar類型。
示例
統(tǒng)計來自不同城市的請求的平均時間、最大時間以及最大時間對應的請求ID。
查詢和分析語句
* | SELECT AVG(request_time) AS avg_request_time, MAX(request_time) AS max_request_time, MAX_BY(requestId, request_time) AS requestId, ip_to_city(client_ip) AS city GROUP BY city
查詢和分析結果
ip_to_city_geo函數(shù)
ip_to_city_geo函數(shù)用于分析目標IPv4地址所屬城市的經(jīng)緯度。此函數(shù)返回的是城市經(jīng)緯度,每個城市只有一個經(jīng)緯度。
語法
ip_to_city_geo(x)
參數(shù)說明
參數(shù) | 說明 |
x | 參數(shù)值為IPv4地址。 |
返回值類型
varchar類型,格式為緯度,經(jīng)度
。
示例
統(tǒng)計IPv4地址的經(jīng)緯度,確認客戶端分布情況。
查詢和分析語句
* | SELECT count(*) AS PV, ip_to_city_geo(client_ip) AS geo GROUP BY geo ORDER BY PV DESC
查詢和分析結果
ip_to_country函數(shù)
ip_to_country函數(shù)用于分析目標IPv4地址所屬國家或地區(qū)。
語法
返回國家或地區(qū)的中文名稱。
ip_to_country(x)
返回國家或地區(qū)的代碼。
ip_to_country(x,'en')
參數(shù)說明
參數(shù) | 說明 |
x | 參數(shù)值為IPv4地址。 |
返回值類型
varchar類型。
示例
統(tǒng)計來自不同國家或地區(qū)的請求的平均時間、最大時間以及最大時間對應的請求ID。
查詢和分析語句
* | SELECT AVG(request_time) AS avg_request_time, MAX(request_time) AS max_request_time, MAX_BY(requestId, request_time) AS requestId, ip_to_country(client_ip) AS country GROUP BY country
查詢和分析結果
ip_to_country_code函數(shù)
ip_to_country_code函數(shù)用于分析目標IPv4地址所屬國家或地區(qū),返回國家或地區(qū)的代碼。
語法
ip_to_country_code(x)
參數(shù)說明
參數(shù) | 說明 |
x | 參數(shù)值為IPv4地址。 |
返回值類型
varchar類型。
示例
統(tǒng)計來自不同國家或地區(qū)的請求的平均時間、最大時間以及最大時間對應的請求ID。
查詢和分析語句
* | SELECT AVG(request_time) AS avg_request_time, MAX(request_time) AS max_request_time, MAX_BY(requestId, request_time) AS requestId, ip_to_country_code(client_ip) AS country GROUP BY country
查詢和分析結果
ip_to_domain函數(shù)
ip_to_domain函數(shù)用于判斷目標IPv4地址是內網(wǎng)地址還是外網(wǎng)地址。
語法
ip_to_domain(x)
參數(shù)說明
參數(shù) | 說明 |
x | 參數(shù)值為IPv4地址。 |
返回值類型
varchar類型,返回intranet或internet。
intranet表示內網(wǎng)。
internet表示外網(wǎng)。
示例
統(tǒng)計不是來自內網(wǎng)的請求總數(shù)。
查詢和分析語句
* | SELECT count(*) AS PV where ip_to_domain(client_ip) != 'intranet'
查詢和分析結果
ip_to_geo函數(shù)
ip_to_geo函數(shù)用于分析目標IPv4地址所在位置的經(jīng)緯度。關于geohash函數(shù)的詳細信息,請參見地理函數(shù)。
語法
ip_to_geo(x)
參數(shù)說明
參數(shù) | 說明 |
x | 參數(shù)值為IPv4地址。 |
返回值類型
varchar類型,格式為緯度,經(jīng)度
。
示例
統(tǒng)計IPv4地址的經(jīng)緯度,確認客戶端分布情況。
查詢和分析語句
* | SELECT count(*) AS PV, ip_to_geo(client_ip) AS geo GROUP BY geo ORDER BY PV DESC
查詢和分析結果
ip_to_provider函數(shù)
ip_to_provider函數(shù)用于分析目標IPv4地址對應的網(wǎng)絡運營商。
語法
ip_to_provider(x)
參數(shù)說明
參數(shù) | 說明 |
x | 參數(shù)值為IPv4地址。 |
返回值類型
varchar類型。
示例
統(tǒng)計通過不同網(wǎng)絡運營商發(fā)起的請求的平均請求時間。
查詢和分析語句
* | SELECT avg(request_time) AS avg_request_time, ip_to_provider(client_ip) AS provider GROUP BY provider ORDER BY avg_request_time
查詢和分析結果
ip_to_province函數(shù)
ip_to_province函數(shù)分析目標IPv4地址所屬省份。
語法
返回省份的中文名稱。
ip_to_province(x)
返回省份的行政區(qū)劃代碼。
ip_to_province(x,'en')
參數(shù)說明
參數(shù) | 說明 |
x | 參數(shù)值為IPv4地址。 |
返回值類型
varchar類型。
示例
統(tǒng)計請求總數(shù)Top10的省份。
查詢和分析語句
* | SELECT count(*) as PV, ip_to_province(client_ip) AS province GROUP BY province ORDER BY PV desc LIMIT 10
如果上述結果中包含了內網(wǎng)請求,且您希望過濾這部分請求,可參考如下查詢和分析語句。
* | 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
查詢和分析結果
ip_prefix函數(shù)
ip_prefix函數(shù)用于獲取目標IPv4地址的前綴。返回子網(wǎng)掩碼格式的IPv4地址,例如192.168.1.0/24。
語法
ip_prefix(x, prefix_bits)
參數(shù)說明
參數(shù) | 說明 |
x | 參數(shù)值為IPv4地址。 |
prefix_bits | 前綴位數(shù)。 |
返回值類型
varchar類型。
示例
獲取client_ip字段值的IP地址前綴。
查詢和分析語句
* | SELECT ip_prefix(client_ip,24) AS client_ip
查詢和分析結果
is_prefix_subnet_of函數(shù)
is_prefix_subnet_of函數(shù)用于判斷目標網(wǎng)段是否為某網(wǎng)段的子網(wǎng)。
語法
is_prefix_subnet_of(x, y)
參數(shù)說明
參數(shù) | 說明 |
x | 參數(shù)值為IPv4網(wǎng)段。y網(wǎng)段是否屬于x網(wǎng)段內。 |
y | 參數(shù)值為IPv4網(wǎng)段。 |
返回值類型
boolean類型。
示例
判斷client_ip字段值所在網(wǎng)段是否屬于192.168.0.1/24網(wǎng)段內。
查詢和分析語句
* | SELECT is_prefix_subnet_of('192.168.0.1/24',concat(client_ip,'/24'))
查詢和分析結果
is_subnet_of函數(shù)
is_subnet_of函數(shù)用于判斷目標IPv4地址是否在某網(wǎng)段內。
語法
is_subnet_of(x, y)
參數(shù)說明
參數(shù) | 說明 |
x | 參數(shù)值為IPv4網(wǎng)段。 |
y | 參數(shù)值為IPv4地址。 |
返回值類型
boolean類型。
示例
判斷client_ip字段值是否屬于192.168.0.1/24網(wǎng)段內。
查詢和分析語句
* | SELECT is_subnet_of('192.168.0.1/24',client_ip)
查詢和分析結果
ip_subnet_min函數(shù)
ip_subnet_min函數(shù)用于獲取IPv4網(wǎng)段中的最小IP地址。
語法
ip_subnet_min(x)
參數(shù)說明
參數(shù) | 說明 |
x | 參數(shù)值為IPv4網(wǎng)段。 |
返回值類型
varchar類型。
示例
獲取client_ip字段值所在網(wǎng)段的最小IP地址。
查詢和分析語句
* | SELECT ip_subnet_min(concat(client_ip,'/24'))
查詢和分析結果
ip_subnet_max函數(shù)
ip_subnet_max函數(shù)用于獲取IPv4網(wǎng)段中最大IP地址。
語法
ip_subnet_max(x)
參數(shù)說明
參數(shù) | 說明 |
x | 參數(shù)值為IPv4網(wǎng)段。 |
返回值類型
varchar類型。
示例
獲取client_ip字段值所在網(wǎng)段的最大IP地址。
查詢和分析語句
* | SELECT ip_subnet_max(concat(client_ip,'/24'))
查詢和分析結果
ip_subnet_range函數(shù)
ip_subnet_range用于獲取IPv4網(wǎng)段范圍。
語法
ip_subnet_range(x)
參數(shù)說明
參數(shù) | 說明 |
x | 參數(shù)值為IPv4網(wǎng)段。 |
返回值類型
JSON類型。
示例
獲取client_ip字段值所在網(wǎng)段的范圍。
查詢和分析語句
* | SELECT ip_subnet_range(concat(client_ip,'/24'))
查詢和分析結果
ipv6_to_city函數(shù)
ipv6_to_city函數(shù)用于分析目標IPv6地址所屬城市的名稱。
語法
ipv6_to_city(x)
參數(shù)說明
參數(shù) | 說明 |
x | 參數(shù)值為IPv6的地址。 |
返回值類型
varchar類型
示例
統(tǒng)計不同城市請求的數(shù)量。
查詢和分析語句
* | SELECT ipv6_to_city(ipv6Address) AS city, count(*) AS count GROUP BY city
查詢和分析結果
ipv6_to_city_code函數(shù)
ipv6_to_city_code函數(shù)用于分析目標IPv6地址所屬城市的行政區(qū)劃代碼。
語法
ipv6_to_city_code(x)
參數(shù)說明
參數(shù) | 說明 |
x | 參數(shù)值為IPv6的地址。 |
返回值類型
varchar類型
示例
獲取IPv6對應城市的行政區(qū)劃代碼。
查詢和分析語句
* | SELECT ipv6Address, ipv6_to_city_code(ipv6Address) AS cityCode WHERE cityCode <> ''
查詢和分析結果
ipv6_to_city_geo函數(shù)
ipv6_to_city_geo函數(shù)用于分析目標IPv6地址所屬城市的經(jīng)緯度。
語法
ipv6_to_city_geo(x)
參數(shù)說明
參數(shù) | 說明 |
x | 參數(shù)值為IPv6的地址。 |
返回值類型
varchar類型,格式為經(jīng)度,緯度
。
示例
統(tǒng)計IPv6地址的經(jīng)緯度,確認客戶端分布情況。
查詢和分析語句
* | SELECT ipv6_to_city_geo(ipv6Address) AS geo, count(*) AS PV GROUP BY geo ORDER BY PV DESC
查詢和分析結果
ipv6_to_country函數(shù)
ipv6_to_country函數(shù)用于分析目標IPv6地址所屬國家或地區(qū)。
語法
ipv6_to_country(x)
參數(shù)說明
參數(shù) | 說明 |
x | 參數(shù)值為IPv6的地址。 |
返回值類型
varchar類型
示例
統(tǒng)計請求總數(shù)Top10的國家或地域。
查詢和分析語句
* | SELECT count(*) AS PV, ipv6_to_country(ipv6Address) AS country WHERE country <> '' GROUP BY country ORDER BY PV DESC LIMIT 10
查詢和分析結果
ipv6_to_country_code函數(shù)
ipv6_to_country_code函數(shù)用于分析目標IPv6地址所屬國家或地區(qū)的代碼。
語法
ipv6_to_country_code(x)
參數(shù)說明
參數(shù) | 說明 |
x | 參數(shù)值為IPv6的地址。 |
返回值類型
varchar類型
示例
獲取IPv6地址所屬國家或地區(qū)的代碼。
查詢和分析語句
* | SELECT ipv6Address, ipv6_to_country_code(ipv6Address) AS code WHERE cityCode <> ''
查詢和分析結果
ipv6_to_domain函數(shù)
ipv6_to_domain函數(shù)用于判斷目標IP地址是內網(wǎng)地址還是外網(wǎng)地址。
語法
ipv6_to_domain(x)
參數(shù)說明
參數(shù) | 說明 |
x | 參數(shù)值為IPv6的地址。 |
返回值類型
varchar類型,返回intranet或internet。
intranet表示內網(wǎng)。
internet表示外網(wǎng)。
示例
統(tǒng)計內外網(wǎng)請求的總數(shù)。
查詢和分析語句
* | SELECT ipv6_to_domain(ipv6Address) AS domain, count(*) AS count GROUP BY domain
查詢和分析結果
ipv6_to_provider函數(shù)
ipv6_to_provider函數(shù)用于分析目標IP地址所對應的網(wǎng)絡運營商。
語法
ipv6_to_provider(x)
參數(shù)說明
參數(shù) | 說明 |
x | 參數(shù)值為IPv6的地址。 |
返回值類型
varchar類型
示例
統(tǒng)計請求總數(shù)Top10的網(wǎng)絡運營商。
查詢和分析語句
* | SELECT ipv6_to_provider(ipv6Address) AS provider, count(*) AS count GROUP BY provider ORDER BY count DESC LIMIT 10
查詢和分析結果
ipv6_to_province函數(shù)
ipv6_to_province函數(shù)用于分析目標IPv6地址所屬省份。
語法
ipv6_to_province(x)
參數(shù)說明
參數(shù) | 說明 |
x | 參數(shù)值為IPv6的地址。 |
返回值類型
varchar類型
示例
統(tǒng)計請求總數(shù)Top10的省份。
查詢和分析語句
* | SELECT count(*) AS PV, ipv6_to_province(ipv6Address) AS province WHERE province <> '' GROUP BY province ORDER BY PV DESC LIMIT 10
查詢和分析結果
ipv6_to_province_code函數(shù)
ipv6_to_province_code函數(shù)用于分析目標IPv6地址所屬省份的行政區(qū)劃代碼。
語法
ipv6_to_province_code(x)
參數(shù)說明
參數(shù) | 說明 |
x | 參數(shù)值為IPv6的地址。 |
返回值類型
varchar類型
示例
獲取IPv6地址所屬省份的行政區(qū)劃代碼。
查詢和分析語句
* | SELECT ipv6Address, ipv6_to_province_code(ipv6Address) AS code WHERE cityCode <> ''
查詢和分析結果