Amazon Redshift:如何将15字符的Salesforce Id值转换为18字符的Id值

时间:2018-08-22 16:26:21

标签: python amazon-web-services salesforce amazon-redshift

我将SalesForce数据保存在Amazon Redshift DB上。 我想在Redshift上创建一个将SalesForce 15 Char ID转换为18 Char ID的函数。我发现此主题为如何提供指导:

salesforce id - How can I convert a 15 char Id value into an 18 char Id value? - Salesforce Stack Exchange

但是这些功能都不能在Redshift上使用,我不能使用\在Amazon Redshift DB上创建类似的功能。 (不得不说,我在这方面很新。

有人可以在Redshift上使用代码吗?

1 个答案:

答案 0 :(得分:2)

哦,很好的问题!

我在这里找到了一些转换代码:

我用它来创建Amazon Redshift用户定义函数(UDF):

CREATE OR REPLACE FUNCTION f_salesforce_15_to_18 (id varchar)
  RETURNS varchar
STABLE
AS $$

# Code comes from: https://gist.github.com/KorbenC/7356677

for i in xrange(0, 3):
  flags = 0

  for x in xrange(0,5):
    c = id[i*5+x]

    #add flag if c is uppercase
    if c.isupper():
      flags = flags + (1 << x)

  if flags <= 25:
    id += 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'[flags]
  else:
    id += '012345'[flags - 26]

return id

$$ LANGUAGE plpythonu;

运行:

SELECT f_salesforce_15_to_18 ('500A000000D34Xf')

似乎可行,但请对其进行测试!