SAS Tips
- データグリッド関数
- Base言語
- proc ds2ステートメント
- do untilステートメント
- E8601DZw.d 入力形式
- tzoneu2s関数
- DATETIMEw.d 出力形式
- NLDATMw. 出力形式
- where= データセットオプション
- set句で読み込む行の条件を指定する
- 列名を変更してデータセットを読み込む
- 文字列を置換する
- 外部ファイルの存在を確認する
- dataステップ内でマクロ変数に値を代入する
- ソートせずにbyステートメントを使用する
- データセットの概要やメタ情報を確認する
- DS2コードでCASにテーブルを読み込む
- CASテーブルをセッションスコープからグローバルスコープへ昇格する
- SAS Studioでproc ds2内のログを出力
- CASE文を記述したい
- 日付値の取り扱い
- CAS
- 新規ページ
データグリッド関数
DATAGRID_DUMPTOLOG関数
https://go.documentation.sas.com/doc/jp/edmcdc/v_056/edmdatagrids/p1da42svmyhzygn1r1f2uq10ntsh.htm
DATAGRID_GET関数
https://go.documentation.sas.com/doc/jp/edmcdc/v_056/edmdatagrids/n04ham6nlknk8ln17nuk76nue4vw.htm
DATAGRID_ADDROW関数
https://go.documentation.sas.com/doc/jp/edmcdc/v_056/edmdatagrids/n109izonc0diazn0z2gy6wqehync.htm
Base言語
proc ds2ステートメント
https://documentation.sas.com/doc/ja/pgmsascdc/v_061/proc/n0ox2hnyx7twb2n13200g5hqqsmy.htm
do untilステートメント
条件が真になるまで、処理をループする。 https://documentation.sas.com/doc/ja/pgmsascdc/v_061/lestmtsref/p1021qt3a3n8m2n1vh11ggzhu57n.htm
E8601DZw.d 入力形式
yyyy-mm-ddThh:mm:ss+|–hh:mm.<fffff> または yyyy-mm-ddThh:mm:ss.<fffff>Z 形式の日時値を入力する。
https://documentation.sas.com/doc/ja/pgmsascdc/v_061/leforinforref/p14nbxgmr6gn7tn1ntmuulgawrih.htm
関連: E8601DZw. 出力形式 https://documentation.sas.com/doc/ja/pgmsascdc/v_061/leforinforref/n1nvxddoqjof57n1r6j02unvwm8o.htm
tzoneu2s関数
UTC日時値をSAS日時値へ変換する。 https://documentation.sas.com/doc/ja/pgmsascdc/v_061/lefunctionsref/n1ien0skr1u9swn1f00w7hizdg9c.htm
data work.test;
input create_dt_utc $30.;
datalines;
2025-11-27T05:07:21.474Z
;
run;
data work.test_plus9h;
attrib create_dt format=NLDATM.;
set work.test;
create_dt = tzoneu2s(input(create_dt_utc, e8601dz26.3), 'AZIA/TOKYO');
run;
DATETIMEw.d 出力形式
ddmmmyy:hh:mm:ss.ss 形式でSAS日時値を出力する。
https://documentation.sas.com/doc/ja/pgmsascdc/v_061/leforinforref/n0av4h8lmnktm4n1i33et4wyz5yy.htm
NLDATMw. 出力形式
現在のSASロケールに適した形式(ja環境では yyyy/mm/dd hh:mm:ss)で、形式でSAS日時値を出力する。
https://documentation.sas.com/doc/ja/pgmsascdc/v_061/leforinforref/n0sf71zwqc9ioln1er0qqrlmku7r.htm
where= データセットオプション
https://documentation.sas.com/doc/ja/pgmsascdc/v_061/ledsoptsref/p0ny9o8t8hc5zen1qn3ft9dhtsxx.htm
set句で読み込む行の条件を指定する
where=データセットオプション を使用する。
列名を変更してデータセットを読み込む
rename=データセットオブション を使用する。
文字列を置換する
- tranwrd関数 を使用する。
外部ファイルの存在を確認する
- dataステップ内で fileexist関数 を使用する。
dataステップ内でマクロ変数に値を代入する
call symputx("マクロ変数名", 格納したい値)で代入する。
ソートせずにbyステートメントを使用する
byステートメントにnotsortedオプションを付与する。
data A1;
set Q1;
retain GROUP 0;
by val notsorted;
if first.val then GROUP + 1;
run;
データセットの概要やメタ情報を確認する
proc contents data=sashelp.class;
run;
DS2コードでCASにテーブルを読み込む
table.loadTableアクションを用いる。
proc cas;
session casauto;
table.loadTable /
sourceCaslib = "mylib" /* 左辺は caslib でも可 */
, path = "inputdata.sas7bdat"
, casout = {
caslib = "public"
, name = "target_table_name"
, replace = true
};
run;
quit;
CASテーブルをセッションスコープからグローバルスコープへ昇格する
table.promoteアクションを用いる。
SAS Studioでproc ds2内のログを出力
dcl package logger logr( 'App.TableServices.d2pkg.HTTP' );
logr.log( 3, '--- Beginning of response headers ---' );
- 例: HTTPからJSONテキストを読み取り、SASデータセットを作成する
- ロガーパッケージの使用
CASE文を記述したい
日付値の取り扱い
proc ds2;
data _null_;
method run();
dcl varchar(50) timestamp_str;
dcl double sas_dt_value;
dcl varchar(50) sas_dt_value_NLDATM;
dcl varchar(50) sas_dt_value_yymmddn8;
dcl varchar(50) sas_dt_value_yymmdds10;
timestamp_str = '2025-11-12T13:19:33.482Z';
sas_dt_value = inputn(timestamp_str, 'E8601DT.');
sas_dt_value_NLDATM = putn(sas_dt_value, 'NLDATM.');
sas_dt_value_yymmddn8. = putn(datepart(sas_dt_value), 'yymmddn8.');
sas_dt_value_yymmdds10. = putn(datepart(sas_dt_value), 'yymmdds10.');
put sas_dt_value=;
put sas_dt_value_NLDATM=;
put sas_dt_value_yymmddn8=;
put sas_dt_value_yymmdds10=;
end;
enddata;
run;
quit;
CAS
IFN 関数
- https://documentation.sas.com/doc/ja/pgmsascdc/v_061/proccas/n1v6aoomm10yxnn1mf4407trgk90.htm
- https://documentation.sas.com/doc/ja/pgmsascdc/v_061/lefunctionsref/n0l3n5z2h31h7wn1fmnqd33ibhap.htm
新規ページ
データグリッド内の値を取得する
DATAGRID_GET関数
DATAGRID_GET(データグリッド変数, '取得対象の列名', 取得対象の行番号)
https://go.documentation.sas.com/doc/jp/edmcdc/v_056/edmdatagrids/n04ham6nlknk8ln17nuk76nue4vw.htm
データグリッドに行を追加する
DATAGRID_ADDROW関数
DATAGRID_ADDROW(データグリッド変数, <任意>追加する行数)
下記のように記述すると「追加した行は今何行目にあるか」を取得することができる。
(関数の返り値として整数が返ってくる為)
datagrid_rownum = DATAGRID_ADDROW(dataGrid);
https://go.documentation.sas.com/doc/jp/edmcdc/v_056/edmdatagrids/n109izonc0diazn0z2gy6wqehync.htm
データグリッドの内容をログに出力する
DATAGRID_DUMPTOLOG関数
DATAGRID_DUMPTOLOG(データグリッド変数)
https://go.documentation.sas.com/doc/jp/edmcdc/v_056/edmdatagrids/p1da42svmyhzygn1r1f2uq10ntsh.htm