Cette rubrique décrit la syntaxe de base et fournit des exemples d'utilisation des fonctions IP.
Simple Log Service prend en charge les fonctions IP suivantes.
Dans les instructions d'analyse de Log Service, entourez les chaînes de caractères par des guillemets simples (''). Log Service interprète les valeurs non mises entre guillemets ou celles entourées de guillemets doubles ("") comme des noms de champ ou de colonne. Par exemple, 'status' est une chaîne de caractères, tandis que status ou "status" fait référence au champ de journal nommé status.
|
Catégorie |
Fonction |
Syntaxe |
Description |
SQL |
SPL |
|
Fonctions d'adresse IPv4 |
|
Renvoie le nom chinois de la ville correspondant à l'adresse IPv4 spécifiée. |
√ |
× |
|
|
|
Renvoie le code de division administrative de la ville correspondant à l'adresse IPv4 spécifiée. |
√ |
× |
||
|
|
Renvoie la longitude et la latitude de la ville correspondant à l'adresse IPv4 spécifiée. Chaque ville correspond à une paire unique de coordonnées. |
√ |
× |
||
|
|
Renvoie le nom chinois du pays ou de la région correspondant à l'adresse IPv4 spécifiée. |
√ |
× |
||
|
|
Renvoie le code du pays ou de la région correspondant à l'adresse IPv4 spécifiée. |
√ |
× |
||
|
|
Renvoie le code du pays ou de la région correspondant à l'adresse IPv4 spécifiée. Le résultat renvoyé est le code du pays ou de la région. |
√ |
× |
||
|
|
Détermine si l'adresse IPv4 spécifiée est une adresse privée ou publique. |
√ |
× |
||
|
|
Renvoie la longitude et la latitude correspondant à l'adresse IPv4 spécifiée. |
√ |
× |
||
|
|
Renvoie le fournisseur d'accès Internet (FAI) correspondant à l'adresse IPv4 spécifiée. |
√ |
× |
||
|
|
Renvoie le nom chinois de la région correspondant à l'adresse IPv4 spécifiée. Le résultat renvoyé est le nom chinois de la région. |
√ |
× |
||
|
|
Renvoie le code de division administrative de la région correspondant à l'adresse IPv4 spécifiée. Le résultat correspond au code de division administrative de la région. |
√ |
× |
||
|
Fonctions de bloc CIDR IPv4 |
|
Renvoie le préfixe réseau pour l'adresse IPv4 et la longueur de préfixe spécifiées. |
√ |
× |
|
|
|
Détermine si un bloc CIDR IPv4 est un sous-réseau d'un autre. |
√ |
× |
||
|
|
Vérifie si une adresse IPv4 se trouve dans un bloc CIDR IPv4 spécifié. |
√ |
× |
||
|
|
Renvoie la plus grande adresse IP du bloc CIDR IPv4 spécifié. |
√ |
× |
||
|
|
Renvoie la plus petite adresse IP du bloc CIDR IPv4 spécifié. |
√ |
× |
||
|
|
Renvoie la plage d'adresses IP du bloc CIDR IPv4 spécifié. |
√ |
× |
||
|
Fonctions d'adresse IPv6 |
|
Renvoie le nom chinois de la ville correspondant à l'adresse IPv6 spécifiée. |
√ |
× |
|
|
|
Renvoie le code de division administrative de la ville correspondant à l'adresse IPv6 spécifiée. |
√ |
× |
||
|
|
Renvoie la longitude et la latitude de la ville correspondant à l'adresse IPv6 spécifiée. |
√ |
× |
||
|
|
Renvoie le nom chinois du pays ou de la région correspondant à l'adresse IPv6 spécifiée. |
√ |
× |
||
|
|
Renvoie le code du pays ou de la région correspondant à l'adresse IPv6 spécifiée. |
√ |
× |
||
|
|
Détermine si l'adresse IPv6 spécifiée est une adresse privée ou publique. |
√ |
× |
||
|
|
Renvoie le fournisseur d'accès Internet (FAI) correspondant à l'adresse IPv6 spécifiée. |
√ |
× |
||
|
|
Renvoie le nom chinois de la province correspondant à l'adresse IPv6 spécifiée. |
√ |
× |
||
|
|
Renvoie le code de division administrative de la province correspondant à l'adresse IPv6 spécifiée. |
√ |
× |
Fonction ip_to_city
La fonction ip_to_city renvoie la ville correspondant à une adresse IPv4 spécifiée.
Syntaxe
-
Renvoie le nom chinois d'une ville.
ip_to_city(x) -
Renvoie le code de division administrative d'une ville.
ip_to_city(x,'en')
Paramètres
|
Paramètre |
Description |
|
x |
Une adresse IPv4. |
Type de valeur de retour
varchar
Exemples
Cet exemple calcule le temps de requête moyen, le temps de requête maximal et l'ID de requête associé au temps maximal pour chaque ville.
-
Instruction de requête et d'analyse
* | 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 requête renvoie trois enregistrements : 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) ; et Hegang (avg_request_time : 43,87, max_request_time : 80,0, requestId : i-01).
Fonction ip_to_city_geo
La fonction ip_to_city_geo renvoie la longitude et la latitude de la ville correspondant à une adresse IPv4 spécifiée.
Syntaxe
ip_to_city_geo(x)
Paramètres
|
Paramètre |
Description |
|
x |
Une adresse IPv4. |
Type de valeur de retour
Une chaîne varchar au format latitude,longitude.
Exemples
Obtenez la longitude et la latitude des adresses IPv4 pour cartographier la répartition des clients.
-
Instruction de requête
* | SELECT count(*) AS PV, ip_to_city_geo(client_ip) AS geo GROUP BY geo ORDER BY PV DESC La requête renvoie deux lignes. La première ligne affiche une valeur
PVde 9113 et une valeurgeode 39,9288,116,389 (Pékin). La deuxième ligne affiche une valeurPVde 5784 et une valeurgeode 31,2222,121,458060 (Shanghai).
Fonction ip_to_country
La fonction ip_to_country renvoie le pays ou la région correspondant à une adresse IPv4 spécifiée.
Syntaxe
-
Renvoie le nom du pays ou de la région en chinois.
ip_to_country(x) -
Renvoie le code du pays ou de la région.
ip_to_country(x,'en')
Paramètres
|
Paramètre |
Description |
|
x |
Une adresse IPv4. |
Type de valeur de retour
varchar
Exemples
Cet exemple calcule le temps de requête moyen, le temps de requête maximal et l'ID de requête correspondant au temps maximal pour chaque pays ou région.
-
Instruction de requête
* | 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 Les résultats de la requête et de l'analyse montrent trois enregistrements : Hong Kong (Chine) (
avg_request_time: 45,27,max_request_time: 80,0,requestId: i-02) ; Australie (avg_request_time: 47,08,max_request_time: 80,0,requestId: i-01) ; et Inde (avg_request_time: 39,39,max_request_time: 77,0,requestId: i-01).
Utilisation dans la transformation de données (nouvel éditeur)
La transformation de données (nouvel éditeur) utilise la syntaxe SPL et appelle les fonctions IP via l'instruction extend. L'ancienne syntaxe DSL qui combinait e_set avec v() n'est plus prise en charge.
L'exemple suivant analyse le pays et la ville d'un champ IP :
* | extend country = ip_to_country(ip), city = ip_to_city(ip)
Exemple de résultat d'analyse : 203.0.113.1 → country : États-Unis, city : Richardson.
Fonction ip_to_country_code
La fonction ip_to_country_code renvoie le code du pays ou de la région pour une adresse IPv4 donnée.
Syntaxe
ip_to_country_code(x)
Paramètres
|
Paramètre |
Description |
|
x |
L'adresse IPv4. |
Type de valeur de retour
varchar
Exemples
La requête suivante calcule le temps de requête moyen, le temps de requête maximal et l'ID de requête associé au temps de requête maximal pour chaque pays ou région.
-
Requête
* | 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 requête renvoie deux lignes de résultats. Dans la première ligne, avg_request_time est
45.012, max_request_time est80.0, requestId esti-01et country estMO. Dans la deuxième ligne, avg_request_time est46.286, max_request_time est77.0, requestId esti-02et country estGB.
Fonction ip_to_domain
La fonction ip_to_domain détermine si une adresse IPv4 est une adresse privée ou publique.
Syntaxe
ip_to_domain(x)
Paramètres
|
Paramètre |
Description |
|
x |
Une adresse IPv4. |
Type de valeur de retour
Renvoie une chaîne varchar contenant l'une des valeurs suivantes :
'intranet' : indique une adresse privée.
'internet' : indique une adresse publique.
Exemples
Comptez le nombre de requêtes qui ne proviennent pas d'un réseau privé.
-
Instruction de requête
* | SELECT count(*) AS PV where ip_to_domain(client_ip) != 'intranet' Résultats de la requête et de l'analyse : le compte PV est de
941786.
Fonction ip_to_geo
La fonction ip_to_geo renvoie la latitude et la longitude d'une adresse IPv4 spécifiée. Pour plus d'informations sur les fonctions géographiques, consultez la rubrique Fonctions géographiques.
Syntaxe
ip_to_geo(x)
Paramètres
|
Paramètre |
Description |
|
x |
Une adresse IPv4. |
Type de valeur de retour
Une chaîne de caractères varchar au format latitude,longitude.
Exemples
Cet exemple permet de récupérer la latitude et la longitude des adresses IPv4 afin d'identifier la répartition géographique des clients.
-
Instruction de requête
* | SELECT count(*) AS PV, ip_to_geo(client_ip) AS geo GROUP BY geo ORDER BY PV DESC Les résultats de la requête et de l'analyse contiennent deux exemples d'enregistrements : l'un avec un nombre de pages vues (PV) de 5122 et une localisation géographique (geo) de 39.1423,117 173, et l'autre avec un PV de 4960 et une geo de 29.5569,106 553.
Fonction ip_to_provider
La fonction ip_to_provider renvoie le fournisseur d'accès à Internet (FAI) associé à une adresse IPv4.
Syntaxe
ip_to_provider(x)
Paramètres
|
Paramètre |
Description |
|
x |
Une adresse IPv4. |
Type de valeur de retour
Une chaîne de caractères varchar.
Exemples
Calculez le temps de requête moyen par fournisseur d'accès.
-
Instruction de requête
* | SELECT avg(request_time) AS avg_request_time, ip_to_provider(client_ip) AS provider GROUP BY provider ORDER BY avg_request_time La requête renvoie trois lignes. Les valeurs avg_request_time sont 18,0, 25,0 et 26,0, correspondant respectivement aux fournisseurs Reliance Communications, CAT et Wangsu.
Fonction ip_to_province
La fonction ip_to_province renvoie la région administrative associée à une adresse IPv4 donnée.
Syntaxe
-
Renvoie le nom chinois de la région administrative.
ip_to_province(x) -
Renvoie le nom anglais de la région administrative.
ip_to_province(x,'en')
Paramètres
|
Paramètre |
Description |
|
x |
L'adresse IPv4 à rechercher. |
Type de valeur de retour
VARCHAR
Exemples
Identifiez les 10 régions administratives ayant généré le plus grand nombre total de requêtes.
-
Instruction de requête
* | SELECT count(*) as PV, ip_to_province(client_ip) AS province GROUP BY province ORDER BY PV desc LIMIT 10Pour exclure les requêtes provenant du réseau interne des résultats, utilisez l'instruction de requête suivante.
* | 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 Résultats de la requête : L'exécution de la première instruction de requête renvoie un tableau contenant les colonnes PV et province. Les résultats sont triés par PV dans l'ordre décroissant. Dans les exemples de résultats, la province du Guangdong arrive en tête avec un PV de 368. Si une adresse IP ne peut pas être résolue en une province, la valeur de la colonne province reste vide.
Fonction Ip_prefix
La fonction ip_prefix renvoie le préfixe de sous-réseau d'une adresse IPv4 donnée au format CIDR, par exemple 192.168.1.0/24.
Syntaxe
ip_prefix(x, prefix_bits)
Paramètres
|
Paramètre |
Description |
|
x |
L'adresse IPv4. |
|
prefix_bits |
La longueur du préfixe. |
Type de valeur de retour
varchar
Exemples
Récupérez le préfixe de sous-réseau pour les adresses IP figurant dans le champ client_ip.
-
Instruction de requête
* | SELECT ip_prefix(client_ip,24) AS client_ip La requête renvoie une colonne
client_ipcontenant les préfixes de sous-réseau /24, tels quexx.xx.xx.0/24.
Fonction is_prefix_subnet_of
La fonction is_prefix_subnet_of vérifie si un bloc CIDR IPv4 est un sous-réseau d'un autre.
Syntaxe
is_prefix_subnet_of(x, y)
Paramètres
|
Paramètre |
Description |
|
x |
Le bloc CIDR IPv4 parent. |
|
y |
Le bloc CIDR IPv4 à tester en tant que sous-réseau potentiel. |
Type de valeur de retour
Renvoie une valeur booléenne : true si y est un sous-réseau de x, et false dans le cas contraire.
Exemples
Cet exemple vérifie si le bloc CIDR dérivé du champ client_ip constitue un sous-réseau de 192.168.0.1/24.
-
Instruction de requête
* | SELECT is_prefix_subnet_of('192.168.0.1/24',concat(client_ip,'/24')) Les résultats de la requête et de l'analyse contiennent une colonne
_col0avec deux lignes, toutes deux ayant la valeurfalse. Une valeur false indique que le client_ip du journal correspondant n'appartient pas au sous-réseau 192.168.0.1/24.
Fonction is_subnet_of
La fonction is_subnet_of détermine si une adresse IPv4 se trouve dans un bloc CIDR.
Syntaxe
is_subnet_of(x, y)
Paramètres
|
Paramètre |
Description |
|
x |
Le bloc CIDR IPv4. |
|
y |
L'adresse IPv4. |
Type de valeur de retour
Booléen
Exemples
Vérifiez si la valeur du champ client_ip appartient au bloc CIDR 192.168.0.1/24.
-
Instruction de requête
* | SELECT is_subnet_of('192.168.0.1/24',client_ip)
Fonction ip_subnet_min
La fonction ip_subnet_min renvoie la plus petite adresse IP d'un bloc CIDR IPv4.
Syntaxe
ip_subnet_min(x)
Paramètres
|
Paramètre |
Description |
|
x |
Un bloc CIDR IPv4. |
Type de valeur de retour
varchar
Exemples
Cet exemple renvoie la plus petite adresse IP du bloc CIDR contenant l'adresse IP issue du champ client_ip.
-
Instruction de requête
* | SELECT ip_subnet_min(concat(client_ip,'/24')) La requête renvoie une seule ligne avec une colonne nommée
_col0. Cette colonne affiche la plus petite adresse IP du bloc CIDR /24 qui contient leclient_ip. Certains contenus sont masqués.
Fonction ip_subnet_max
La fonction ip_subnet_max renvoie la plus grande adresse IP d'un bloc CIDR IPv4.
Syntaxe
ip_subnet_max(x)
Paramètres
|
Paramètre |
Description |
|
x |
Un bloc CIDR IPv4. |
Type de valeur de retour
varchar
Exemples
Calculez la plus grande adresse IP du sous-réseau /24 pour l'adresse IP figurant dans le champ client_ip.
-
Instruction de requête et d'analyse
* | SELECT ip_subnet_max(concat(client_ip,'/24')) La colonne
_col0affiche le résultat de la fonctionip_subnet_max: la plus grande adresse IP du sous-réseau /24. Certains contenus sont occultés.
Fonction ip_subnet_range
La fonction ip_subnet_range renvoie les adresses de début et de fin d'un bloc CIDR IPv4.
Syntaxe
ip_subnet_range(x)
Paramètres
|
Paramètre |
Description |
|
x |
Un bloc CIDR IPv4. |
Type de valeur de retour
Un tableau JSON.
Exemples
Récupérez la plage d'adresses du bloc CIDR IPv4 contenant l'adresse IP du champ client_ip.
-
Instruction de requête et d'analyse
* | SELECT ip_subnet_range(concat(client_ip,'/24')) Les résultats de la requête et de l'analyse contiennent la colonne
_col0. Cette colonne renferme un tableau JSON, tel que["xxx.xxx.xxx.0","xxx.xxx.xxx.255"], qui représente les adresses de début et de fin du bloc CIDR IPv4.
Fonction ipv6_to_city
La fonction ipv6_to_city renvoie la ville associée à une adresse IPv6 spécifiée.
Syntaxe
ipv6_to_city(x)
Paramètres
|
Paramètre |
Description |
|
x |
Une adresse IPv6. |
Type de valeur de retour
varchar
Exemples
Comptez les requêtes par ville.
-
Instruction de requête et d'analyse
* | SELECT ipv6_to_city(ipv6Address) AS city, count(*) AS count GROUP BY city Les résultats de la requête et de l'analyse listent chaque ville ainsi que son nombre d'enregistrements, par exemple Anyang (18), Baoding (42), Baoshan (3) et Binzhou (9).
Fonction Ipv6_to_city_code
La fonction ipv6_to_city_code renvoie le code de division administrative d'une ville pour une adresse IPv6 spécifiée.
Syntaxe
ipv6_to_city_code(x)
Paramètres
|
Paramètre |
Description |
|
x |
Une adresse IPv6. |
Type de valeur de retour
varchar
Exemples
Cet exemple permet de récupérer le code de division administrative d'une ville pour une adresse IPv6.
-
Instruction de requête
* | SELECT ipv6Address, ipv6_to_city_code(ipv6Address) AS cityCode WHERE cityCode <> '' Résultats de la requête et de l'analyse : La fonction
ipv6_to_city_codeconvertit l'adresse IPv6 et renvoie un cityCode égal à350100.
Fonction Ipv6_to_city_geo
La fonction ipv6_to_city_geo function renvoie la longitude et la latitude d'une adresse IPv6.
Syntaxe
ipv6_to_city_geo(x)
Paramètres
|
Paramètre |
Description |
|
x |
Une |
Type de valeur de retour
La fonction renvoie une chaîne de caractères varchar au format longitude,latitude.
Exemples
Cet exemple montre comment obtenir la longitude et la latitude des adresses IPv6 afin d'analyser la répartition des clients.
-
Instruction de requête
* | SELECT ipv6_to_city_geo(ipv6Address) AS geo, count(*) AS PV GROUP BY geo ORDER BY PV DESC La requête renvoie les colonnes
geoetPV. Les exemples de résultats, présentés sous forme de paires (geo, PV), incluent : (133.397995,-24.9121, 6270), (10.45415,51.164181, 3813), (-2.23001,54.314072, 2055) et (121.5654268,25.0329636, 1893).
Fonction Ipv6_to_country
La fonction ipv6_to_country identifie le pays ou la région d'une adresse IPv6 spécifiée.
Syntaxe
ipv6_to_country(x)
Paramètres
|
Paramètre |
Description |
|
x |
Une adresse IPv6. |
Type de valeur de retour
varchar
Exemples
Identifiez les 10 premiers pays ou régions selon le nombre total de requêtes.
-
Instruction de requête
* | SELECT count(*) AS PV, ipv6_to_country(ipv6Address) AS country WHERE country <> '' GROUP BY country ORDER BY PV DESC LIMIT 10 Résultats de la requête et de l'analyse : La requête renvoie 10 enregistrements. Par exemple : Allemagne (3813), Taïwan (2337), Royaume-Uni (2055), Suède (1119), Pays-Bas (1014), États-Unis (942), Russie (930) et Malaisie (867)...
Fonction ipv6_to_country_code
La fonction ipv6_to_country_code renvoie le code du pays ou de la région pour une adresse IPv6.
Syntaxe
ipv6_to_country_code(x)
Paramètres
|
Paramètre |
Description |
|
x |
L'adresse IPv6. |
Type de valeur de retour
Renvoie une valeur varchar.
Exemples
Cet exemple permet d'obtenir le code du pays ou de la région pour une adresse IPv6.
-
Instruction de requête
* | SELECT ipv6Address, ipv6_to_country_code(ipv6Address) AS code WHERE cityCode <> '' Dans les résultats de la requête, la fonction
ipv6_to_country_coderésout une adresse IPv6 vers son code pays, par exempleCNpour une adresse située en Chine.
Fonction ipv6_to_domain
La fonction ipv6_to_domain classe une adresse IPv6 comme adresse privée ou adresse publique.
Syntaxe
ipv6_to_domain(x)
Paramètres
|
Paramètre |
Description |
|
x |
Une adresse IPv6. |
Type de valeur de retour
varchar. La fonction renvoie l'une des valeurs suivantes :
intranet : Une adresse privée.
internet : Une adresse publique.
Exemples
Cet exemple compte les requêtes provenant des réseaux privés et des réseaux publics.
-
Instruction de requête et d'analyse
* | SELECT ipv6_to_domain(ipv6Address) AS domain, count(*) AS count GROUP BY domain La requête renvoie un tableau comportant deux colonnes : domain et count. Dans cet exemple, le compte pour
intranetest de 9 et celui pourinternetest de 38 067.
Fonction ipv6_to_provider
La fonction ipv6_to_provider renvoie le fournisseur d'accès à Internet (FAI) pour une adresse IPv6 spécifiée.
Syntaxe
ipv6_to_provider(x)
Paramètres
|
Paramètre |
Description |
|
x |
L'adresse IPv6. |
Type de valeur de retour
varchar
Exemples
Cet exemple identifie les 10 principaux FAI selon le nombre total de requêtes.
-
Instruction de requête et d'analyse
* | SELECT ipv6_to_provider(ipv6Address) AS provider, count(*) AS count GROUP BY provider ORDER BY count DESC LIMIT 10 Résultats de la requête et de l'analyse : La requête renvoie une liste de FAI triés par nombre de requêtes dans l'ordre décroissant. Les 10 premiers résultats incluent des entrées telles que
edu.tw(2235),colt.net(1512),maxis.com.my(780),citictel-cpc.com(453),CSTNET(348),ntt.com(261),att.com(258) etlibertyglobal.com(174).
Fonction ipv6_to_province
La fonction ipv6_to_province renvoie la province associée à une adresse IPv6.
Syntaxe
ipv6_to_province(x)
Paramètres
|
Paramètre |
Description |
|
x |
Une adresse IPv6. |
Type de valeur de retour
varchar
Exemples
Cet exemple identifie les 10 premières provinces selon le nombre total de requêtes.
-
Instruction de requête et d'analyse
* | SELECT count(*) AS PV, ipv6_to_province(ipv6Address) AS province WHERE province <> '' GROUP BY province ORDER BY PV DESC LIMIT 10 Résultats de la requête et de l'analyse : La requête renvoie les colonnes PV et province, triées par PV dans l'ordre décroissant. Les exemples de résultats incluent Jiangsu (564), Guangdong (558), Territoire fédéral de Kuala Lumpur (555), Shandong (507), Henan (435), Sichuan (354), Zhejiang (336) et Anhui (312).
Fonction ipv6_to_province_code
La fonction ipv6_to_province_code renvoie le code de division administrative d'une province pour une adresse IPv6 spécifiée.
Syntaxe
ipv6_to_province_code(x)
Paramètres
|
Paramètre |
Description |
|
x |
Une adresse IPv6. |
Type de valeur de retour
varchar
Exemples
Récupérez le code de division administrative de la province associée à une adresse IPv6.
-
Instruction de requête
* | SELECT ipv6Address, ipv6_to_province_code(ipv6Address) AS code WHERE cityCode <> '' Résultats de la requête : La colonne ipv6Address liste plusieurs adresses IPv6 occultées, tandis que la colonne code affiche leur code de province correspondant :
350000.