BookmarkSubscribeRSS Feed
Keisuke_Uemura
Calcite | Level 5

EnnterpriseGuideを用いたデータ加工処理に関する質問です。

 

今日から直近1年の在庫変動予測を表にして出力しようと考えています。

左の列から”製品”、”今日時点の在庫量”、”明日の消費予測”、”今日時点の在庫量 - 明日の消費予測”、以降繰り返し・・・。

というフォーマットを考えています。なお、製品種類が多く、縦には百万近くの行が並びます。

 

サンプルのロジックはできましたが、自動で列情報の更新ができません。

今日作った計算式は明日には使えなくなります。

 

毎日、プロジェクト内の計算式を修正しなければならないため、

最適な方法をお教えてください。

4 REPLIES 4
japelin
Rhodochrosite | Level 12

 

直接の回答ではないのですが、サンプルロジックの中で列選択に関係のありそうな部分(変数、列名などのデータ構造)を提示されると、回答が付きやすいのではないかと思います。

 

Keisuke_Uemura
Calcite | Level 5

サンプルを用いて情報を補足致します。

元データは行方向に伸びるデータの集合軍ですが、”列の分割”+”列同士の計算”によって

最終的には下表のように列方向につづく表を出力したいと考えています。

Keisuke_Uemura_0-1598961380507.png

サンプルのように、日時に応じてデータが最新になっていく元データがあるとして、

それに応じて表の列名も変更されていくロジックを作りたいのですが、

列名が違うと計算が自動で回らず、毎度計算式をメンテナンスしなければなりません。

 

列名を動的に持てれば、計算式のメンテナンスが不要にならないかと考えた次第です。

アドバイスを頂ければ幸いです。

yu_sas
SAS Employee

SAS Enterprise GuideでということですとSASプログラムではなくクエリビルダなどのタスクでの処理を想定しているのでしょうか。その場合は難しいように思います。もしSASプログラムのDATAステップを使う場合、配列で数値変数をすべて定義してしまえば添え字で参照するようなことは可能だと思います。

 

data test;
set sashelp.class;
array num{*} _numeric_;
do i=1 to dim(num);
 sum+num{i};
end;
run;
izumi_sas
SAS Employee

そのような処理をする場合には、SASプログラミングによりとても視認性に優れた、効率的な処理を記述することができるのですが、ここではEnterprise Guideのタスクのみを使用してみます。

 

ご希望のことを実現するには、最終形として、「変数名」は日付順序の相対的な数値(添え字)で表現、「変数ラベル」に実際の日付を設定とすることで、「変数名」を使用した計算式が日付の絶対値に依存しないような作りにすることができます。以下のようなデータが作れば良いだろうと考えます。

 

izumi123_0-1599242991104.png

 

元のデータは、おそらく品名、日付、値が単に縦に並んでいるだけだと思いますので、それを「転置」タスクを駆使することで上記の形に変換するサンプル(使用するSASデータセットとEG(バージョン7.1)のプロジェクトファイル)を添付しますので、参考にしていただければと思います。

処理やデータの前提条件等、考慮しきれてないところもありますのでご了承ください。

「転置」タスクの使い方のTIPSとして参考にしていただくのが良いかと思います。