以下のような時系列のシステム処理レコードについて、「同一オファーナンバーのレコード群」のなかで、「オーダーで開始し、コンプリートorキャンセルで終わっている」レコードのみを残し、それ以外を除外する、という処理を行いたいです。
Pythonコードで処理する方法はあるとは思うのですが、Alteryx標準機能で対応できればと思っており、ご助言いただけますと大変幸いです。
同一オファーナンバーのなかで、
タイムスタンプが最も早いもの・遅いものを参照し、
早いもの→オーダー以外は除外
遅いもの→コンプリートorキャンセル以外は除外
のような処理だとは思うのですが、実装方法の検討がついておりません。。
以下、データのイメージです。
OfferNum | Time | Desc | |
001 | 2021-12-07 10:00:01 | Order | ←オーダーで始まり、コンプリートで終わっているので残す |
001 | 2021-12-07 10:10:00 | Reschedule | |
001 | 2021-12-07 10:10:20 | Reschedule | |
001 | 2021-12-07 16:30:30 | Complete | |
002 | 2021-12-08 15:00:30 | Order | ←オーダーで始まり、キャンセルで終わっているので残す |
002 | 2021-12-08 16:00:30 | Cancel | |
003 | 2021-12-07 10:00:00 | Reschedule | ←オーダーで始まっていないので除外する |
003 | 2021-12-08 10:00:00 | Cancel | |
004 | 2021-12-07 10:00:00 | Order | ←オーダーで始まっているが、コンプリートorキャンセルで終わっていないので除外する |
005 | 2021-12-07 15:00:00 | Order | |
… | … | … |
解決済! 解決策の投稿を見る。
@Cotetsu さん
サマライズツールで最初のレコード、最後のレコードというのを抽出できますので、各オファーナンバーでグループ化しつつ最初のレコード、最後のレコードを残すことで条件式にあてはめてフラグを付けることが可能です。
以下のようなワークフローになります。
@Cotetsu さん
一度クロスタブで横持にした後、Formulaで処理、が良いかと思います。添付にWorkFlowつけましたので、ご覧ください。
フォーミュラでは、
Orderの日時が最小 AND (Cancel日時が最大 OR Complete日時が最大)
の条件を満たすレコードはOK,それ以外はNGとしています。
@AkimasaKajitani さん、
詳細なご説明ありがとうございます!
サマライズツールにそのような機能があったことも存じ上げませんでした。。
早期にありがとうございました!
@gawa さん、
ご説明ありがとうございます!
フォーミュラの使い方の勘所がつかめておりませんでしたが、このような活用方法があるのですね。
非常に勉強になりました!