Challenge #65: Fulfilling Inventory Orders ~発注数の多い順で在庫を消費~ – Alteryx Weekly Challenge
こんにちは。Alteryxサポートエンジニアとして勉強中のスズです。
Alteryx Communityで公開されているWeekly Challengeに挑戦するシリーズ。今回は発注数の多い順に在庫を割り当てていく問題に挑戦します。
動作環境
当エントリの執筆には、以下の環境を利用しています。
- Windows 10 Pro
- Alteryx Designer 2019.2.7.63499 英語版
Challenge #65: Fulfilling Inventory Orders
お題
今回挑戦するお題はこちら。
Input側には2つのデータがあります。1つ目は発注のデータ。
2つ目は在庫のデータ。
Output側のデータはこちら。1つの注文での個数が多い順に在庫を消費していっています。
解答
今回作成するワークフローはこちら。
Joinツールで2つのデータを結合します。データの結合には、「Order SKU」列と「SKU」列で結合します。在庫のデータの「Quantity」列は「Supply」に名前を変更し、「SKU」列は削除します。
Sortツールを使用して、「Order SKU」列の昇順、「Quantity」列の降順で並べ替えます。
Multi-Row Formulaツールを使用して、新しく「Remaining」列をInt32型で作成します。
式は以下のとおり設定しています。
if [Row-1:Order SKU] != [Order SKU] then [Supply] - [Quantity] elseif [Row-1:Order SKU] == [Order SKU] and [Quantity] <= [Row-1:Remaining] then [Row-1:Remaining] - [Quantity] else [Row-1:Remaining] endif
- 「Order SKU」列が1つ上の行と異なる場合は、「Quantity」列 - 「Supply」列を出力
- 「Order SKU」列が1つ上の行と同じで1つ上の「Remaining」列が「Quantity」列より数字が大きい場合は、1つ上の「Remaining」 - 「Supply」列を出力
- それ以外の場合は1つ上の「Remaining」を出力
もう1つMulti-Row Formulaツールを使用して、「Flag」列をV_WString列を作成します。
設定した式はこちら。「Order SKU」列が1つ上の行と同じ場合は「y」を出力し、それ以外の場合は「n」を出力します。
iif([Row-1:Order SKU] == [Order SKU] and [Row-1:Remaining] == [Remaining], "y", "n")
Filterツールを使用して、「Flag」列が「n」の出力のみ残します。
Selectツールを使用して、「Quantity」列の名前を「Demand」に変更し、「Flag」列を削除します。
結果を確認して完成です。
最後に
今回はChallenge #65: Fulfilling Inventory Ordersに挑戦しました。
Alteryxの導入なら、クラスメソッドにおまかせください
日本初のAlteryxビジネスパートナーであるクラスメソッドが、Alteryxの導入から活用方法までサポートします。14日間の無料トライアルも実施中ですので、お気軽にご相談ください。