Este tópico descreve a sintaxe básica e exemplos das funções de IP.
O Simple Log Service é compatível com as seguintes funções de IP.
In Log Service analytic statements, enclose strings in single quotation marks (''). Log Service interprets unquoted values or those enclosed in double quotation marks ("") as a field name or column name. For example, 'status' is a string, whereas status or "status" refers to the log field named 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 da região do endereço IPv4 especificado. |
√ |
× |
||
|
|
Retorna o código do país ou da região do endereço IPv4 especificado. |
√ |
× |
||
|
|
Retorna o código do país ou da região do endereço IPv4 especificado. O resultado retornado é o código do país ou da região. |
√ |
× |
||
|
|
Determina se o endereço IPv4 especificado é um endereço 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 do state do endereço IPv4 especificado. O resultado retornado é o nome em chinês do state. |
√ |
× |
||
|
|
Retorna o código de divisão administrativa do state do endereço IPv4 especificado. O resultado é o código de divisão administrativa do state. |
√ |
× |
||
|
Funções de bloco CIDR IPv4 |
|
Retorna o prefixo de rede do endereço IPv4 e do comprimento de prefixo especificados. |
√ |
× |
|
|
|
Determina se um bloco CIDR IPv4 é uma sub-rede de outro. |
√ |
× |
||
|
|
Verifica se um endereço IPv4 está em um bloco CIDR IPv4 especificado. |
√ |
× |
||
|
|
Retorna o maior endereço IP do bloco CIDR IPv4 especificado. |
√ |
× |
||
|
|
Retorna o menor endereço IP do 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 da região do endereço IPv6 especificado. |
√ |
× |
||
|
|
Retorna o código do país ou da região do endereço IPv6 especificado. |
√ |
× |
||
|
|
Determina se o endereço IPv6 especificado é um endereço 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.
Syntax
-
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')
Parameters
|
Parâmetro |
Descrição |
|
x |
Um endereço IPv4. |
Return value type
varchar
Examples
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.
Syntax
ip_to_city_geo(x)
Parameters
|
Parâmetro |
Descrição |
|
x |
Um endereço IPv4. |
Return value type
Uma string varchar no formato latitude,longitude.
Examples
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 two rows. The first row has a
PVof 9113 e ageode 39,9288, 116,389 (Pequim). A segunda linha tem umPVof 5784 e ageode 31,2222, 121,458060 (Xangai).
Função ip_to_country
A função ip_to_country retorna o país ou a região de um endereço IPv4 especificado.
Syntax
-
Retorna o nome do país ou da região em chinês.
ip_to_country(x) -
Retorna o código do país ou da região.
ip_to_country(x,'en')
Parameters
|
Parâmetro |
Descrição |
|
x |
Um endereço IPv4. |
Return value type
varchar
Examples
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).
Função ip_to_country_code
A função ip_to_country_code retorna o código do país ou da região de um endereço IPv4 especificado.
Syntax
ip_to_country_code(x)
Parameters
|
Parâmetro |
Descrição |
|
x |
O endereço IPv4. |
Return value type
varchar
Examples
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 is
45.012, max_request_time é80.0, requestId éi-01, e country éMO. Na segunda linha, avg_request_time is46.286, max_request_time é77.0, requestId éi-02, e country éGB.
Função ip_to_domain
A função ip_to_domain determina se um endereço IPv4 é um endereço privado ou público.
Syntax
ip_to_domain(x)
Parameters
|
Parâmetro |
Descrição |
|
x |
Um endereço IPv4. |
Return value type
Retorna uma string varchar com um dos seguintes valores:
-
'intranet': indica um endereço privado.
-
'internet': indica um endereço público.
Examples
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: The PV é
941786.
Função ip_to_geo
The Função ip_to_geo returns the latitude e longitude de a specified IPv4 address. Para mais informações sobre funções geográficas, consulte Funções geográficas.
Syntax
ip_to_geo(x)
Parameters
|
Parâmetro |
Descrição |
|
x |
Um endereço IPv4. |
Return value type
Uma string varchar no formato latitude,longitude.
Examples
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 contain two sample records: one with a PV of 5122 e a geo of 39.1423,117.173, e the other with a PV of 4960 e a geo of 29.5569,106.553.
Função ip_to_provider
A função ip_to_provider retorna o ISP de um endereço IPv4.
Syntax
ip_to_provider(x)
Parameters
|
Parâmetro |
Descrição |
|
x |
Um endereço IPv4. |
Return value type
Uma string varchar.
Examples
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 three rows. The avg_request_time values are 18.0, 25.0, e 26.0, with corresponding provider values of Reliance Communications, CAT, e Wangsu.
Função ip_to_province
The ip_to_province function returns the state de um endereço IPv4 especificado.
Syntax
-
Retorna o nome em chinês do state.
ip_to_province(x) -
Retorna o nome em inglês do state.
ip_to_province(x,'en')
Parameters
|
Parâmetro |
Descrição |
|
x |
O endereço IPv4 a ser consultado. |
Return value type
VARCHAR
Examples
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 as solicitações de intranet dos resultados, use a instrução de consulta a seguir.
* | 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: Running the first query statement returns a table with the PV e province. Os resultados são classificados por PV em ordem decrescente. Nos resultados de amostra, 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 fica vazio.
Função ip_prefix
A função ip_prefix retorna o prefixo de sub-rede de um endereço IPv4 especificado em notação CIDR, como 192.168.1.0/24.
Syntax
ip_prefix(x, prefix_bits)
Parameters
|
Parâmetro |
Descrição |
|
x |
O endereço IPv4. |
|
prefix_bits |
O comprimento do prefixo. |
Return value type
varchar
Examples
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 a
client_ipcontendo prefixos de sub-rede /24, comoxx.xx.xx.0/24.
Função is_prefix_subnet_of
A função is_prefix_subnet_of verifica se um bloco CIDR IPv4 é uma sub-rede de outro.
Syntax
is_prefix_subnet_of(x, y)
Parameters
|
Parâmetro |
Descrição |
|
x |
O bloco CIDR IPv4 pai. |
|
y |
O bloco CIDR IPv4 a ser testado como sub-rede em potencial. |
Return value type
Retorna um valor booleano: true se y de uma sub-rede de x, e false caso contrário.
Examples
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 contain a
_col0com duas linhas, ambas com o valorfalse. O 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
The is_subnet_of function determina se um endereço IPv4 está dentro de um bloco CIDR.
Syntax
is_subnet_of(x, y)
Parameters
|
Parâmetro |
Descrição |
|
x |
O bloco CIDR IPv4. |
|
y |
O endereço IPv4. |
Return value type
Booleano
Examples
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 de um bloco CIDR IPv4.
Syntax
ip_subnet_min(x)
Parameters
|
Parâmetro |
Descrição |
|
x |
Um bloco CIDR IPv4. |
Return value type
varchar
Examples
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 a single row with a column named
_col0. Essa 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 de um bloco CIDR IPv4.
Syntax
ip_subnet_max(x)
Parameters
|
Parâmetro |
Descrição |
|
x |
Um bloco CIDR IPv4. |
Return value type
varchar
Examples
Calculates the largest IP address of the /24 subnet de the IP address in the client_ip.
-
Instrução de consulta e análise
* | SELECT ip_subnet_max(concat(client_ip,'/24')) -
The
_col0exibe o resultado da funçãoip_subnet_max: o maior endereço IP da sub-rede /24. Parte do conteúdo está oculta.
ip_subnet_range
A função ip_subnet_range retorna os endereços inicial e final de um bloco CIDR IPv4.
Syntax
ip_subnet_range(x)
Parameters
|
Parâmetro |
Descrição |
|
x |
Um bloco CIDR IPv4. |
Return value type
Um array JSON.
Examples
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 contain the
_col0. Essa coluna contém um array JSON, como["xxx.xxx.xxx.0","xxx.xxx.xxx.255"], which represents the start e end addresses of the IPv4 CIDR block.
Função ipv6_to_city
A função ipv6_to_city retorna a cidade de um endereço IPv6 especificado.
Syntax
ipv6_to_city(x)
Parameters
|
Parâmetro |
Descrição |
|
x |
Um endereço IPv6. |
Return value type
varchar
Examples
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 list each city e its record count, such as Anyang (18), Baoding (42), Baoshan (3), e Binzhou (9).
Função 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.
Syntax
ipv6_to_city_code(x)
Parameters
|
Parâmetro |
Descrição |
|
x |
Um endereço IPv6. |
Return value type
varchar
Examples
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: The
ipv6_to_city_codeconverte o endereço IPv6, retornando um cityCode de350100.
Função ipv6_to_city_geo
The ipv6_to_city_geo function returns the longitude and latitude de an IPv6 address.
Syntax
ipv6_to_city_geo(x)
Parameters
|
Parâmetro |
Descrição |
|
x |
An |
Return value type
A função retorna uma string varchar no formato longitude,latitude.
Examples
Este exemplo mostra como obter a longitude and latitude de IPv6 addresses para analisar client distribuição.
-
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 the
geoePVcolumns. Sample results, presented as (geo, PV) pairs, include: (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 a região de um endereço IPv6 especificado.
Syntax
ipv6_to_country(x)
Parameters
|
Parâmetro |
Descrição |
|
x |
Um endereço IPv6. |
Return value type
varchar
Examples
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 records. For example: Germany (3813), Taiwan (2337), the United Kingdom (2055), Sweden (1119), the Netherlands (1014), the United States (942), Russia (930), e Malaysia (867)...
Função ipv6_to_country_code
A função ipv6_to_country_code retorna o código do país ou da região de um endereço IPv6.
Syntax
ipv6_to_country_code(x)
Parameters
|
Parâmetro |
Descrição |
|
x |
O endereço IPv6. |
Return value type
Retorna um valor varchar.
Examples
Este exemplo obtém o código do país ou da 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_codefunction resolves an IPv6 address to its country code, de example,CNde an address in China.
Função ipv6_to_domain
A função ipv6_to_domain classifica um endereço IPv6 como endereço privado ou endereço público.
Syntax
ipv6_to_domain(x)
Parameters
|
Parâmetro |
Descrição |
|
x |
Um endereço IPv6. |
Return value type
varchar. A função retorna um dos seguintes valores:
-
intranet: um endereço privado.
-
internet: um endereço público.
Examples
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 a table with two columns: domain e count. In this example, the count de
intranetis 9 e deinterneté 38.067.
Função ipv6_to_provider
The ipv6_to_provider function returns the ISP de a specified IPv6 address.
Syntax
ipv6_to_provider(x)
Parameters
|
Parâmetro |
Descrição |
|
x |
O endereço IPv6. |
Return value type
varchar
Examples
Este exemplo identifica 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 a list of ISPs sorted by request count in descending order. The top 10 results include entries such as
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.
Syntax
ipv6_to_province(x)
Parameters
|
Parâmetro |
Descrição |
|
x |
Um endereço IPv6. |
Return value type
varchar
Examples
Este exemplo identifica 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 the PV e province columns, sorted by PV in descending order. Sample results include Jiangsu (564), Guangdong (558), Kuala Lumpur Federal Territory (555), Shandong (507), Henan (435), Sichuan (354), Zhejiang (336), e Anhui (312).
Função ipv6_to_province_code
The ipv6_to_province_code function returns the administrative division code of a province de a specified IPv6 address.
Syntax
ipv6_to_province_code(x)
Parameters
|
Parâmetro |
Descrição |
|
x |
Um endereço IPv6. |
Return value type
varchar
Examples
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: The ipv6Address lista vários endereços IPv6 redigidos, enquanto a coluna code mostra o código de província correspondente:
350000.