データサイエンス100本ノックをAlteryxで。66日目(解答)

100本ノック

このページは解答編です。

↓ネ

↓タ

↓バ

↓レ

↓防

↓止

答えと解説

設問はこちらでした。

P-066: 商品データ(product.csv)の各商品について、利益率が30%となる新たな単価を求めよ。今回は、1円未満を丸めること(四捨五入または偶数への丸めで良い)。そして結果を10件表示させ、利益率がおよそ30%付近であることを確認せよ。ただし、単価(unit_price)と原価(unit_cost)には欠損が生じていることに注意せよ。

※新しい価格はnew_price、新しい単価での利益率はnew_profit_rateというフィールド名とすること

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

65問目で行っている計算の中で1円未満を切り捨てていましたが、今回は1円未満を丸める(四捨五入)というのが異なるポイントです。

実際のワークフロー

それでは、実際のワークフローを作っていきましょう。

まず、単価(unit_price)と原価(unit_cost)については計算を行って行くので、セレクトツールで型変換を行っていきましょう。オートフィールドツールで調べるとInt16型がベストマッチのようですので、Int16型にしていきます。また、不要なフィールドも削除します。

次にフォーミュラツールで計算していきます。新しい価格(new_price)は、原価(unit_cost)÷(1-利益率)から求められます。つまり、以下のような計算式となります。1円未満は四捨五入となるので、Round関数で四捨五入します。

Round関数

Round関数は、指定した値の最も近い倍数に丸めを行う関数です。書式は以下のとおりです。

Round(x, mult)
引数データ型詳細
x数値型処理を行う値
mult数値型この値の倍数でxを丸めます

さて、元のワークフローに戻ります。以下のように計算結果に対してmultの値を1とすると、通常の四捨五入が行われます。

Round([unit_cost]/(1-0.3), 1)

データ型はInt16で問題ないと思います。

次に、確かめ算が必要なので、新しい価格で利益率を計算してみましょう。

同じフォーミュラツールに計算式を追加しましょう。

([new_price]-[unit_cost])/[new_price]

新しい利益率は、フィールド名をnew_profit_rateとし、データ型はDouble型とします。念のため、結果を見てみると以下のように30%くらいの利益率になっています。

これで完了です。

まとめ

今回も、算数の問題でした。65問目との違いは新単価の端数処理だけです。今回はRound関数を用いた四捨五入でした。

解答ワークフローダウンロード

コメント

タイトルとURLをコピーしました