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

100本ノック

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

↓ネ

↓タ

↓バ

↓レ

↓防

↓止

答えと解説

設問はこちらでした。

P-069: レシート明細データ(receipt.csv)と商品データ(product.csv)を結合し、顧客毎に全商品の売上金額合計と、カテゴリ大区分コード(category_major_cd)が”07″(瓶詰缶詰)の売上金額合計を計算の上、両者の比率を求めよ。抽出対象はカテゴリ大区分コード”07″(瓶詰缶詰)の売上実績がある顧客のみとし、結果を10件表示せよ。

※最終結果はcustomer_idの昇順で並び替えること
※売上金額合計はsum_all、07のみの売上金額合計はsum_07とし、比率はsales_rateとすること

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

複合的な問題となりますが地道にワークフローを構築しましょう。

ポイントは、全体合計と特定のカテゴリのデータに絞ったデータの合計と2つの合計を作成し、結合を行い、割合を計算する形になることです。

それでは実際のワークフローを作って行きたいと思います。

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

まず全体合計を出しましょう。集計ツールを使います。customer_idごとにamountの合計を計算するので、customer_idでグループ化し、amountの合計を取ります。amountの合計については、フィールド名をsum_allとしてください。

ここの時点では以下のようなワークフローになります。

全体合計の流れは一旦止めておいて、次に「カテゴリ大区分コード(category_major_cd)が”07″(瓶詰缶詰)の売上金額合計」を作っていきましょう。

receipt.csvのデータにはカテゴリ大区分コード(category_major_cd)が存在しないので、product.csvを結合して情報を得る必要があります。結合ツールを使って、セレクトツールの出力とproduct.csvを結合していきましょう。そのために、以下のように結合ツールを接続します。

設定としては、以下の通りキーフィールドを「product_id」とします。product.csvのうち必要な項目はcategory_major_cdのみなので、それ以外の項目のチェックは外しておきます。

さらに特定のカテゴリ大区分コードに絞り込むので、フィルターツールを使っていきましょう。

今回のケースであれば、上のように基本フィルターでcategory_major_cdが「07」と等しい、ということになります。

これで必要なデータに絞り込めたので、集計ツールを使って合計を計算します。こちらも同じくcustomer_idでグループ化し、amountの合計を取ります。amountの合計のフィールド名はsum_07としておきます。

ここまでで以下のように2つのデータストリームがあるかと思います。全体の合計と07のみの合計です。

これらをcustomer_idをキーに結合していきます。

設定は以下の通りです。

ここまでくればあとは2つの合計の比率を取るだけです。フォーミュラツールで計算していきましょう。

[sum_07]/[sum_all]

データ型はDoubleで問題ありません。

あとは、ソートツールでcustomer_idの昇順で並び替え、サンプリングツールなどで先頭から10件抽出すれば完了です。

まとめ

今回は集計、結合、計算と複合的な問題となります。一つずつ進めていけばそれほど難しくありませんので、やるべきことを地道に進めましょう。

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

コメント

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