Challenge #65: Fulfilling Inventory Orders ~発注数の多い順で在庫を消費~ – Alteryx Weekly Challenge

2019.07.14

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは。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日間の無料トライアルも実施中ですので、お気軽にご相談ください。

alteryx_960x400