ipv4_lookup plugin
Il ipv4_lookup
plug-in cerca un valore IPv4 in una tabella di ricerca e restituisce righe con valori corrispondenti. Il plug-in viene richiamato con l'operatore evaluate
.
Sintassi
T|
evaluate
ipv4_lookup(
Ricerca tabella,
SourceIPv4Key,
IPv4LookupKey [,
ExtraKey1 [.. ,
ExtraKeyN [,
return_unmatched ]]] )
Parametri
Nome | Tipo | Obbligatoria | Descrizione |
---|---|---|---|
T | string |
✔️ | Input tabulare la cui colonna SourceIPv4Key viene usata per la corrispondenza IPv4. |
Ricerca tabella | string |
✔️ | Espressione tabella o tabulare con dati di ricerca IPv4, la cui colonna LookupKey viene usata per la corrispondenza IPv4. I valori IPv4 possono essere mascherati usando la notazione del prefisso IP. |
SourceIPv4Key | string |
✔️ | Colonna di T con stringa IPv4 da cercare in LookupTable. I valori IPv4 possono essere mascherati usando la notazione del prefisso IP. |
IPv4LookupKey | string |
✔️ | Colonna di LookupTable con stringa IPv4 corrispondente a ogni valore SourceIPv4Key . |
ExtraKey1 . ExtraKeyN | string |
Riferimenti di colonna aggiuntivi usati per le corrispondenze di ricerca. Simile all'operazione join : i record con valori uguali sono considerati corrispondenti. I riferimenti al nome di colonna devono esistere sia nella tabella T di origine che LookupTable in . |
|
return_unmatched | bool |
Flag booleano che definisce se il risultato deve includere tutte o solo le righe corrispondenti (impostazione predefinita: - false solo le righe corrispondenti restituite). |
Notazione del prefisso IP
La notazione del prefisso IP (nota anche come notazione CIDR) è un modo conciso di rappresentare un indirizzo IP e la relativa maschera di rete associata. Il formato è , dove la lunghezza del prefisso è <base IP>/<prefix length>
il numero di bit iniziali 1 nella maschera di rete. La lunghezza del prefisso determina l'intervallo di indirizzi IP che appartengono alla rete.
Per IPv4, la lunghezza del prefisso è un numero compreso tra 0 e 32. Quindi la notazione 192.168.2.0/24 rappresenta l'indirizzo IP 192.168.2.0 con una maschera di rete 255.255.255.255.0. Questa maschera di rete ha 24 bit iniziali o una lunghezza di prefisso pari a 24.
Per IPv6, la lunghezza del prefisso è un numero compreso tra 0 e 128. La notazione fe80::85d:e82c:9446:7994/120 rappresenta l'indirizzo IP fe80::85d:e82c:9446:7994 con una maschera net di ffff:ff00. Questa maschera di rete ha 120 bit iniziali o una lunghezza di prefisso pari a 120.
Restituisce
Il ipv4_lookup
plug-in restituisce un risultato di join (ricerca) basato sulla chiave IPv4. Lo schema della tabella è l'unione della tabella di origine e della tabella di ricerca, simile al risultato dell'operatorelookup
.
Se l'argomento return_unmatched è impostato su true
, la tabella risultante include righe corrispondenti e non corrispondenti (riempite con valori Null).
Se l'argomento return_unmatched è impostato su false
o omesso (il valore predefinito di false
viene usato), la tabella risultante ha il numero di record corrispondenti. Questa variante di ricerca ha prestazioni migliori rispetto all'esecuzione return_unmatched=true
.
Nota
- Questo plug-in illustra lo scenario di join basato su IPv4, presupponendo una dimensione di tabella di ricerca ridotta (100K-200K righe), con la tabella di input facoltativamente con dimensioni maggiori.
- Le prestazioni del plug-in dipendono dalle dimensioni delle tabelle di ricerca e origine dati, dal numero di colonne e dal numero di record corrispondenti.
Esempio
Ricerca IPv4 - solo righe corrispondenti
// IP lookup table: IP_Data
// Partial data from: https://raw.githubusercontent.com/datasets/geoip2-ipv4/master/data/geoip2-ipv4.csv
let IP_Data = datatable(network:string, continent_code:string ,continent_name:string, country_iso_code:string, country_name:string)
[
"111.68.128.0/17","AS","Asia","JP","Japan",
"5.8.0.0/19","EU","Europe","RU","Russia",
"223.255.254.0/24","AS","Asia","SG","Singapore",
"46.36.200.51/32","OC","Oceania","CK","Cook Islands",
"2.20.183.0/24","EU","Europe","GB","United Kingdom",
];
let IPs = datatable(ip:string)
[
'2.20.183.12', // United Kingdom
'5.8.1.2', // Russia
'192.165.12.17', // Unknown
];
IPs
| evaluate ipv4_lookup(IP_Data, ip, network)
Output
Ip | network | continent_code | continent_name | country_iso_code | country_name |
---|---|---|---|---|---|
2.20.183.12 | 2.20.183.0/24 | EU | Europa | GB | Regno Unito |
5.8.1.2 | 5.8.0.0/19 | EU | Europa | RU | Russia |
Ricerca IPv4: restituisce sia righe corrispondenti che non corrispondenti
// IP lookup table: IP_Data
// Partial data from:
// https://raw.githubusercontent.com/datasets/geoip2-ipv4/master/data/geoip2-ipv4.csv
let IP_Data = datatable(network:string,continent_code:string ,continent_name:string ,country_iso_code:string ,country_name:string )
[
"111.68.128.0/17","AS","Asia","JP","Japan",
"5.8.0.0/19","EU","Europe","RU","Russia",
"223.255.254.0/24","AS","Asia","SG","Singapore",
"46.36.200.51/32","OC","Oceania","CK","Cook Islands",
"2.20.183.0/24","EU","Europe","GB","United Kingdom",
];
let IPs = datatable(ip:string)
[
'2.20.183.12', // United Kingdom
'5.8.1.2', // Russia
'192.165.12.17', // Unknown
];
IPs
| evaluate ipv4_lookup(IP_Data, ip, network, return_unmatched = true)
Output
Ip | network | continent_code | continent_name | country_iso_code | country_name |
---|---|---|---|---|---|
2.20.183.12 | 2.20.183.0/24 | EU | Europa | GB | Regno Unito |
5.8.1.2 | 5.8.0.0/19 | EU | Europa | RU | Russia |
192.165.12.17 |
Ricerca IPv4 : uso dell'origine in external_data()
let IP_Data = external_data(network:string,geoname_id:long,continent_code:string,continent_name:string ,country_iso_code:string,country_name:string,is_anonymous_proxy:bool,is_satellite_provider:bool)
['https://raw.githubusercontent.com/datasets/geoip2-ipv4/master/data/geoip2-ipv4.csv'];
let IPs = datatable(ip:string)
[
'2.20.183.12', // United Kingdom
'5.8.1.2', // Russia
'192.165.12.17', // Sweden
];
IPs
| evaluate ipv4_lookup(IP_Data, ip, network, return_unmatched = true)
Output
Ip | network | geoname_id | continent_code | continent_name | country_iso_code | country_name | is_anonymous_proxy | is_satellite_provider |
---|---|---|---|---|---|---|---|---|
2.20.183.12 | 2.20.183.0/24 | 2635167 | EU | Europa | GB | Regno Unito | 0 | 0 |
5.8.1.2 | 5.8.0.0/19 | 2017370 | EU | Europa | RU | Russia | 0 | 0 |
192.165.12.17 | 192.165.8.0/21 | 2661886 | EU | Europa | SE | Svezia | 0 | 0 |
Ricerca IPv4 : uso di colonne aggiuntive per la corrispondenza
let IP_Data = external_data(network:string,geoname_id:long,continent_code:string,continent_name:string ,country_iso_code:string,country_name:string,is_anonymous_proxy:bool,is_satellite_provider:bool)
['https://raw.githubusercontent.com/datasets/geoip2-ipv4/master/data/geoip2-ipv4.csv'];
let IPs = datatable(ip:string, continent_name:string, country_iso_code:string)
[
'2.20.183.12', 'Europe', 'GB', // United Kingdom
'5.8.1.2', 'Europe', 'RU', // Russia
'192.165.12.17', 'Europe', '', // Sweden is 'SE' - so it won't be matched
];
IPs
| evaluate ipv4_lookup(IP_Data, ip, network, continent_name, country_iso_code)
Output
Ip | continent_name | country_iso_code | network | geoname_id | continent_code | country_name | is_anonymous_proxy | is_satellite_provider |
---|---|---|---|---|---|---|---|---|
2.20.183.12 | Europa | GB | 2.20.183.0/24 | 2635167 | EU | Regno Unito | 0 | 0 |
5.8.1.2 | Europa | RU | 5.8.0.0/19 | 2017370 | EU | Russia | 0 | 0 |
Contenuti correlati
- Panoramica delle funzioni IPv4/IPv6
- Panoramica delle funzioni di corrispondenza del testo IPv4
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per