【问题标题】:Amazon Redshift: How can I convert a 15 char Salesforce Id value into an 18 char Id valueAmazon Redshift:如何将 15 个字符的 Salesforce Id 值转换为 18 个字符的 Id 值
【发布时间】:2019-01-28 23:25:15
【问题描述】:

我在 Amazon Redshift 数据库上保存了 SalesForce 数据。 我想在 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 的代码吗?

【问题讨论】:

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


    【解决方案1】:

    哦,好问题!

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

    我用它来创建一个 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')
    

    它似乎有效,但请测试它!

    【讨论】:

      猜你喜欢
      • 2010-12-20
      • 2019-04-07
      • 2022-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多