2017-09-29 5 views
1

私は、次の形式であるのフィールド値を持っている:redshiftで特別なシンボルの後のカウント番号?

この中に今
GPU#nDisplays:Intel(R) Iris(TM) Graphics 540#1 Microsoft Basic Render Driver#0 

私は「#」後の値の合計を求めています。たとえば、この場合、私の合計は1 + 0 = 1になります。

Redshift SQLクエリを使用してどのように取得できますか?

私が開始するには、このような何かを試してみました:

(regexp_count(REGEXP_SUBSTR (cpu_params,'GPU#n[^,]*'),'#[0-9]') 
+0

ちょっと@akshay_rao私の下の答えはあなたのために働いたのですか?もしそうなら、正しい答えとして受け入れてください - そうでない場合は理由を説明してください。 –

答えて

0

あなたはこの

Here is the AWS documentation

重要なのために赤方偏移パイソンUDFを使用することができます - 以下を行う必要があります。

revoke usage on language PLPYTHONU from PUBLIC; 
grant usage on language PLPYTHONU to group udf_devs; 
or 
grant usage on language PLPYTHONU to user youruserid; 

私の非python pythonコードを許してください - 私はこれが可能かもしれないと確信していますb改善されました。

"yourstring"をテスト文字列に置き換えて、Redshiftで以下を実行してください。

create or replace function f_sum_after_hash (s varchar(max)) 
    returns integer 
stable 
as $$ 
def f_sum_after_hash(input_string): 
    parts = input_string.split("#") 
    score = 0 
    for part in parts[1:]: 
     index=0 
     for c in part: 
      if c.isdigit(): 
       index+=1 
      else: 
       break 
     if index >0: 
      score+=int(part[:index]) 
    return score 
return f_sum_after_hash(s) 
$$ language plpythonu; 

select f_sum_after_hash ('yourstring'); 
+0

ご回答ありがとうございます。しかし、私が使用するAWSの赤方偏移については、UDFを書くオプションがありません。ダンプでPythonスクリプトを使用して同様のオプションを試しています –

+0

redshiftのすべてのバージョンでそのudf機能が使用されています。 –

+0

http://docs.aws.amazon.com/redshift/latest/dg/udf-security-and-privileges.htmlを参照してください。私はそのステップを答えに加えました。 –

関連する問題