ラベル プロシジャ: FedSQL の投稿を表示しています。 すべての投稿を表示
ラベル プロシジャ: FedSQL の投稿を表示しています。 すべての投稿を表示

2018年9月10日月曜日

PROC SQL / FedSQL / DS2 の「STIMERオプション」でログに各ステップ毎のパフォーマンスを表示する





以下はPROC SQLで何個かステートメントを書いて実行した結果

proc sql;
  create table dt1 as select * from sashelp.class;
  create table dt2 as select * from sashelp.cars;
quit;



ログ
 72         proc sql ;
 73           create table dt1 as select * from sashelp.class;
 NOTE: テーブルWORK.DT1(行数19、列数5)が作成されました。

 74           create table dt2 as select * from sashelp.cars;
 NOTE: テーブルWORK.DT2(行数428、列数15)が作成されました。

 75         quit;
 NOTE: PROCEDURE SQL処理(合計処理時間):
       処理時間           0.00 秒
       CPU時間            0.01 秒



続いてSTIMERオプションをつけた場合

proc sql stimer;
  create table dt1 as select * from sashelp.class;
  create table dt2 as select * from sashelp.cars;
quit;


ログ
 74         proc sql stimer;
 NOTE: SQL Statement処理(合計処理時間):
       処理時間           0.00 秒
       CPU時間            0.00 秒
     
 75           create table dt1 as select * from sashelp.class;
 NOTE: テーブルWORK.DT1(行数19、列数5)が作成されました。

 NOTE: SQL Statement処理(合計処理時間):
       処理時間           0.00 秒
       CPU時間            0.00 秒
     
 76           create table dt2 as select * from sashelp.cars;
 NOTE: テーブルWORK.DT2(行数428、列数15)が作成されました。

 NOTE: SQL Statement処理(合計処理時間):
       処理時間           0.00 秒
       CPU時間            0.00 秒
     
 77         quit;
 NOTE: PROCEDURE SQL処理(合計処理時間):
       処理時間           0.00 秒
       CPU時間            0.00 秒


ログにステートメント毎のパフォーマンスが表示されるようになります。
「PROC DS2」や「PROC FedSQL」でも同様にSTIMERオプションを設定できます。
私自身はDS2使う時によくこのオプション指定することはあります。


※「STIMERオプション」を利用するには、システムオプションで「OPTIONS STIMER」か「OPTIONS FULLSTIMER」も設定されている必要があります。


2016年7月4日月曜日

FedSQLプロシジャで変数名が予約語と被る場合の解決策


ネタ提供いただきました、ありがとうございます!



【質問】 以下FedSQLプロシジャを実行するとERRORが出ます。SQLプロシジャで動いてたのに何故?
data DT1;
  OF=1;
run;

proc fedsql;
   select OF
   from DT1;
quit;

ログ
ERROR: 構文エラー at or near "OF"


【回答】 FedSQLには予約語が存在します。
変数名をOFにしていますが、このOFが予約語だったのでERRORが出てしまったわけです。

解決策は以下のようにダブルクォーテーションで囲ってあげるだけです。

proc fedsql;
   select "OF"
   from DT1;
quit;

FedSQLにどんな予約語があるかはSAS社のリファレンスを確認してみてください。