Free Trial

ディスカッション

答えを見つけ、質問し、Alteryx の専門知識を共有してください。
解決済み

「同一オファーナンバーのレコード群」のなかで、「オーダーで開始し、コンプリートorキャンセルで終わっている」レコードのみを残し、それ以外を除外する、という処理を行いたい

Cotetsu
アトム

以下のような時系列のシステム処理レコードについて、「同一オファーナンバーのレコード群」のなかで、「オーダーで開始し、コンプリートorキャンセルで終わっている」レコードのみを残し、それ以外を除外する、という処理を行いたいです。

Pythonコードで処理する方法はあるとは思うのですが、Alteryx標準機能で対応できればと思っており、ご助言いただけますと大変幸いです。

 

同一オファーナンバーのなかで、

タイムスタンプが最も早いもの・遅いものを参照し、

早いもの→オーダー以外は除外

遅いもの→コンプリートorキャンセル以外は除外

 

のような処理だとは思うのですが、実装方法の検討がついておりません。。

 

以下、データのイメージです。

OfferNumTimeDesc 
0012021-12-07 10:00:01Order←オーダーで始まり、コンプリートで終わっているので残す
0012021-12-07 10:10:00Reschedule 
0012021-12-07 10:10:20Reschedule 
0012021-12-07 16:30:30Complete 
0022021-12-08 15:00:30Order←オーダーで始まり、キャンセルで終わっているので残す
0022021-12-08 16:00:30Cancel 
0032021-12-07 10:00:00Reschedule←オーダーで始まっていないので除外する
0032021-12-08 10:00:00Cancel 
0042021-12-07 10:00:00Order←オーダーで始まっているが、コンプリートorキャンセルで終わっていないので除外する
0052021-12-07 15:00:00Order 
 
3件の返信3
AkimasaKajitani
17 - Castor
17 - Castor

@Cotetsu さん

 

サマライズツールで最初のレコード、最後のレコードというのを抽出できますので、各オファーナンバーでグループ化しつつ最初のレコード、最後のレコードを残すことで条件式にあてはめてフラグを付けることが可能です。

 

以下のようなワークフローになります。

 

AkimasaKajitani_0-1638864952835.png

 

gawa
16 - Nebula
16 - Nebula

@Cotetsu さん

一度クロスタブで横持にした後、Formulaで処理、が良いかと思います。添付にWorkFlowつけましたので、ご覧ください。

フォーミュラでは、

Orderの日時が最小 AND (Cancel日時が最大 OR Complete日時が最大)

の条件を満たすレコードはOK,それ以外はNGとしています。

gawa_0-1638865337556.png

 

Cotetsu
アトム

@AkimasaKajitani さん、

 

詳細なご説明ありがとうございます!

サマライズツールにそのような機能があったことも存じ上げませんでした。。

早期にありがとうございました!

 

@gawa さん、

 

ご説明ありがとうございます!

フォーミュラの使い方の勘所がつかめておりませんでしたが、このような活用方法があるのですね。

非常に勉強になりました!