
はじめに
こんにちは、r.itoです。
先週から4月に入り、気が付けば新学期・そして気が付けば新型コロナウイルスが流行してもう1年が経ちます。当初は多くの人が戸惑っていたであろう自粛・マスク生活やリモートワークもすっかり定着してきたように思います。今年度はワクチンの接種が進み、東京オリンピックも開催される予定です。まだまだ今度の展望は分かりませんが、私たちが今できることは環境に順応し、一生懸命生きていくことです!
ということで、今週もAlteryx Weekly Challengeやっていきましょう!今回のお題は「チャレンジ#27:消費者の購入の集約」です!
Weekly Challenge#27 -下準備編-
–問題概要-
「ピザやバーガーを注文した際に、ドリンクとサイドを追加する「ミールディール」をメニューに含めるか検討しています。見積りを考えるため、以下の条件に当てはまる注文の数と全体に占める割合を求めてください。
条件:2013年7月1日以降にドリンクとサイドの両方に加えて、ピザまたはバーガーを含む注文」
という問題です。解答に使用するのは以下2つのデータです。

–解答例-

-解答の筋道-
まずはいつも通り、答えから逆算して解答のイメージをします。ウィークリーチャレンジのページでは問題文が少し分かりにくいですが、今回の集計対象である注文は、
「ドリンクとサイドの両方を注文。さらにバーガーかピザのどちらかを注文しているもの」
です。
1.まずは2つの表を結合して各メニューにタイプを割り振り、日付でフィルタリングする
2.各データは注文された単品ごとに個別に集計されているため、オーダーごとにまとめ、条件を満たす注文に絞る
3.最後に対象となる注文の合計数と全体に占める割合を求める
これができれば答えが求まりそうです。
Weekly Challenge#27 -解説編-
では先の手順を踏まえて解いていきましょう。
1.
問題概要にあるデータを見ると、左の表は注文IDや日付、メニューなどが含まれ、右の表には各メニューがどのカテゴリに含まれているかのデータがあります。そのため、左図が持つ注文された各メニューデータに、右図のタイプを割り振りましょう。Join(結合ツール)を使って結合します。
それができたら日付でフィルタリングします。動的な日付のフィルタリングにはInterfaceにあるDateを使用します。


Dateをシートにドラッグしたら、上左図のようにDateの下にある虫眼鏡マークとFilterの上にあるマークを結びます。すると、上右図のような新しいUpdate Valueというツールが出現します。いきなり出てきてこれは何ぞや!と思うでしょうが、結論から言うとこれは無視して大丈夫です。FilterでDateを選択しcomes after、日付を指定し、2013年7月1日以降のデータに絞ればステップ1は完了です!
2.
次は、ドリンクやサイドなどのタイプでオーダーをフィルタリングしたいのですが、その前にデータを加工する必要があります。現在データは以下のように各オーダーごとではなく、注文された単品ごとにデータがまとまっています。

これでは同時に何を頼んだか判別するのが困難です。BurgerやDrinkなどのタイプごとにフィールドを作り、各オーダーを1行のデータにまとめるには、どうすればよいでしょうか?ここで用いるのがCross Tab(クロスタブツール)です!このツールについては以前の記事で詳しく解説しているので不安な方はそちらをご参照ください。Challenge#54!クロスタブツールの活用!
下図のようにType別に新しい列を作成し、各オーダーごとにデータを集計しましょう。

それができたら、「ドリンクとサイドを注文」かつ「バーガーまたはピザを注文」したオーダーに絞っていきます。Filterを以下のように使うことで同時に複数の条件を指定できます。

3.
以上で集計対象のオーダーを抽出することができたので、あとは合計数と割合を求めるだけです。今回はCount Recordを用いました!このツールはその名の通りレコード数をカウントしてくれるので、「ドリンクとサイドを注文」かつ「バーガーまたはピザを注文」したオーダーと、2013年7月1日以降の全オーダーをそれぞれカウントします。

最後にカウント結果を結合し、以下のようにFormulaで合計に対する割合を求めれば
対象の注文数(Potential Meal Deal)と合計に占める割合(percentage)
が求まりました!

おわりに
以上解説でしたがいかがだったでしょうか?
以前解説したcross tabは応用できましたか?使用したツールは基本的なものですが、どんなツールを使うか自分で考え、それを動かせるようになることが大切です!
今週も最後まで読んでいただきありがとうございました!
次回もお楽しみに~