ipv6_lookup 插件

适用于:✅Azure 数据资源管理器

ipv6_lookup 插件会在查找表中查找 IPv6 值,并返回具有匹配值的行。 该插件通过 evaluate 运算符调用。

语法

T | evaluate ipv6_lookup( LookupTable , SourceIPv6Key , IPv6LookupKey [, return_unmatched] )

参数

客户 类型​​ 必需 说明
T string ✔️ 表格输入,其列 SourceIPv6Key 将用于 IPv6 匹配。
LookupTable string ✔️ 具有 IPv6 查找数据的表或表格表达式,其列 LookupKey 将用于 IPv6 匹配。 可以使用 IP 前缀表示法对 IPv6 值进行掩码操作。
SourceIPv6Key string ✔️ T 的列,其中包含的 IPv6 字符串需在 LookupTable 中查找。 可以使用 IP 前缀表示法对 IPv6 值进行掩码操作。
IPv6LookupKey string ✔️ LookupTable 的列,其中包含的 IPv6 字符串与每个 SourceIPv6Key 值相匹配
return_unmatched bool 一个布尔标志,用于定义结果是应包含所有行还是仅包含匹配的行(默认值:false - 仅返回匹配的行)。

IP 前缀表示法

IP 前缀表示法(也称 CIDR 表示法)是表示 IP 地址及其关联网络掩码的简明方式。 格式为 <base IP>/<prefix length>,其中,前缀长度是网络掩码中前导 1 位的数目。 前缀长度决定了属于该网络的 IP 地址范围。

对于 IPv4,前缀长度是介于 0 和 32 之间的数字。 因此,表示法 192.168.2.0/24 表示 IP 地址 192.168.2.0,且网络掩码为 255.255.255.0。 此网络掩码具有 24 个前导 1 位,或者说前缀长度为 24。

对于 IPv6,前缀长度是介于 0 和 128 之间的数字。 因此,表示法 fe80::85d:e82c:9446:7994/120 表示 IP 地址 fe80::85d:e82c:9446:7994 且网络掩码为 ffff:ffff:ffff:ffff:ffff:ffff:ffff:ff00。 此网络掩码具有 120 个前导 1 位,或者说前缀长度为 120。

返回

ipv6_lookup 插件会返回基于 IPv6 密钥进行联接(查找)的结果。 该表的架构是源表与查找表的并集,类似于 lookup 运算符的结果。

如果将 return_unmatched 参数设置为 true,则生成的表包含匹配行和不匹配行(用 null 填充)。

如果将 return_unmatched 参数设置为 false 或省略此参数(使用默认值 false),则生成的表的记录数将与匹配的结果数相同。 与 return_unmatched=true 执行相比,此查找变体具有更好的性能。

注意

  • 此插件涵盖基于 IPv6 的联接的方案,假设查找表较小(10-30 万行),输入表可以较大。
  • 插件的性能将取决于查找表和数据源表的大小、列数和匹配记录数。

示例

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)

输出

network continent_code continent_name country_iso_code country_name ip
2001:0db8:85a3::/48 NA 北美 US 美国 2001:0db8:85a3:0000:0000:8a2e:0370:7334
2404:6800:4001::/48 AS 亚洲 JP 日本 2404:6800:4001:0001:0000:8a2e:0370:7334
2a02:26f0:4001::/48 EU 欧洲 FR 法国 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)

输出

network continent_code continent_name country_iso_code country_name ip
2001:0db8:85a3::/48 NA 北美 US 美国 2001:0db8:85a3:0000:0000:8a2e:0370:7334
2404:6800:4001::/48 AS 亚洲 JP 日本 2404:6800:4001:0001:0000:8a2e:0370:7334
2a02:26f0:4001::/48 EU 欧洲 FR 法国 2a02:26f0:4001:0006:0000:8a2e:0370:7334
a5e:f127:8a9d:146d:e102:b5d3:c755:abcd
a5e:f127:8a9d:146d:e102:b5d3:c755:abce