1
SAS(SAS EG 4.3経由)を使用して、既存のsasデータセットからTeradataで新しいテーブルを作成しようとしています。既存のsasデータセットは必要に応じてソートされます。Teradataで新しいテーブルを作成するときにProc Sqlが 'order by'行を実行しない
コードはエラーなしで正常に実行され、新しいテーブルがTeradataに作成されますが、コード内で行ごとに実行されません。トレースオプションを設定してsasログを見ると、 'orderby ..'行はトレースに表示されません。
TDテーブルは、必要に応じて発注されません。
よろしく
SASコード
%include "$HOME/tdpp_5200.sas";
options SASTRACE=',,,d' SASTRACELOC=SASLOG MLOGIC MPRINT;
%let Teradata_db = U_DOATDB;
%let Teradata_tb = TBL_AS2_AUDIT_AGG_18MTH;
%let primary_key = 'primary index(CAT)';
libname tdata &rdbms &dbc_info database=&Teradata_db.;
libname datalib "/wload/ar3p/gpfs/teamproj/intr/Projects/AS2_CONTROL_RPT/";
proc sql;
create table tdata.&Teradata_tb. (FASTLOAD=yes dbcreate_table_opts= primary_key) as
select * from datalib.tbl_AS2_audit_agg_18mth
order by AS_YEAR, AS2_MONTH, EVENT_TYPE, RESULT_TYPE,REASON_TYPE, OPERATOR_TYPE;
Quit;
libname tdata clear;
libname datalib clear;
SASログ
0 1475134126 trprep 0 SQL (2)
TERADATA_0: Prepared: on connection 1 1 1475134126 trprep 0 SQL (2)
SELECT * FROM U_DOATDB."TBL_AS2_AUDIT_AGG_18MTH" 2 1475134126 trprep 0 SQL (2)
3 1475134126 trprep 0 SQL (2)
TERADATA: trforc: COMMIT WORK 4 1475134126 trforc 0 SQL (2)
NOTE: SAS variable labels, formats, and lengths are not written to DBMS tables.
5 1475134132 trexec 0 SQL (2)
TERADATA_1: Executed: on connection 2 6 1475134132 trexec 0 SQL (2)
CREATE MULTISET TABLE U_DOATDB."TBL_AS2_AUDIT_AGG_18MTH" ("CAT" CHAR (200),"AS_Year" DECIMAL(11),"As2_Month"
DECIMAL(11),"EVENT_TYPE" INTEGER,"RESULT_TYPE" CHAR (1),"REASON_TYPE" INTEGER,"OPERATOR_TYPE" CHAR (8),"VOL" FLOAT) primary
index(CAT);COMMIT WORK 7 1475134132 trexec 0 SQL (2)
8 1475134132 trexec 0 SQL (2)
Teradataのテーブルは決して表示されません。内部的にはハッシュ値でソートされます。 – dnoeth
こんにちはdnoeth、すぐにお返事ありがとうございます。したがって、order by節を追加することは無駄であり、必要ではないようです。 Teradataに渡されたSQLからその行が除外された理由はありますか? –
あなたが言うように..それは必要ではありません。 libnameエンジンは、SAS SQLをパススルー変換プロセスの一部として「ネイティブSQL」に変換します。 –