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 |