плагин ipv6_lookup

Переключайте службы с помощью раскрывающегося списка Версия. Дополнительные сведения о навигации.
Область применения: ✅ Microsoft Fabric ✅ Azure Data Explorer

Подключаемый ipv6_lookup модуль ищет значение IPv6 в таблице подстановки и возвращает строки с соответствующими значениями. Подключаемый модуль вызывается оператором evaluate .

Синтаксис

T|evaluateipv6_lookup(LookupTable,SourceIPv6Key,IPv6LookupKey [,return_unmatched ] )

Параметры

Имя Тип Обязательно Description
T string ✔️ Табличные входные данные, столбец SourceIPv6Key которых используется для сопоставления IPv6.
LookupTable string ✔️ Табличное выражение с данными подстановки IPv6, столбец LookupKey используется для сопоставления IPv6. Значения IPv6 можно маскировать с помощью нотации IP-префикса.
SourceIPv6Key string ✔️ Столбец T со строкой IPv6 для поиска в LookupTable. Значения IPv6 можно маскировать с помощью нотации IP-префикса.
IPv6LookupKey string ✔️ Столбец LookupTable со строкой IPv6, которая соответствует каждому значению SourceIPv6Key .
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.

Возвраты

Подключаемый ipv6_lookup модуль возвращает результат соединения (подстановки) на основе ключа IPv6. Схема таблицы — это объединение исходной таблицы и таблицы подстановки, аналогично результату lookup оператора.

Если для аргумента return_unmatched задано trueзначение, результирующая таблица включает как сопоставленные, так и несовпаденные строки (заполненные значениями NULL).

Если аргумент return_unmatched задан falseили опущен (значение false по умолчанию используется), результирующая таблица содержит столько записей, сколько соответствует результатам. Этот вариант поиска имеет лучшую производительность по сравнению с return_unmatched=true выполнением.

Замечание

  • Этот подключаемый модуль охватывает сценарий соединения на основе IPv6, при условии небольшого размера таблицы подстановки (100K-300K строк), при этом входная таблица при необходимости имеет больший размер.
  • Производительность подключаемого модуля зависит от размеров таблиц подстановки и источника данных, количества столбцов и количества соответствующих записей.

Примеры

Поиск IPv6 — только соответствующие строки

// IP lookup table: IP_Data (the data is generated by ChatGPT).
let IP_Data = datatable(network:string, continent_code:string ,continent_name:string, country_iso_code:string, country_name:string)
[
  "2001:0db8:85a3::/48","NA","North America","US","United States",
  "2404:6800:4001::/48","AS","Asia","JP","Japan",
  "2a00:1450:4001::/48","EU","Europe","DE","Germany",
  "2800:3f0:4001::/48","SA","South America","BR","Brazil",
  "2c0f:fb50:4001::/48","AF","Africa","ZA","South Africa",
  "2607:f8b0:4001::/48","NA","North America","CA","Canada",
  "2a02:26f0:4001::/48","EU","Europe","FR","France",
  "2400:cb00:4001::/48","AS","Asia","IN","India",
  "2801:0db8:85a3::/48","SA","South America","AR","Argentina",
  "2a03:2880:4001::/48","EU","Europe","GB","United Kingdom"
];
let IPs = datatable(ip:string)
[
  "2001:0db8:85a3:0000:0000:8a2e:0370:7334", // United States
  "2404:6800:4001:0001:0000:8a2e:0370:7334", // Japan
  "2a02:26f0:4001:0006:0000:8a2e:0370:7334", // France
  "a5e:f127:8a9d:146d:e102:b5d3:c755:abcd",  // N/A
  "a5e:f127:8a9d:146d:e102:b5d3:c755:abce"   // N/A
];
IPs
| evaluate ipv6_lookup(IP_Data, ip, network)

Выходные данные

сеть continent_code continent_name country_iso_code country_name протокол IP
2001:0db8:85a3::/48 NA Северная Америка США Соединенные Штаты 2001:0db8:85a3:0000:0000:8a2e:0370:7334
2404:6800:4001::/48 КАК Asia JP Япония 2404:6800:4001:0001:0000:8a2e:0370:7334
2a02:26f0:4001::/48 Европейский Союз Европа ФР Франция 2a02:26f0:4001:0006:0000:8a2e:0370:7334

Поиск IPv6 — возвращает как соответствующие, так и несоединяющие строки

// IP lookup table: IP_Data (the data is generated by ChatGPT).
let IP_Data = datatable(network:string, continent_code:string ,continent_name:string, country_iso_code:string, country_name:string)
[
  "2001:0db8:85a3::/48","NA","North America","US","United States",
  "2404:6800:4001::/48","AS","Asia","JP","Japan",
  "2a00:1450:4001::/48","EU","Europe","DE","Germany",
  "2800:3f0:4001::/48","SA","South America","BR","Brazil",
  "2c0f:fb50:4001::/48","AF","Africa","ZA","South Africa",
  "2607:f8b0:4001::/48","NA","North America","CA","Canada",
  "2a02:26f0:4001::/48","EU","Europe","FR","France",
  "2400:cb00:4001::/48","AS","Asia","IN","India",
  "2801:0db8:85a3::/48","SA","South America","AR","Argentina",
  "2a03:2880:4001::/48","EU","Europe","GB","United Kingdom"
];
let IPs = datatable(ip:string)
[
  "2001:0db8:85a3:0000:0000:8a2e:0370:7334", // United States
  "2404:6800:4001:0001:0000:8a2e:0370:7334", // Japan
  "2a02:26f0:4001:0006:0000:8a2e:0370:7334", // France
  "a5e:f127:8a9d:146d:e102:b5d3:c755:abcd",  // N/A
  "a5e:f127:8a9d:146d:e102:b5d3:c755:abce"   // N/A
];
IPs
| evaluate ipv6_lookup(IP_Data, ip, network, true)

Выходные данные

сеть continent_code continent_name country_iso_code country_name протокол IP
2001:0db8:85a3::/48 NA Северная Америка США Соединенные Штаты 2001:0db8:85a3:0000:0000:8a2e:0370:7334
2404:6800:4001::/48 КАК Asia JP Япония 2404:6800:4001:0001:0000:8a2e:0370:7334
2a02:26f0:4001::/48 Европейский Союз Европа ФР Франция 2a02:26f0:4001:0006:0000:8a2e:0370:7334
a5e:f127:8a9d:146d:e102:b5d3:c755:abcd
a5e:f127:8a9d:146d:e102:b5d3:c755:abce