PROC SQLステップは個別に実質的に別個のデータステップであるため、ある意味では常にSASから同じ情報を取得します。あなたが求めているのは、「名前の選択」と「empid」の比較にかかる時間を効果的に調べる方法です。
データステップ内の個々のステートメントのタイミングを取得する直接的な方法はありませんが、データステップコードを記述して調べることはできます。問題は、データステップが行単位で実行されるため、PROCSQLSTIMERの詳細とはまったく異なることです。ハッシュテーブルルックアップのようなより複雑なことをしているのでない限り、データステップで行うことはほとんど何もそれ自体では非常に時間がかかりません。時間がかかるのは、最初にデータを書き出し、次にデータを読み込むことです。
それがあなたの懸念であるならば、あなたは長いデータステップをトラブルシューティングするためのいくつかのオプションを持っています。オプションMSGLEVEL=インデックスの使用法、マージの詳細などに関する情報を提供します。これは、特定の処理に時間がかかる理由がわからない場合に役立ちます(http://goo.gl/bpGWLを参照)。詳細については、SASのドキュメントを参照してください)。独自のタイムスタンプを書くことができます:
data test;
set sashelp.class sashelp.class;
_t=time();
put _t=;
run;
ほとんどのデータステップの反復はそれほど長くはかからないので、あまり使用されない可能性がありますが、何か凝ったことをしている場合は役立つかもしれません。条件ステートメントを使用して、特定の間隔でのみ時刻を出力することもできます。たとえば、FIRST.IDで、BYID;で動作するプロセスの場合です。
最終的には、メモからすでに取得している情報が最も有用です。PROC SQLでは、SQLが一度にいくつかのことを実行するのに対し、SASはすべてを段階的に実行できるようにするため、STIMER情報が必要です。例:
PROC SQL;
create table X as select * from A,B where A.ID=B.ID;
quit;
これは1つのステップですが、SASでは次のようになります。
proc sort data=a; by ID; run;
proc sort data=b; by ID; run;
data x;
merge a(in=a) b(in=b);
by id;
if a and b;
run;
そのために、SASでのこれらの各ステップ(2つのソートとマージ)の期間に関する情報を取得します。これは、STIMERが通知するものと同様です。