Este tópico descreve a sintaxe básica e exemplos das funções IP.
O Simple Log Service oferece suporte às seguintes funções IP.
Nas instruções analíticas do Log Service, coloque strings entre aspas simples (''). O Log Service interpreta valores sem aspas ou entre aspas duplas ("") como nomes de campos ou colunas. Por exemplo, 'status' é uma string, enquanto status ou "status" refere-se ao campo de log chamado status.
|
Categoria |
Função |
Sintaxe |
Descrição |
SQL |
SPL |
|
Funções de endereço IPv4 |
|
Retorna o nome em chinês da cidade do endereço IPv4 especificado. |
√ |
× |
|
|
|
Retorna o código de divisão administrativa da cidade do endereço IPv4 especificado. |
√ |
× |
||
|
|
Retorna a longitude e a latitude da cidade do endereço IPv4 especificado. Cada cidade corresponde a um único par de longitude e latitude. |
√ |
× |
||
|
|
Retorna o nome em chinês do país ou região do endereço IPv4 especificado. |
√ |
× |
||
|
|
Retorna o código do país ou região do endereço IPv4 especificado. |
√ |
× |
||
|
|
Retorna o código do país ou região do endereço IPv4 especificado. O resultado retornado é o código do país ou região. |
√ |
× |
||
|
|
Determina se o endereço IPv4 especificado é privado ou público. |
√ |
× |
||
|
|
Retorna a longitude e a latitude do endereço IPv4 especificado. |
√ |
× |
||
|
|
Retorna o provedor de serviços de Internet (ISP) do endereço IPv4 especificado. |
√ |
× |
||
|
|
Retorna o nome em chinês da estado do endereço IPv4 especificado. O resultado retornado é o nome em chinês da estado. |
√ |
× |
||
|
|
Retorna o código de divisão administrativa da estado do endereço IPv4 especificado. O resultado é o código de divisão administrativa da estado. |
√ |
× |
||
|
Funções de bloco CIDR IPv4 |
|
Retorna o prefixo de rede do endereço IPv4 e comprimento de prefixo especificados. |
√ |
× |
|
|
|
Determina se um bloco CIDR IPv4 é sub-rede de outro. |
√ |
× |
||
|
|
Verifica se um endereço IPv4 pertence a um bloco CIDR IPv4 especificado. |
√ |
× |
||
|
|
Retorna o maior endereço IP no bloco CIDR IPv4 especificado. |
√ |
× |
||
|
|
Retorna o menor endereço IP no bloco CIDR IPv4 especificado. |
√ |
× |
||
|
|
Retorna o intervalo de endereços IP do bloco CIDR IPv4 especificado. |
√ |
× |
||
|
Funções de endereço IPv6 |
|
Retorna o nome em chinês da cidade do endereço IPv6 especificado. |
√ |
× |
|
|
|
Retorna o código de divisão administrativa da cidade do endereço IPv6 especificado. |
√ |
× |
||
|
|
Retorna a longitude e a latitude da cidade do endereço IPv6 especificado. |
√ |
× |
||
|
|
Retorna o nome em chinês do país ou região do endereço IPv6 especificado. |
√ |
× |
||
|
|
Retorna o código do país ou região do endereço IPv6 especificado. |
√ |
× |
||
|
|
Determina se o endereço IPv6 especificado é privado ou público. |
√ |
× |
||
|
|
Retorna o provedor de serviços de Internet (ISP) do endereço IPv6 especificado. |
√ |
× |
||
|
|
Retorna o nome em chinês da província do endereço IPv6 especificado. |
√ |
× |
||
|
|
Retorna o código de divisão administrativa da província do endereço IPv6 especificado. |
√ |
× |
Função ip_to_city
A função ip_to_city retorna a cidade de um endereço IPv4 especificado.
Sintaxe
-
Retorna o nome em chinês de uma cidade.
ip_to_city(x) -
Retorna o código de divisão administrativa de uma cidade.
ip_to_city(x,'en')
Parâmetros
|
Parâmetro |
Descrição |
|
x |
Um endereço IPv4. |
Tipo de valor de retorno
varchar
Exemplos
Este exemplo calcula o tempo médio de solicitação, o tempo máximo de solicitação e o ID da solicitação associado ao tempo máximo para cada cidade.
-
Instrução de consulta e análise
* | 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 A consulta retorna três 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); e Hegang (avg_request_time: 43.87, max_request_time: 80.0, requestId: i-01).
Função ip_to_city_geo
A função ip_to_city_geo retorna a longitude e a latitude da cidade de um endereço IPv4 especificado.
Sintaxe
ip_to_city_geo(x)
Parâmetros
|
Parâmetro |
Descrição |
|
x |
Um endereço IPv4. |
Tipo de valor de retorno
Uma string varchar no formato latitude,longitude.
Exemplos
Obtenha a longitude e a latitude de endereços IPv4 para mapear a distribuição de clientes.
-
Instrução de consulta
* | SELECT count(*) AS PV, ip_to_city_geo(client_ip) AS geo GROUP BY geo ORDER BY PV DESC A consulta retorna duas linhas. A primeira linha tem um
PVde 9113 e um valorgeode 39.9288,116.389 (Pequim). A segunda linha tem umPVde 5784 e um valorgeode 31.2222,121.458060 (Xangai).
Função ip_to_country
A função ip_to_country retorna o país ou região de um endereço IPv4 especificado.
Sintaxe
-
Retorna o nome do país ou região em chinês.
ip_to_country(x) -
Retorna o código do país ou região.
ip_to_country(x,'en')
Parâmetros
|
Parâmetro |
Descrição |
|
x |
Um endereço IPv4. |
Tipo de valor de retorno
varchar
Exemplos
Este exemplo calcula o tempo médio de solicitação, o tempo máximo de solicitação e o ID da solicitação correspondente ao tempo máximo para cada país ou região.
-
Instrução 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 Os resultados da consulta e análise mostram três registros: Hong Kong (China) (
avg_request_time: 45.27,max_request_time: 80.0,requestId: i-02); Austrália (avg_request_time: 47.08,max_request_time: 80.0,requestId: i-01); e Índia (avg_request_time: 39.39,max_request_time: 77.0,requestId: i-01).
Uso na Transformação de Dados (novo editor)
A Transformação de Dados (novo editor) usa sintaxe SPL e chama funções IP por meio da instrução extend. A sintaxe DSL legada que combina e_set com v() não é mais suportada.
O exemplo a seguir analisa o país e a cidade de um campo IP:
* | extend country = ip_to_country(ip), city = ip_to_city(ip)
Exemplo de resultado da análise: 203.0.113.1 → country: Estados Unidos, city: Richardson.
Função ip_to_country_code
A função ip_to_country_code retorna o código do país ou região de um determinado endereço IPv4.
Sintaxe
ip_to_country_code(x)
Parâmetros
|
Parâmetro |
Descrição |
|
x |
O endereço IPv4. |
Tipo de valor de retorno
varchar
Exemplos
A consulta a seguir calcula o tempo médio de solicitação, o tempo máximo de solicitação e o ID da solicitação associado ao tempo máximo de solicitação para cada país ou região.
-
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 A consulta retorna duas linhas de resultados. Na primeira linha, avg_request_time é
45.012, max_request_time é80.0, requestId éi-01e country éMO. Na segunda linha, avg_request_time é46.286, max_request_time é77.0, requestId éi-02e country éGB.
Função ip_to_domain
A função ip_to_domain determina se um endereço IPv4 é privado ou público.
Sintaxe
ip_to_domain(x)
Parâmetros
|
Parâmetro |
Descrição |
|
x |
Um endereço IPv4. |
Tipo de valor de retorno
Retorna uma string varchar com um dos seguintes valores:
'intranet': indica um endereço privado.
'internet': indica um endereço público.
Exemplos
Conte o número de solicitações que não se originam de uma rede privada.
-
Instrução de consulta
* | SELECT count(*) AS PV where ip_to_domain(client_ip) != 'intranet' Resultados da consulta e análise: A contagem de PV é
941786.
Função ip_to_geo
A função ip_to_geo retorna a latitude e a longitude de um endereço IPv4 especificado. Para obter mais informações sobre funções geográficas, consulte Geo functions.
Sintaxe
ip_to_geo(x)
Parâmetros
|
Parâmetro |
Descrição |
|
x |
Um endereço IPv4. |
Tipo de valor de retorno
Uma string varchar no formato latitude,longitude.
Exemplos
Este exemplo recupera a latitude e a longitude de endereços IPv4 para identificar a distribuição de clientes.
-
Instrução de consulta
* | SELECT count(*) AS PV, ip_to_geo(client_ip) AS geo GROUP BY geo ORDER BY PV DESC Os resultados da consulta e análise contêm dois registros de exemplo: um com PV de 5122 e geo de 39.1423,117.173, e outro com PV de 4960 e geo de 29.5569,106.553.
Função ip_to_provider
A função ip_to_provider retorna o ISP de um endereço IPv4.
Sintaxe
ip_to_provider(x)
Parâmetros
|
Parâmetro |
Descrição |
|
x |
Um endereço IPv4. |
Tipo de valor de retorno
Uma string varchar.
Exemplos
Calcule o tempo médio de solicitação por ISP.
-
Instrução 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 A consulta retorna três linhas. Os valores de avg_request_time são 18.0, 25.0 e 26.0, com os valores de provider correspondentes sendo Reliance Communications, CAT e Wangsu.
Função ip_to_province
A função ip_to_province retorna a estado de um determinado endereço IPv4.
Sintaxe
-
Retorna o nome em chinês da estado.
ip_to_province(x) -
Retorna o nome em inglês da estado.
ip_to_province(x,'en')
Parâmetros
|
Parâmetro |
Descrição |
|
x |
O endereço IPv4 a ser consultado. |
Tipo de valor de retorno
VARCHAR
Exemplos
Calcule as 10 principais estados pelo total de solicitações.
-
Instrução de consulta
* | SELECT count(*) as PV, ip_to_province(client_ip) AS province GROUP BY province ORDER BY PV desc LIMIT 10Para filtrar solicitações de intranet dos resultados, use a seguinte instrução 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 da consulta: A execução da primeira instrução de consulta retorna uma tabela com as colunas PV e province. Os resultados são classificados por PV em ordem decrescente. Nos resultados de exemplo, a província de Guangdong ocupa o primeiro lugar com um PV de 368. Se um endereço IP não puder ser resolvido para uma província, o valor na coluna province estará vazio.
Função ip_prefix
A função ip_prefix retorna o prefixo de sub-rede de um determinado endereço IPv4 na notação CIDR, como 192.168.1.0/24.
Sintaxe
ip_prefix(x, prefix_bits)
Parâmetros
|
Parâmetro |
Descrição |
|
x |
O endereço IPv4. |
|
prefix_bits |
O comprimento do prefixo. |
Tipo de valor de retorno
varchar
Exemplos
Obtenha o prefixo de sub-rede dos endereços IP no campo client_ip.
-
Instrução de consulta
* | SELECT ip_prefix(client_ip,24) AS client_ip A consulta retorna uma coluna
client_ipcontendo prefixos de sub-rede /24, comoxx.xx.xx.0/24.
is_prefix_subnet_of
A função is_prefix_subnet_of verifica se um bloco CIDR IPv4 é sub-rede de outro.
Sintaxe
is_prefix_subnet_of(x, y)
Parâmetros
|
Parâmetro |
Descrição |
|
x |
O bloco CIDR IPv4 pai. |
|
y |
O bloco CIDR IPv4 a ser testado como possível sub-rede. |
Tipo de valor de retorno
Retorna um valor booleano: true se y for uma sub-rede de x, e false caso contrário.
Exemplos
Este exemplo verifica se o bloco CIDR derivado do campo client_ip é uma sub-rede de 192.168.0.1/24.
-
Instrução de consulta
* | SELECT is_prefix_subnet_of('192.168.0.1/24',concat(client_ip,'/24')) Os resultados da consulta e análise contêm uma coluna
_col0com duas linhas, ambas com o valorfalse. Um valor false indica que o client_ip do log correspondente não está na sub-rede 192.168.0.1/24.
Função is_subnet_of
A função is_subnet_of determina se um endereço IPv4 está dentro de um bloco CIDR.
Sintaxe
is_subnet_of(x, y)
Parâmetros
|
Parâmetro |
Descrição |
|
x |
O bloco CIDR IPv4. |
|
y |
O endereço IPv4. |
Tipo de valor de retorno
Boolean
Exemplos
Verifique se o valor do campo client_ip está no bloco CIDR 192.168.0.1/24.
-
Instrução de consulta
* | SELECT is_subnet_of('192.168.0.1/24',client_ip)
Função ip_subnet_min
A função ip_subnet_min retorna o menor endereço IP em um bloco CIDR IPv4.
Sintaxe
ip_subnet_min(x)
Parâmetros
|
Parâmetro |
Descrição |
|
x |
Um bloco CIDR IPv4. |
Tipo de valor de retorno
varchar
Exemplos
Este exemplo retorna o menor endereço IP no bloco CIDR que contém o endereço IP do campo client_ip.
-
Instrução de consulta
* | SELECT ip_subnet_min(concat(client_ip,'/24')) A consulta retorna uma única linha com uma coluna chamada
_col0. Esta coluna mostra o menor endereço IP no bloco CIDR /24 que contém oclient_ip. Parte do conteúdo está mascarada.
Função ip_subnet_max
A função ip_subnet_max retorna o maior endereço IP em um bloco CIDR IPv4.
Sintaxe
ip_subnet_max(x)
Parâmetros
|
Parâmetro |
Descrição |
|
x |
Um bloco CIDR IPv4. |
Tipo de valor de retorno
varchar
Exemplos
Calcula o maior endereço IP da sub-rede /24 para o endereço IP no campo client_ip.
-
Instrução de consulta e análise
* | SELECT ip_subnet_max(concat(client_ip,'/24')) A coluna
_col0exibe o resultado da funçãoip_subnet_max: o maior endereço IP da sub-rede /24. Parte do conteúdo foi ocultada.
ip_subnet_range
A função ip_subnet_range retorna os endereços inicial e final de um bloco CIDR IPv4.
Sintaxe
ip_subnet_range(x)
Parâmetros
|
Parâmetro |
Descrição |
|
x |
Um bloco CIDR IPv4. |
Tipo de valor de retorno
Um array JSON.
Exemplos
Recupere o intervalo de endereços do bloco CIDR IPv4 que contém o endereço IP no campo client_ip.
-
Instrução de consulta e análise
* | SELECT ip_subnet_range(concat(client_ip,'/24')) Os resultados da consulta e análise contêm a coluna
_col0. Esta coluna contém um array JSON, como["xxx.xxx.xxx.0","xxx.xxx.xxx.255"], que representa os endereços inicial e final do bloco CIDR IPv4.
ipv6_to_city
A função ipv6_to_city retorna a cidade de um endereço IPv6 especificado.
Sintaxe
ipv6_to_city(x)
Parâmetros
|
Parâmetro |
Descrição |
|
x |
Um endereço IPv6. |
Tipo de valor de retorno
varchar
Exemplos
Conte solicitações por cidade.
-
Instrução de consulta e análise
* | SELECT ipv6_to_city(ipv6Address) AS city, count(*) AS count GROUP BY city Os resultados da consulta e análise listam cada cidade e sua contagem de registros, como Anyang (18), Baoding (42), Baoshan (3) e Binzhou (9).
ipv6_to_city_code
A função ipv6_to_city_code retorna o código de divisão administrativa de uma cidade para um endereço IPv6 especificado.
Sintaxe
ipv6_to_city_code(x)
Parâmetros
|
Parâmetro |
Descrição |
|
x |
Um endereço IPv6. |
Tipo de valor de retorno
varchar
Exemplos
Este exemplo recupera o código de divisão administrativa de uma cidade para um endereço IPv6.
-
Instrução de consulta
* | SELECT ipv6Address, ipv6_to_city_code(ipv6Address) AS cityCode WHERE cityCode <> '' Resultados da consulta e análise: A função
ipv6_to_city_codeconverte o endereço IPv6, retornando um cityCode de350100.
ipv6_to_city_geo
A função ipv6_to_city_geo retorna a longitude e latitude de um endereço IPv6.
Sintaxe
ipv6_to_city_geo(x)
Parâmetros
|
Parâmetro |
Descrição |
|
x |
Um |
Tipo de valor de retorno
A função retorna uma string varchar no formato longitude,latitude.
Exemplos
Este exemplo mostra como obter a longitude e latitude de endereços IPv6 para analisar a distribuição de clientes.
-
Instrução de consulta
* | SELECT ipv6_to_city_geo(ipv6Address) AS geo, count(*) AS PV GROUP BY geo ORDER BY PV DESC A consulta retorna as colunas
geoePV. Resultados de exemplo, apresentados como pares (geo, PV), incluem: (133.397995,-24.9121, 6270), (10.45415,51.164181, 3813), (-2.23001,54.314072, 2055) e (121.5654268,25.0329636, 1893).
Função ipv6_to_country
A função ipv6_to_country identifica o país ou região de um endereço IPv6 especificado.
Sintaxe
ipv6_to_country(x)
Parâmetros
|
Parâmetro |
Descrição |
|
x |
Um endereço IPv6. |
Tipo de valor de retorno
varchar
Exemplos
Calcule os 10 principais países ou regiões pelo número total de solicitações.
-
Instrução de consulta
* | SELECT count(*) AS PV, ipv6_to_country(ipv6Address) AS country WHERE country <> '' GROUP BY country ORDER BY PV DESC LIMIT 10 Resultados da consulta e análise: A consulta retorna 10 registros. Por exemplo: Alemanha (3813), Taiwan (2337), Reino Unido (2055), Suécia (1119), Países Baixos (1014), Estados Unidos (942), Rússia (930) e Malásia (867)...
ipv6_to_country_code
A função ipv6_to_country_code retorna o código do país ou região de um endereço IPv6.
Sintaxe
ipv6_to_country_code(x)
Parâmetros
|
Parâmetro |
Descrição |
|
x |
O endereço IPv6. |
Tipo de valor de retorno
Retorna um valor varchar.
Exemplos
Este exemplo obtém o código do país ou região de um endereço IPv6.
-
Instrução de consulta
* | SELECT ipv6Address, ipv6_to_country_code(ipv6Address) AS code WHERE cityCode <> '' Nos resultados da consulta, a função
ipv6_to_country_coderesolve um endereço IPv6 para seu código de país, por exemplo,CNpara um endereço na China.
Função ipv6_to_domain
A função ipv6_to_domain classifica um endereço IPv6 como privado ou público.
Sintaxe
ipv6_to_domain(x)
Parâmetros
|
Parâmetro |
Descrição |
|
x |
Um endereço IPv6. |
Tipo de valor de retorno
varchar. A função retorna um dos seguintes valores:
intranet: Um endereço privado.
internet: Um endereço público.
Exemplos
Este exemplo conta solicitações de redes privadas e redes públicas.
-
Instrução de consulta e análise
* | SELECT ipv6_to_domain(ipv6Address) AS domain, count(*) AS count GROUP BY domain A consulta retorna uma tabela com duas colunas: domain e count. Neste exemplo, a contagem para
intraneté 9 e parainterneté 38.067.
Função ipv6_to_provider
A função ipv6_to_provider retorna o ISP de um endereço IPv6 especificado.
Sintaxe
ipv6_to_provider(x)
Parâmetros
|
Parâmetro |
Descrição |
|
x |
O endereço IPv6. |
Tipo de valor de retorno
varchar
Exemplos
Este exemplo encontra os 10 principais ISPs pelo total de solicitações.
-
Instrução de consulta e análise
* | SELECT ipv6_to_provider(ipv6Address) AS provider, count(*) AS count GROUP BY provider ORDER BY count DESC LIMIT 10 Resultados da consulta e análise: A consulta retorna uma lista de ISPs classificados por contagem de solicitações em ordem decrescente. Os 10 principais resultados incluem entradas como
edu.tw(2235),colt.net(1512),maxis.com.my(780),citictel-cpc.com(453),CSTNET(348),ntt.com(261),att.com(258) elibertyglobal.com(174).
Função ipv6_to_province
A função ipv6_to_province retorna a província de um endereço IPv6.
Sintaxe
ipv6_to_province(x)
Parâmetros
|
Parâmetro |
Descrição |
|
x |
Um endereço IPv6. |
Tipo de valor de retorno
varchar
Exemplos
Este exemplo encontra as 10 principais províncias pelo número total de solicitações.
-
Instrução de consulta e análise
* | SELECT count(*) AS PV, ipv6_to_province(ipv6Address) AS province WHERE province <> '' GROUP BY province ORDER BY PV DESC LIMIT 10 Resultados da consulta e análise: A consulta retorna as colunas PV e province, classificadas por PV em ordem decrescente. Resultados de exemplo incluem Jiangsu (564), Guangdong (558), Território Federal de Kuala Lumpur (555), Shandong (507), Henan (435), Sichuan (354), Zhejiang (336) e Anhui (312).
Função ipv6_to_province_code
A função ipv6_to_province_code retorna o código de divisão administrativa de uma província para um endereço IPv6 especificado.
Sintaxe
ipv6_to_province_code(x)
Parâmetros
|
Parâmetro |
Descrição |
|
x |
Um endereço IPv6. |
Tipo de valor de retorno
varchar
Exemplos
Recupere o código de divisão administrativa da província associada a um endereço IPv6.
-
Instrução de consulta
* | SELECT ipv6Address, ipv6_to_province_code(ipv6Address) AS code WHERE cityCode <> '' Resultados da consulta: A coluna ipv6Address lista vários endereços IPv6 ocultados, enquanto a coluna code mostra seu código de província correspondente:
350000.