計算フィールドで悩んでおります。
やりたいことは以下のようなデータで、同じ商品でも計上日が複数あるので、最新の計上日のみにしたいので、判断するのにフラグをつけたいと思っております。
色々と計算を作成してみましたが、うまくいかず、ご教授いただきたいです。
計算フィールドで悩んでおります。
やりたいことは以下のようなデータで、同じ商品でも計上日が複数あるので、最新の計上日のみにしたいので、判断するのにフラグをつけたいと思っております。
色々と計算を作成してみましたが、うまくいかず、ご教授いただきたいです。
maxOver関数を使うことでグループの最大値を取得できますので、こちらを利用するのはどうでしょうか
計算フィールド
maxOver_of_date
maxOver(Date,[ID], PRE_FILTER)
newest_flag
ifelse(Date={maxOver_of_date},1,0)
ありがとうございます!
確認と問題がそれぞれあります。
【確認】
私の方でも以下のように計算フィールドの作成を行おうとしていたのですが
ifelse( maxOver(Date,[ID], PRE_FILTER) = Date , 1,0)
でやるとエラーが出て作成ができず質問させていただいておりました。
しかし、わけることでエラーがでずに作成ができました。
こちらはわけて作成が必要なのでしょうか?
【問題】
PRE_FILTERをすることで、すべてのデータから最大を取得してしまうのですが、先にフィルターで計上日の範囲を選択し、選択した日付の中でのmaxを求めたいです。
教えていただいたものだと、フィルターで絞るとやりたい結果にすることができませんでした。
ifelse関数は一行ごとに計算するため、値にグループへの集計であるmaxOverを記入することはできません。そのため、一度計算フィールドを作成する必要があります。
また、集計期間を指定したいのであれば 指定日<=date<=指定日 であれば date,それ以外であれば小さな日付となるような別の計算フィールドを用意し、dateの代わりのそのフィールドを利用することができます。
ifelse関数は一行ごとに計算するため、値にグループへの集計であるmaxOverを記入することはできません。そのため、一度計算フィールドを作成する必要があります。
そうだったのですね。
次回から別で計算するようにします。
指定日<=date<=指定日 であれば date,それ以外であれば小さな日付となるような別の計算フィールドを用意し、dateの代わりのそのフィールドを利用することができます。
ifelse(${dateS}<=Date AND ${dateE}>=Date,Date,20000101)
こちらの計算式を作成し、先ほどのmaxOverの日付を変更したところ、やりたい計算を行うことができました。
ご教授いただき、大変たすかりました。
ありがとうございました。