SAS Tips

データグリッド関数

データグリッド関数

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言語

Base言語

proc ds2ステートメント

https://documentation.sas.com/doc/ja/pgmsascdc/v_061/proc/n0ox2hnyx7twb2n13200g5hqqsmy.htm

Base言語

do untilステートメント

条件が真になるまで、処理をループする。 https://documentation.sas.com/doc/ja/pgmsascdc/v_061/lestmtsref/p1021qt3a3n8m2n1vh11ggzhu57n.htm

Base言語

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

Base言語

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;
Base言語

DATETIMEw.d 出力形式

ddmmmyy:hh:mm:ss.ss 形式でSAS日時値を出力する。

https://documentation.sas.com/doc/ja/pgmsascdc/v_061/leforinforref/n0av4h8lmnktm4n1i33et4wyz5yy.htm

Base言語

NLDATMw. 出力形式

現在のSASロケールに適した形式(ja環境では yyyy/mm/dd hh:mm:ss)で、形式でSAS日時値を出力する。

https://documentation.sas.com/doc/ja/pgmsascdc/v_061/leforinforref/n0sf71zwqc9ioln1er0qqrlmku7r.htm

Base言語

where= データセットオプション

https://documentation.sas.com/doc/ja/pgmsascdc/v_061/ledsoptsref/p0ny9o8t8hc5zen1qn3ft9dhtsxx.htm

set句で読み込む行の条件を指定する

where=データセットオプション を使用する。

列名を変更してデータセットを読み込む

rename=データセットオブション を使用する。

文字列を置換する

外部ファイルの存在を確認する

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 ---' );

CASE文を記述したい

selectステートメント

日付値の取り扱い

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

CAS

IFN 関数

新規ページ

データグリッド内の値を取得する

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