0

S3を介してモジュールをアップロードしようとしましたが、モジュールが見つかりません。助けてくださいredshiftのpython udfの中でselectクエリを使う方法は?

CREATE or replace FUNCTION olus_layer(subs_no varchar) 
RETURNS varchar volatile AS 
$$ 
import plpydbapi 
dbconn = plpydbapi.connect() 
cursor = dbconn.cursor() 
cursor.execute("SELECT count(*) from busobj_group.olus_usage_detail") 
d=cursor.fetchall() 
dbconn.close() 
return d 
$$ 
LANGUAGE plpythonu; 

-

+0

ようこそ。このコードサービスサイトはありません。スクリプトに問題がある場合は、まず自分自身で試してみてください。 – yacc

+0

FUNCTIONのolus_layer(subs_noのvarchar型)を作成または交換$$ busobj_group.olus_usage_detailからの輸入plpydbapi dbconn = plpydbapi.connect() カーソル= dbconn.cursor() cursor.execute( "SELECT COUNT(*)AS VARCHAR揮発性RETURNS ") d = cursor.fetchall() dbconn.close() リターンd $$ LANGUAGE plpythonu;上記の – Shivam

+0

は私が使ったコードですが、 'モジュールが見つかりません'というエラーが出ています。 Redshift規格にのみ基づいてパッケージ化したモジュールです。 – Shivam

答えて

1

あなたは赤方偏移でこれを行うことはできません。他のアプローチを見つける必要があります。

重要アマゾン赤方偏移ブロックすべてのネットワークアクセスとUDFによるファイルシステムへのアクセス を書く:

1)http://docs.aws.amazon.com/redshift/latest/dg/udf-constraints.html

2)ここでhttp://docs.aws.amazon.com/redshift/latest/dg/udf-python-language-support.html特にこの部分 を参照してくださいUDF制約についてはこちらをご覧ください。

これは、制限を回避しようとしても機能しないことを意味します。

あなたが必要とするものを得るための別の方法がわからない場合は、あなたの挑戦が何であるか、何を試みたかを正確に指定する新しい質問をする必要があります(この質問は、

1

UDF内のDBに接続できません。Python関数はRedshiftのスカラーです。つまり、1つ以上の値を取り、1つの出力値しか返しません。

しかし、行セットに対して関数を実行する場合は、LISTAGG関数を使用して、(文字列サイズの制限に注意して)大きな文字列に値またはオブジェクト(複数のプロパティが必要な場合)の配列を作成してみてください。パラメータとしてUDFに渡し、関数内で解析/ループします。

関連する問題