LIBNAMEステートメントを使用してTeradataへの接続を確立するSAS暗黙的なSQLでTeradata UDF(ユーザー定義関数)を使用しようとしています。この関数はPTY_DECRYPTと呼ばれています。 TeradataのTESTというデータベースで定義されています。この機能の目的は、Teradataのビューの列の値を復号化することです。SAS暗黙のSqlパスでTeradata UDFを使用する
明示的なSql.BelowでUDFを使用すると、データベースに存在するV_TEST_PERSという名前のビューでSSN_NBRという名前の列にこの関数を使用しています。
Explcit SQL:
Options debug=DBMS_TIMERS sastrace=',,,d'
sastraceloc=saslog no$stsuffix fullstimer;
Proc Sql;
Connect to TERADATA(User=XXXXX pwd=XXXXX server=XXXXX);
Create Table Final as
select * from connection to teradata
(
Select
sub_id,
SSN_NBR,
TEST.PTY_DECRYPT(SSN_NBR,'T_ssn_test',400,0,0) as SSN_NBR_Decrypt
from SAMPLE.V_TEST_PERS
);
disconnect from teradata;
Quit;
しかし、私は暗黙SQLで同じ機能を使用したいが、それは動作しません。 Implicit SQLの最小限の変更で暗黙的なSQLでそれを動作させる方法に関するアイデアはありますか?あなたはUDFを参照する場合しかし、あなたはLIBNAMEの別名でUDFを含むTEST
データベースエイリアシングされていない、LIBNAMEエイリアスTD
とビューを参照するあなたの暗黙のSQLで
暗黙のSql
Options debug=DBMS_TIMERS sastrace=',,,d'
sastraceloc=saslog no$stsuffix fullstimer;
Libname Td Teradata User=XXXXX pwd=XXXXX server=XXXXX database=SAMPLE ;
Proc sql;
Create table Final as
select
sub_id,
SSN_NBR,
TEST.PTY_DECRYPT(SSN_NBR,'T_ssn_test',400,0,0) as SSN_NBR_Decrypt
from Td.V_TEST_PERS;
Quit;
興味深い回避策を。賢いそれを動作させるために 'ORDER BY 1 'を使用することに驚いた。 –