Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Переключайте службы с помощью раскрывающегося списка Версия. Дополнительные сведения о навигации.
Область применения: ✅ Microsoft Fabric ✅ Azure Data Explorer
Подключаемый ipv4_lookup модуль ищет значение IPv4 в таблице подстановки и возвращает строки с соответствующими значениями. Подключаемый модуль вызывается оператором evaluate .
Синтаксис
T|evaluateipv4_lookup(LookupTable,SourceIPv4Key,IPv4LookupKey [,ExtraKey1 [..
,
ExtraKeyN [,return_unmatched ]]] )
Параметры
| Имя | Тип | Обязательно | Description |
|---|---|---|---|
| T | string |
✔️ | Табличные входные данные, столбец SourceIPv4Key используется для сопоставления IPv4. |
| LookupTable | string |
✔️ | Табличное выражение с данными подстановки IPv4, столбец LookupKey используется для сопоставления IPv4. Значения IPv4 можно маскировать с помощью нотации IP-префикса. |
| SourceIPv4Key | string |
✔️ | Столбец T со строкой IPv4 для поиска в LookupTable. Значения IPv4 можно маскировать с помощью нотации IP-префикса. |
| IPv4LookupKey | string |
✔️ | Столбец LookupTable со строкой IPv4, которая соответствует каждому значению SourceIPv4Key . |
| ExtraKey1 .. ExtraKeyN | string |
Дополнительные ссылки на столбцы, используемые для совпадений подстановки.
join Аналогично операции: записи с равными значениями считаются соответствующими. Ссылки на имена столбцов должны существовать как в исходной таблице T , так и LookupTableв . |
|
| return_unmatched | bool |
Логический флаг, определяющий, должен ли результат включать все или только соответствующие строки (по умолчанию — false только соответствующие строки). |
Нотация IP-префикса
Нотация IP-префикса (также известная как нотация CIDR) — это краткий способ представления IP-адреса и связанной с ней сетевой маски. Формат: <base IP>/<prefix length>длина префикса — это число ведущих 1 битов в netmask. Длина префикса определяет диапазон IP-адресов, принадлежащих сети.
Для IPv4 длина префикса составляет от 0 до 32. Поэтому нотация 192.168.2.0/24 представляет IP-адрес 192.168.2.0 с netmask 255.255.255.0. Эта netmask имеет 24 ведущих 1 бита или длину префикса 24.
Для IPv6 длина префикса составляет от 0 до 128. Поэтому нотация fe80::85d:e82c:9446:7994/120 представляет IP-адрес fe80::85d:e85d:9446:7994 с netmask ffff:ffff:ffff. Эта netmask имеет 120 ведущих 1 битов или длину префикса 120.
Возвраты
Подключаемый ipv4_lookup модуль возвращает результат соединения (подстановки) на основе ключа IPv4. Схема таблицы — это объединение исходной таблицы и таблицы подстановки, аналогично результату lookup оператора.
Если для аргумента return_unmatched задано trueзначение, результирующая таблица включает как сопоставленные, так и несовпаденные строки (заполненные значениями NULL).
Если аргумент return_unmatched задан falseили опущен (значение false по умолчанию используется), результирующая таблица содержит столько записей, сколько соответствует результатам. Этот вариант поиска имеет лучшую производительность по сравнению с return_unmatched=true выполнением.
Замечание
- Этот подключаемый модуль охватывает сценарий соединения на основе IPv4, предполагая небольшой размер таблицы подстановки (100K-200K строк) с входной таблицей при необходимости с большим размером.
- Производительность подключаемого модуля зависит от размеров таблиц подстановки и источника данных, количества столбцов и количества соответствующих записей.
Примеры
Поиск IPv4 — только соответствующие строки
// 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)
Выходные данные
| протокол IP | сеть | continent_code | continent_name | country_iso_code | country_name |
|---|---|---|---|---|---|
| 2.20.183.12 | 2.20.183.0/24 | Европейский Союз | Европа | ГБ | Соединенное Королевство |
| 5.8.1.2 | 5.8.0.0/19 | Европейский Союз | Европа | РФ | Россия |
Подстановка IPv4 — возвращает как соответствующие, так и несоединяющие строки
// 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)
Выходные данные
| протокол IP | сеть | continent_code | continent_name | country_iso_code | country_name |
|---|---|---|---|---|---|
| 2.20.183.12 | 2.20.183.0/24 | Европейский Союз | Европа | ГБ | Соединенное Королевство |
| 5.8.1.2 | 5.8.0.0/19 | Европейский Союз | Европа | РФ | Россия |
| 192.165.12.17 |
Поиск IPv4 — использование источника в 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)
Выходные данные
| протокол IP | сеть | 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 | Европейский Союз | Европа | ГБ | Соединенное Королевство | 0 | 0 |
| 5.8.1.2 | 5.8.0.0/19 | 2017370 | Европейский Союз | Европа | РФ | Россия | 0 | 0 |
| 192.165.12.17 | 192.165.8.0/21 | 2661886 | Европейский Союз | Европа | SE | Швеция | 0 | 0 |
Поиск IPv4 — использование дополнительных столбцов для сопоставления
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)
Выходные данные
| протокол IP | continent_name | country_iso_code | сеть | geoname_id | continent_code | country_name | is_anonymous_proxy | is_satellite_provider |
|---|---|---|---|---|---|---|---|---|
| 2.20.183.12 | Европа | ГБ | 2.20.183.0/24 | 2635167 | Европейский Союз | Соединенное Королевство | 0 | 0 |
| 5.8.1.2 | Европа | РФ | 5.8.0.0/19 | 2017370 | Европейский Союз | Россия | 0 | 0 |
Связанный контент
- Обзор функций IPv4/IPv6
- Общие сведения о функциях сопоставления текста IPv4