Este tema describe la sintaxis básica y los ejemplos de las funciones IP.
Simple Log Service admite las siguientes funciones IP.
En las instrucciones analíticas de Log Service, encierre las cadenas entre comillas simples (''). Log Service interpreta los valores sin comillas o aquellos encerrados entre comillas dobles ("") como un nombre de campo o de columna. Por ejemplo, 'status' es una cadena, mientras que status o "status" hace referencia al campo de registro llamado status.
|
Categoría |
Función |
Sintaxis |
Descripción |
SQL |
SPL |
|
Funciones de dirección IPv4 |
|
Devuelve el nombre en chino de la ciudad correspondiente a la dirección IPv4 especificada. |
√ |
× |
|
|
|
Devuelve el código de división administrativa de la ciudad correspondiente a la dirección IPv4 especificada. |
√ |
× |
||
|
|
Devuelve la longitud y latitud de la ciudad correspondiente a la dirección IPv4 especificada. Cada ciudad corresponde a un único par de longitud y latitud. |
√ |
× |
||
|
|
Devuelve el nombre en chino del país o región correspondiente a la dirección IPv4 especificada. |
√ |
× |
||
|
|
Devuelve el código de país o región correspondiente a la dirección IPv4 especificada. |
√ |
× |
||
|
|
Devuelve el código de país o región correspondiente a la dirección IPv4 especificada. El resultado devuelto es el código de país o región. |
√ |
× |
||
|
|
Determina si la dirección IPv4 especificada es una dirección privada o pública. |
√ |
× |
||
|
|
Devuelve la longitud y latitud correspondientes a la dirección IPv4 especificada. |
√ |
× |
||
|
|
Devuelve el proveedor de servicios de Internet (ISP) correspondiente a la dirección IPv4 especificada. |
√ |
× |
||
|
|
Devuelve el nombre en chino del state correspondiente a la dirección IPv4 especificada. El resultado devuelto es el nombre en chino del state. |
√ |
× |
||
|
|
Devuelve el código de división administrativa del state correspondiente a la dirección IPv4 especificada. El resultado es el código de división administrativa del state. |
√ |
× |
||
|
Funciones de bloque CIDR IPv4 |
|
Devuelve el prefijo de red para la dirección IPv4 y la longitud de prefijo especificadas. |
√ |
× |
|
|
|
Determina si un bloque CIDR IPv4 es subred de otro. |
√ |
× |
||
|
|
Comprueba si una dirección IPv4 se encuentra dentro de un bloque CIDR IPv4 especificado. |
√ |
× |
||
|
|
Devuelve la dirección IP más alta en el bloque CIDR IPv4 especificado. |
√ |
× |
||
|
|
Devuelve la dirección IP más baja en el bloque CIDR IPv4 especificado. |
√ |
× |
||
|
|
Devuelve el rango de direcciones IP del bloque CIDR IPv4 especificado. |
√ |
× |
||
|
Funciones de dirección IPv6 |
|
Devuelve el nombre en chino de la ciudad correspondiente a la dirección IPv6 especificada. |
√ |
× |
|
|
|
Devuelve el código de división administrativa de la ciudad correspondiente a la dirección IPv6 especificada. |
√ |
× |
||
|
|
Devuelve la longitud y latitud de la ciudad correspondiente a la dirección IPv6 especificada. |
√ |
× |
||
|
|
Devuelve el nombre en chino del país o región correspondiente a la dirección IPv6 especificada. |
√ |
× |
||
|
|
Devuelve el código de país o región correspondiente a la dirección IPv6 especificada. |
√ |
× |
||
|
|
Determina si la dirección IPv6 especificada es una dirección privada o pública. |
√ |
× |
||
|
|
Devuelve el proveedor de servicios de Internet (ISP) correspondiente a la dirección IPv6 especificada. |
√ |
× |
||
|
|
Devuelve el nombre en chino de la provincia correspondiente a la dirección IPv6 especificada. |
√ |
× |
||
|
|
Devuelve el código de división administrativa de la provincia correspondiente a la dirección IPv6 especificada. |
√ |
× |
Función ip_to_city
La función ip_to_city devuelve la ciudad correspondiente a una dirección IPv4 especificada.
Sintaxis
-
Devuelve el nombre en chino de una ciudad.
ip_to_city(x) -
Devuelve el código de división administrativa de una ciudad.
ip_to_city(x,'en')
Parámetros
|
Parámetro |
Descripción |
|
x |
Una dirección IPv4. |
Tipo de valor devuelto
varchar
Ejemplos
Este ejemplo calcula el tiempo promedio de solicitud, el tiempo máximo de solicitud y el ID de solicitud asociado al tiempo máximo para cada ciudad.
-
Instrucción de consulta y análisis
* | 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 La consulta devuelve tres registros: Tianjin (avg_request_time: 44.85, max_request_time: 80.0, requestId: i-02); Lijiang (avg_request_time: 46.47, max_request_time: 80.0, requestId: i-01); y Hegang (avg_request_time: 43.87, max_request_time: 80.0, requestId: i-01).
Función ip_to_city_geo
La función ip_to_city_geo devuelve la longitud y latitud de la ciudad correspondiente a una dirección IPv4 especificada.
Sintaxis
ip_to_city_geo(x)
Parámetros
|
Parámetro |
Descripción |
|
x |
Una dirección IPv4. |
Tipo de valor devuelto
Una cadena varchar con el formato latitude,longitude.
Ejemplos
Obtenga la longitud y latitud de las direcciones IPv4 para mapear la distribución de clientes.
-
Instrucción de consulta
* | SELECT count(*) AS PV, ip_to_city_geo(client_ip) AS geo GROUP BY geo ORDER BY PV DESC La consulta devuelve dos filas. La primera fila tiene un
PVde 9113 y un valorgeode 39.9288,116.389 (Beijing). La segunda fila tiene unPVde 5784 y un valorgeode 31.2222,121.458060 (Shanghai).
Función ip_to_country
La función ip_to_country devuelve el país o región correspondiente a una dirección IPv4 especificada.
Sintaxis
-
Devuelve el nombre del país o región en chino.
ip_to_country(x) -
Devuelve el código de país o región.
ip_to_country(x,'en')
Parámetros
|
Parámetro |
Descripción |
|
x |
Una dirección IPv4. |
Tipo de valor devuelto
varchar
Ejemplos
Este ejemplo calcula el tiempo promedio de solicitud, el tiempo máximo de solicitud y el ID de solicitud correspondiente al tiempo máximo para cada país o región.
-
Instrucción de consulta
* | 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 Los resultados de la consulta y el análisis muestran tres registros: Hong Kong (China) (
avg_request_time: 45.27,max_request_time: 80.0,requestId: i-02); Australia (avg_request_time: 47.08,max_request_time: 80.0,requestId: i-01); e India (avg_request_time: 39.39,max_request_time: 77.0,requestId: i-01).
Uso en Data Transformation (nuevo editor)
Data Transformation (nuevo editor) utiliza sintaxis SPL e invoca funciones IP mediante la instrucción extend. La sintaxis DSL heredada que combina e_set con v() ya no es compatible.
El siguiente ejemplo analiza el país y la ciudad de un campo IP:
* | extend country = ip_to_country(ip), city = ip_to_city(ip)
Resultado de análisis de muestra: 203.0.113.1 → country: United States, city: Richardson.
Función ip_to_country_code
La función ip_to_country_code devuelve el código de país o región para una dirección IPv4 dada.
Sintaxis
ip_to_country_code(x)
Parámetros
|
Parámetro |
Descripción |
|
x |
La dirección IPv4. |
Tipo de valor devuelto
varchar
Ejemplos
La siguiente consulta calcula el tiempo promedio de solicitud, el tiempo máximo de solicitud y el ID de solicitud asociado al tiempo máximo de solicitud para cada país o región.
-
Consulta
* | 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 La consulta devuelve dos filas de resultados. En la primera fila, avg_request_time es
45.012, max_request_time es80.0, requestId esi-01y country esMO. En la segunda fila, avg_request_time es46.286, max_request_time es77.0, requestId esi-02y country esGB.
Función ip_to_domain
La función ip_to_domain determina si una dirección IPv4 es una dirección privada o una dirección pública.
Sintaxis
ip_to_domain(x)
Parámetros
|
Parámetro |
Descripción |
|
x |
Una dirección IPv4. |
Tipo de valor devuelto
Devuelve una cadena varchar con uno de los siguientes valores:
'intranet': indica una dirección privada.
'internet': indica una dirección pública.
Ejemplos
Cuente el número de solicitudes que no se originan en una red privada.
-
Instrucción de consulta
* | SELECT count(*) AS PV where ip_to_domain(client_ip) != 'intranet' Resultados de la consulta y el análisis: El recuento de PV es
941786.
Función ip_to_geo
La función ip_to_geo devuelve la latitud y longitud correspondientes a una dirección IPv4 especificada. Para obtener más información sobre las funciones geográficas, consulte Geo functions.
Sintaxis
ip_to_geo(x)
Parámetros
|
Parámetro |
Descripción |
|
x |
Una dirección IPv4. |
Tipo de valor devuelto
Una cadena varchar con el formato latitude,longitude.
Ejemplos
Este ejemplo recupera la latitud y longitud de las direcciones IPv4 para identificar la distribución de clientes.
-
Instrucción de consulta
* | SELECT count(*) AS PV, ip_to_geo(client_ip) AS geo GROUP BY geo ORDER BY PV DESC Los resultados de la consulta y el análisis contienen dos registros de muestra: uno con un PV de 5122 y un geo de 39.1423,117,173, y otro con un PV de 4960 y un geo de 29.5569,106,553.
Función ip_to_provider
La función ip_to_provider devuelve el ISP de una dirección IPv4.
Sintaxis
ip_to_provider(x)
Parámetros
|
Parámetro |
Descripción |
|
x |
Una dirección IPv4. |
Tipo de valor devuelto
Una cadena varchar.
Ejemplos
Calcule el tiempo promedio de solicitud por ISP.
-
Instrucción de consulta
* | SELECT avg(request_time) AS avg_request_time, ip_to_provider(client_ip) AS provider GROUP BY provider ORDER BY avg_request_time La consulta devuelve tres filas. Los valores de avg_request_time son 18.0, 25.0 y 26.0, con los valores de proveedor correspondientes: Reliance Communications, CAT y Wangsu.
Función ip_to_province
La función ip_to_province devuelve el state correspondiente a una dirección IPv4 dada.
Sintaxis
-
Devuelve el nombre en chino del state.
ip_to_province(x) -
Devuelve el nombre en inglés del state.
ip_to_province(x,'en')
Parámetros
|
Parámetro |
Descripción |
|
x |
La dirección IPv4 que se va a consultar. |
Tipo de valor devuelto
VARCHAR
Ejemplos
Calcule las 10 principales states por total de solicitudes.
-
Instrucción de consulta
* | SELECT count(*) as PV, ip_to_province(client_ip) AS province GROUP BY province ORDER BY PV desc LIMIT 10Para filtrar las solicitudes de intranet de los resultados, utilice la siguiente instrucción de consulta.
* | 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 Resultados de la consulta: Al ejecutar la primera instrucción de consulta se obtiene una tabla con las columnas PV y province. Los resultados están ordenados por PV en orden descendente. En los resultados de muestra, la provincia de Guangdong ocupa el primer lugar con un PV de 368. Si una dirección IP no se puede resolver a una provincia, el valor en la columna province estará vacío.
Función ip_prefix
La función ip_prefix devuelve el prefijo de subred para una dirección IPv4 dada en notación CIDR, como 192.168.1.0/24.
Sintaxis
ip_prefix(x, prefix_bits)
Parámetros
|
Parámetro |
Descripción |
|
x |
La dirección IPv4. |
|
prefix_bits |
La longitud del prefijo. |
Tipo de valor devuelto
varchar
Ejemplos
Obtenga el prefijo de subred para las direcciones IP en el campo client_ip.
-
Instrucción de consulta
* | SELECT ip_prefix(client_ip,24) AS client_ip La consulta devuelve una columna
client_ipque contiene prefijos de subred /24, comoxx.xx.xx.0/24.
is_prefix_subnet_of
is_prefix_subnet_of comprueba si un bloque CIDR IPv4 es subred de otro.
Sintaxis
is_prefix_subnet_of(x, y)
Parámetros
|
Parámetro |
Descripción |
|
x |
El bloque CIDR IPv4 principal. |
|
y |
El bloque CIDR IPv4 que se va a probar como posible subred. |
Tipo de valor devuelto
Devuelve un valor booleano: true si y es una subred de x, y false en caso contrario.
Ejemplos
Este ejemplo comprueba si el bloque CIDR derivado del campo client_ip es una subred de 192.168.0.1/24.
-
Instrucción de consulta
* | SELECT is_prefix_subnet_of('192.168.0.1/24',concat(client_ip,'/24')) Los resultados de la consulta y el análisis contienen una columna
_col0con dos filas, ambas con el valorfalse. Un valor false indica que el client_ip del registro correspondiente no se encuentra en la subred 192.168.0.1/24.
Función is_subnet_of
La función is_subnet_of determina si una dirección IPv4 se encuentra dentro de un bloque CIDR.
Sintaxis
is_subnet_of(x, y)
Parámetros
|
Parámetro |
Descripción |
|
x |
El bloque CIDR IPv4. |
|
y |
La dirección IPv4. |
Tipo de valor devuelto
Boolean
Ejemplos
Compruebe si el valor del campo client_ip se encuentra en el bloque CIDR 192.168.0.1/24.
-
Instrucción de consulta
* | SELECT is_subnet_of('192.168.0.1/24',client_ip)
Función ip_subnet_min
La función ip_subnet_min devuelve la dirección IP más baja en un bloque CIDR IPv4.
Sintaxis
ip_subnet_min(x)
Parámetros
|
Parámetro |
Descripción |
|
x |
Un bloque CIDR IPv4. |
Tipo de valor devuelto
varchar
Ejemplos
Este ejemplo devuelve la dirección IP más baja en el bloque CIDR que contiene la dirección IP del campo client_ip.
-
Instrucción de consulta
* | SELECT ip_subnet_min(concat(client_ip,'/24')) La consulta devuelve una sola fila con una columna llamada
_col0. Esta columna muestra la dirección IP más baja en el bloque CIDR /24 que contiene elclient_ip. Parte del contenido está oculto.
Función ip_subnet_max
La función ip_subnet_max devuelve la dirección IP más alta en un bloque CIDR IPv4.
Sintaxis
ip_subnet_max(x)
Parámetros
|
Parámetro |
Descripción |
|
x |
Un bloque CIDR IPv4. |
Tipo de valor devuelto
varchar
Ejemplos
Calcula la dirección IP más alta de la subred /24 para la dirección IP en el campo client_ip.
-
Instrucción de consulta y análisis
* | SELECT ip_subnet_max(concat(client_ip,'/24')) La columna
_col0muestra el resultado de la funciónip_subnet_max: la dirección IP más alta de la subred /24. Parte del contenido está redactado.
ip_subnet_range
La función ip_subnet_range devuelve las direcciones inicial y final de un bloque CIDR IPv4.
Sintaxis
ip_subnet_range(x)
Parámetros
|
Parámetro |
Descripción |
|
x |
Un bloque CIDR IPv4. |
Tipo de valor devuelto
Un arreglo JSON.
Ejemplos
Recupere el rango de direcciones del bloque CIDR IPv4 que contiene la dirección IP en el campo client_ip.
-
Instrucción de consulta y análisis
* | SELECT ip_subnet_range(concat(client_ip,'/24')) Los resultados de la consulta y el análisis contienen la columna
_col0. Esta columna contiene un arreglo JSON, como["xxx.xxx.xxx.0","xxx.xxx.xxx.255"], que representa las direcciones inicial y final del bloque CIDR IPv4.
ipv6_to_city
La función ipv6_to_city devuelve la ciudad correspondiente a una dirección IPv6 específica.
Sintaxis
ipv6_to_city(x)
Parámetros
|
Parámetro |
Descripción |
|
x |
Una dirección IPv6. |
Tipo de valor devuelto
varchar
Ejemplos
Cuente las solicitudes por ciudad.
-
Instrucción de consulta y análisis
* | SELECT ipv6_to_city(ipv6Address) AS city, count(*) AS count GROUP BY city Los resultados de la consulta y el análisis enumeran cada ciudad con su recuento de registros; por ejemplo: Anyang (18), Baoding (42), Baoshan (3) y Binzhou (9).
Ipv6_to_city_code
La función ipv6_to_city_code devuelve el código de división administrativa de la ciudad correspondiente a una dirección IPv6 específica.
Sintaxis
ipv6_to_city_code(x)
Parámetros
|
Parámetro |
Descripción |
|
x |
Una dirección IPv6. |
Tipo de valor devuelto
varchar
Ejemplos
Este ejemplo obtiene el código de división administrativa de la ciudad para una dirección IPv6.
-
Instrucción de consulta
* | SELECT ipv6Address, ipv6_to_city_code(ipv6Address) AS cityCode WHERE cityCode <> '' Resultados de la consulta y el análisis: La función
ipv6_to_city_codeconvierte la dirección IPv6 y devuelve un cityCode de350100.
Ipv6_to_city_geo
La función ipv6_to_city_geo devuelve la longitud y latitud de una dirección IPv6.
Sintaxis
ipv6_to_city_geo(x)
Parámetros
|
Parámetro |
Descripción |
|
x |
Una |
Tipo de valor devuelto
La función devuelve una cadena varchar con el formato longitud,latitud.
Ejemplos
Este ejemplo muestra cómo obtener la longitud y latitud de direcciones IPv6 para analizar la distribución de los clientes.
-
Instrucción de consulta
* | SELECT ipv6_to_city_geo(ipv6Address) AS geo, count(*) AS PV GROUP BY geo ORDER BY PV DESC La consulta devuelve las columnas
geoyPV. Los resultados de muestra, presentados como pares (geo, PV), incluyen: (133.397995,-24.9121, 6270), (10.45415,51.164181, 3813), (-2.23001,54.314072, 2055) y (121.5654268,25.0329636, 1893).
Función ipv6_to_country
La función ipv6_to_country identifica el país o región de una dirección IPv6 específica.
Sintaxis
ipv6_to_country(x)
Parámetros
|
Parámetro |
Descripción |
|
x |
Una dirección IPv6. |
Tipo de valor devuelto
varchar
Ejemplos
Calcule los 10 principales países o regiones según el número total de solicitudes.
-
Instrucción de consulta
* | SELECT count(*) AS PV, ipv6_to_country(ipv6Address) AS country WHERE country <> '' GROUP BY country ORDER BY PV DESC LIMIT 10 Resultados de la consulta y el análisis: La consulta devuelve 10 registros. Por ejemplo: Alemania (3813), Taiwán (2337), Reino Unido (2055), Suecia (1119), Países Bajos (1014), Estados Unidos (942), Rusia (930) y Malasia (867)...
ipv6_to_country_code
La función ipv6_to_country_code devuelve el código de país o región de una dirección IPv6.
Sintaxis
ipv6_to_country_code(x)
Parámetros
|
Parámetro |
Descripción |
|
x |
La dirección IPv6. |
Tipo de valor devuelto
Devuelve un valor varchar.
Ejemplos
Este ejemplo obtiene el código de país o región de una dirección IPv6.
-
Instrucción de consulta
* | SELECT ipv6Address, ipv6_to_country_code(ipv6Address) AS code WHERE cityCode <> '' En los resultados de la consulta, la función
ipv6_to_country_coderesuelve una dirección IPv6 a su código de país; por ejemplo,CNpara una dirección en China.
Función ipv6_to_domain
La función ipv6_to_domain clasifica una dirección IPv6 como dirección privada o dirección pública.
Sintaxis
ipv6_to_domain(x)
Parámetros
|
Parámetro |
Descripción |
|
x |
Una dirección IPv6. |
Tipo de valor devuelto
varchar. La función devuelve uno de los siguientes valores:
intranet: Dirección privada.
internet: Dirección pública.
Ejemplos
Este ejemplo cuenta las solicitudes provenientes de redes privadas y redes públicas.
-
Instrucción de consulta y análisis
* | SELECT ipv6_to_domain(ipv6Address) AS domain, count(*) AS count GROUP BY domain La consulta devuelve una tabla con dos columnas: domain y count. En este ejemplo, el recuento para
intranetes 9 y parainternetes 38,067.
Función ipv6_to_provider
La función ipv6_to_provider devuelve el ISP de una dirección IPv6 específica.
Sintaxis
ipv6_to_provider(x)
Parámetros
|
Parámetro |
Descripción |
|
x |
La dirección IPv6. |
Tipo de valor devuelto
varchar
Ejemplos
Este ejemplo identifica los 10 principales ISP según el total de solicitudes.
-
Instrucción de consulta y análisis
* | SELECT ipv6_to_provider(ipv6Address) AS provider, count(*) AS count GROUP BY provider ORDER BY count DESC LIMIT 10 Resultados de la consulta y el análisis: La consulta devuelve una lista de ISP ordenada por recuento de solicitudes en orden descendente. Los 10 principales resultados incluyen entradas como
edu.tw(2235),colt.net(1512),maxis.com.my(780),citictel-cpc.com(453),CSTNET(348),ntt.com(261),att.com(258) ylibertyglobal.com(174).
Función ipv6_to_province
La función ipv6_to_province devuelve la provincia de una dirección IPv6.
Sintaxis
ipv6_to_province(x)
Parámetros
|
Parámetro |
Descripción |
|
x |
Una dirección IPv6. |
Tipo de valor devuelto
varchar
Ejemplos
Este ejemplo identifica las 10 principales provincias según el número total de solicitudes.
-
Instrucción de consulta y análisis
* | SELECT count(*) AS PV, ipv6_to_province(ipv6Address) AS province WHERE province <> '' GROUP BY province ORDER BY PV DESC LIMIT 10 Resultados de la consulta y el análisis: La consulta devuelve las columnas PV y province, ordenadas por PV en orden descendente. Los resultados de muestra incluyen Jiangsu (564), Guangdong (558), Territorio Federal de Kuala Lumpur (555), Shandong (507), Henan (435), Sichuan (354), Zhejiang (336) y Anhui (312).
Función ipv6_to_province_code
La función ipv6_to_province_code devuelve el código de división administrativa de la provincia correspondiente a una dirección IPv6 específica.
Sintaxis
ipv6_to_province_code(x)
Parámetros
|
Parámetro |
Descripción |
|
x |
Una dirección IPv6. |
Tipo de valor devuelto
varchar
Ejemplos
Obtenga el código de división administrativa de la provincia asociada a una dirección IPv6.
-
Instrucción de consulta
* | SELECT ipv6Address, ipv6_to_province_code(ipv6Address) AS code WHERE cityCode <> '' Resultados de la consulta: La columna ipv6Address enumera varias direcciones IPv6 redactadas, mientras que la columna code muestra su código de provincia correspondiente:
350000.