将字符串转换为数字的逻辑
Logic to convert string of words to number
我正在寻找一种逻辑来帮助我在 teradata 和 hive 中将字符串转换为数字。
它应该很容易在 Tearadata 中实现,因为我没有在 TD 中部署 UDF 的权限。在hive中如果不简单我可以轻松写一个UDF。
我的要求 - 假设我有列 sender_country,接收国。我想为 concat('sender_country','_','receiver_country') 生成一个数字
如果国家再次出现,数字应该始终相同。
下图
UID sender_country receiver_country concat number
1 US UK US_UK 198760
2 FR IN FR_IN 146785
3 CH RU CH_RU 467892
4 US UK US_UK 198760
它应该是一个国家的所有独特组合都应该具有独特价值的方式。就像在上面的例子中 US_US
被重复,它有相同的对应 number
.
我在 TD 中尝试过 hashbucket(hashrow('concat'))
,但不知道它在 hive 中的等效实现。
类似地,我们在 hive 中有 hash()
函数,但在 TD 中没有相应的函数。
我找不到任何在 TD 和 Hive 中 returns 相似值的哈希函数
您可以简单地将每个字符转换为数字:
Ascii(Substr(sender_country,1,1))*1000000+
Ascii(Substr(sender_country,2,1))*10000+
Ascii(Substr(receiver_country,1,1))*100+
Ascii(Substr(receiver_country,2,1))
returns 85838575
对于 US,UK
我正在寻找一种逻辑来帮助我在 teradata 和 hive 中将字符串转换为数字。
它应该很容易在 Tearadata 中实现,因为我没有在 TD 中部署 UDF 的权限。在hive中如果不简单我可以轻松写一个UDF。
我的要求 - 假设我有列 sender_country,接收国。我想为 concat('sender_country','_','receiver_country') 生成一个数字 如果国家再次出现,数字应该始终相同。
下图
UID sender_country receiver_country concat number
1 US UK US_UK 198760
2 FR IN FR_IN 146785
3 CH RU CH_RU 467892
4 US UK US_UK 198760
它应该是一个国家的所有独特组合都应该具有独特价值的方式。就像在上面的例子中 US_US
被重复,它有相同的对应 number
.
我在 TD 中尝试过 hashbucket(hashrow('concat'))
,但不知道它在 hive 中的等效实现。
类似地,我们在 hive 中有 hash()
函数,但在 TD 中没有相应的函数。
我找不到任何在 TD 和 Hive 中 returns 相似值的哈希函数
您可以简单地将每个字符转换为数字:
Ascii(Substr(sender_country,1,1))*1000000+
Ascii(Substr(sender_country,2,1))*10000+
Ascii(Substr(receiver_country,1,1))*100+
Ascii(Substr(receiver_country,2,1))
returns 85838575
对于 US,UK