Snowflake cloud data platform Postgress INET与雪花兼容
我需要帮助将postgres函数迁移到snowflake函数 目前,我有以下函数,它接受ip_地址并返回ip_地址的起始范围:Snowflake cloud data platform Postgress INET与雪花兼容,snowflake-cloud-data-platform,greenplum,Snowflake Cloud Data Platform,Greenplum,我需要帮助将postgres函数迁移到snowflake函数 目前,我有以下函数,它接受ip_地址并返回ip_地址的起始范围: ... begin if (p_ip_address is not null) then return p_ip_address::inet - '0.0.0.0'; else return null; end if; end ... 我知道我们在snowflake中提供了JSON文件,但我只需要这个JSON的一部分(ipv4\u ran
...
begin
if (p_ip_address is not null) then
return p_ip_address::inet - '0.0.0.0';
else
return null;
end if;
end
...
我知道我们在snowflake中提供了JSON文件,但我只需要这个JSON的一部分(ipv4\u range\u start)
例如:
Input = 192.168.242.188
Output = 3232297472
如果您只需要一组信息,请选择它
select parse_ip('127.0.0.0/24','INET') as a
,a:ipv4_range_end;
给出:
A A:IPV4_RANGE_END
{ "family": 4, "host": "127.0.0.0", "ip_fields": [ 2130706432, 0, 0, 0 ], "ip_type": "inet", "ipv4": 2130706432, "ipv4_range_end": 2130706687, "ipv4_range_start": 2130706432, "netmask_prefix_length": 24, "snowflake$type": "ip_address" } 2130706687
如果您只需要一组信息,请选择它
select parse_ip('127.0.0.0/24','INET') as a
,a:ipv4_range_end;
给出:
A A:IPV4_RANGE_END
{ "family": 4, "host": "127.0.0.0", "ip_fields": [ 2130706432, 0, 0, 0 ], "ip_type": "inet", "ipv4": 2130706432, "ipv4_range_end": 2130706687, "ipv4_range_start": 2130706432, "netmask_prefix_length": 24, "snowflake$type": "ip_address" } 2130706687
感谢Simeon的快速响应。我拥有的数据格式不同(“71.227.8.18”)。对于我的源数据,它给了我空值{code}选择parse_ip('127.0.0.0/24','INET')作为a,parse_ip('71.227.8.18','INET')作为b,a:ipv4_范围_开始为s1,a:ipv4_范围_结束为e1,b:ipv4_范围_开始为s2,b:ipv4_范围_结束为e2;{code}那是因为
71.227.8.18
是主机地址,而不是网络地址127.0.0.0/24
是一个网络,因此该函数可以为您提供起始地址127.0.0.0,结束地址127.0.0.255,因为/24有时也写在255.255.255.0中,它显示地址的哪些位是网络,哪些位是主机地址。。如果你已经知道一个网络的掩码,你可以通过位操作来进行掩码(但实际上解析IP更简单),但是如果你没有掩码,就不再有一个定义的标准来定义过去所谓的“网络类”,感谢Simeon的快速响应。我拥有的数据格式不同(“71.227.8.18”)。对于我的源数据,它给了我空值{code}选择parse_ip('127.0.0.0/24','INET')作为a,parse_ip('71.227.8.18','INET')作为b,a:ipv4_范围_开始为s1,a:ipv4_范围_结束为e1,b:ipv4_范围_开始为s2,b:ipv4_范围_结束为e2;{code}那是因为71.227.8.18
是主机地址,而不是网络地址127.0.0.0/24
是一个网络,因此该函数可以为您提供起始地址127.0.0.0,结束地址127.0.0.255,因为/24有时也写在255.255.255.0中,它显示地址的哪些位是网络,哪些位是主机地址。。如果你已经知道一个网络的掩码,你可以通过位操作来做掩码(但实际上解析IP更简单),但是如果你没有掩码,就不再有一个定义的标准来定义过去被称为“网络类”的东西