2017-07-29 76 views
0

我要寻找一个逻辑,这将帮助我在coverting字符串在Teradata和蜂巢数量。逻辑单词的字符串转换为数字

,我也无权进行部署TD一UDF应该在Tearadata容易实现。在配置单元中,如果它不简单,我可以轻松编写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')),但不知道它在蜂巢相当于实施。

同样,我们在蜂巢hash()功能,但不具备在TD同等功能。

我找不到它在TD和蜂巢返回相似值的任何哈希函数也

回答

1

您可以将每个字符简单地转换成一个数字:

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)) 

回报85838575US,UK

+0

但“国家代码”的大小不固定。例如,有可能像''IND''为'有时country'列中的值 –

+0

@RahulSinghvi:大多数公司要么使用标准的编码,2个或3个字母的ISO(甚至3位数的ISO,而不需要转换,HTTPS ://en.wikipedia.org/wiki/Country_code)。当你混合你会遇到问题,这应该在加载过程中被修复。 Teradata提供MD5和BLAKE2 UDF,您可以与您的DBA沟通 – dnoeth

+0

Thankyou太多了@dnoeth –