geoip_fl()
geoip_fl()
è una funzione definita dall'utente che recupera le informazioni geografiche dell'indirizzo IP.
Nota
- Usare la funzione nativa geo_info_from_ip_address() anziché la funzione descritta in questo documento. La funzione nativa offre la stessa funzionalità ed è migliore per prestazioni e scalabilità. Questo documento viene fornito solo a scopo di riferimento.
- Questa funzione ha recuperato i dati geografici dai dati GeoLite2 creati da MaxMind, disponibili da http://www.maxmind.com. Vedere Contratto di licenza con l'utente finale di GeoLite2.
Prerequisiti
- Il plug-in Python deve essere abilitato nel cluster. Questa operazione è necessaria per Python inline usato nella funzione .
- Il plug-in Python deve essere abilitato nel database. Questa operazione è necessaria per Python inline usato nella funzione .
Sintassi
T | invoke geoip_fl(
,
ip_col,
country_col,
state_col,
city_col,
longitude_collatitude_col)
Altre informazioni sulle convenzioni di sintassi.
Parametri
Nome | Tipo | Obbligatoria | Descrizione |
---|---|---|---|
ip_col | string |
✔️ | Nome della colonna contenente gli indirizzi IP da risolvere. |
country_col | string |
✔️ | Nome della colonna in cui archiviare il paese recuperato. |
state_col | string |
✔️ | Nome della colonna in cui archiviare lo stato recuperato. |
city_col | string |
✔️ | Nome della colonna in cui archiviare la città recuperata. |
longitude_col | real |
✔️ | Nome della colonna in cui archiviare la longitudine recuperata. |
latitude_col | real |
✔️ | Nome della colonna in cui archiviare la latitudine recuperata. |
Definizione di funzione
È possibile definire la funzione incorporando il codice come funzione definita da query o creandola come funzione archiviata nel database, come indicato di seguito:
Definire la funzione usando l'istruzione let seguente. Non sono necessarie autorizzazioni.
Importante
Un'istruzione let non può essere eseguita autonomamente. Deve essere seguita da un'istruzione di espressione tabulare. Per eseguire un esempio funzionante di geoip_fl()
, vedere Esempio.
let geoip_fl=(tbl:(*), ip_col:string, country_col:string, state_col:string, city_col:string, longitude_col:string, latitude_col:string)
{
let kwargs = bag_pack('ip_col', ip_col, 'country_col', country_col, 'state_col', state_col, 'city_col', city_col, 'longitude_col', longitude_col, 'latitude_col', latitude_col);
let code= ```if 1:
from sandbox_utils import Zipackage
Zipackage.install('geoip2.zip')
import geoip2.database
ip_col = kargs['ip_col']
country_col = kargs['country_col']
state_col = kargs['state_col']
city_col = kargs['city_col']
longitude_col = kargs['longitude_col']
latitude_col = kargs['latitude_col']
result=df
reader = geoip2.database.Reader(r'C:\\Temp\\GeoLite2-City.mmdb')
def geodata(ip):
try:
gd = reader.city(ip)
geo = pd.Series((gd.country.name, gd.subdivisions.most_specific.name, gd.city.name, gd.location.longitude, gd.location.latitude))
except:
geo = pd.Series((None, None, None, None, None))
return geo
result[[country_col, state_col, city_col, longitude_col, latitude_col]] = result[ip_col].apply(geodata)
```;
tbl
| evaluate python(typeof(*), code, kwargs,
external_artifacts =
pack('geoip2.zip', 'https://artifactswestus.blob.core.windows.net/public/geoip2-4.6.0.zip',
'GeoLite2-City.mmdb', 'https://artifactswestus.blob.core.windows.net/public/GeoLite2-City-20230221.mmdb')
)
};
// Write your query to use the function here.
Esempio
Nell'esempio seguente viene utilizzato l'operatore invoke per eseguire la funzione .
Per usare una funzione definita da query, richiamarla dopo la definizione della funzione incorporata.
let geoip_fl=(tbl:(*), ip_col:string, country_col:string, state_col:string, city_col:string, longitude_col:string, latitude_col:string)
{
let kwargs = bag_pack('ip_col', ip_col, 'country_col', country_col, 'state_col', state_col, 'city_col', city_col, 'longitude_col', longitude_col, 'latitude_col', latitude_col);
let code= ```if 1:
from sandbox_utils import Zipackage
Zipackage.install('geoip2.zip')
import geoip2.database
ip_col = kargs['ip_col']
country_col = kargs['country_col']
state_col = kargs['state_col']
city_col = kargs['city_col']
longitude_col = kargs['longitude_col']
latitude_col = kargs['latitude_col']
result=df
reader = geoip2.database.Reader(r'C:\\Temp\\GeoLite2-City.mmdb')
def geodata(ip):
try:
gd = reader.city(ip)
geo = pd.Series((gd.country.name, gd.subdivisions.most_specific.name, gd.city.name, gd.location.longitude, gd.location.latitude))
except:
geo = pd.Series((None, None, None, None, None))
return geo
result[[country_col, state_col, city_col, longitude_col, latitude_col]] = result[ip_col].apply(geodata)
```;
tbl
| evaluate python(typeof(*), code, kwargs,
external_artifacts =
pack('geoip2.zip', 'https://artifactswestus.blob.core.windows.net/public/geoip2-4.6.0.zip',
'GeoLite2-City.mmdb', 'https://artifactswestus.blob.core.windows.net/public/GeoLite2-City-20230221.mmdb')
)
};
datatable(ip:string) [
'8.8.8.8',
'20.53.203.50',
'20.81.111.85',
'20.103.85.33',
'20.84.181.62',
'205.251.242.103',
]
| extend country='', state='', city='', longitude=real(null), latitude=real(null)
| invoke geoip_fl('ip','country', 'state', 'city', 'longitude', 'latitude')
Output
Ip | country | state | city | longitudine | latitudine |
---|---|---|---|---|---|
20.103.85.33 | Paesi Bassi | Olanda Settentrionale | Amsterdam | 4.8883 | 52.3716 |
20.53.203.50 | Australia | New South Wales | Sydney | 151.2006 | -33.8715 |
20.81.111.85 | Stati Uniti | Virginia | Tappahannock | -76.8545 | 37.9273 |
20.84.181.62 | Stati Uniti | Iowa | Des Moines | -93.6124 | 41.6021 |
205.251.242.103 | Stati Uniti | Virginia | Ashburn | -77.4903 | 39.0469 |
8.8.8.8 | Stati Uniti | California | Los Angeles | -118.2441 | 34.0544 |
Questa funzionalità non è supportata.
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