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

100本ノック補足

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

↓ネ

↓タ

↓バ

↓レ

↓防

↓止

答えと解説

設問はこちらでした。

顧客データ(customer.csv)から性別コード(gender_cd)の割合に基づきランダムに10%のデータを層化抽出し、性別コードごとに件数を集計せよ。この時、ランダム%サンプリングツールをバッチマクロ化して回答すること。

※76問目がベースとなります

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

76問目のようなワークフローを作らず、75問目で使ったランダム%サンプリングツールをバッチマクロ化して解く問題です。76問目でも解説しましたが、ランダム%サンプリングツールはグループに対して実行することができないため、そのまま使えません。そのため、今回の問題で行うようにバッチマクロ化で簡単にグループ処理が可能になります。

マクロ作成

単純にバッチマクロ化するだけであれば、いきなりマクロ作成に取り掛かることができます。

まず、ファイルメニューなどから新規ワークフローを作成します。その後、マクロ入力ツールを配置しますが、入力データなど持ってくるのが面倒であれば、startファイルのデータ入力ツールをコピー&ペーストした後に、右クリックから「マクロ入力へ変換」などでマクロ入力ツールにするのが楽かと思います。

次に、ランダム%サンプリングツールをマクロ入力ツールの後段に配置します。設定は以下のとおり、「N%のレコードを無作為抽出」を選択します。「レコードのパーセンテージ」オプションはインターフェースツールで書き換えるため適当でいいですが、ここでは「10」としておきます。

その後、マクロ出力ツールを接続します。ここでは特にオプションは不要です。

ここまでで以下のようになっていると思います。

次に、インターフェースカテゴリから数値増減ツールを追加します。このツールにより、ランダム%サンプリングツールの「レコードのパーセンテージ」オプションをマクロの設定で変更できるようにします。ここでは特に細かい設定は不要ですが、「表示するテキストまたは質問を入力」のところはわかりやすい言葉、例えば「N%のレコードを無作為抽出」などと変えておきましょう。

次に、数値増減ツールのQ出力からランダム%サンプリングツールのアクション入力までドラッグ&ドロップします。これにより、アクションツールが自動的に追加されます。

アクションツールは以下のように設定しますが、これは、アクションツールから接続しているツール、つまりランダム%サンプリングツールの設定のうち、書き換えたい項目を選択します。今回は「Value[@name=’NPercent’] – value=’10’」となります。

次に、インターフェースカテゴリからコントロールパラメータツールを追加します。この時、どこにも接続しないでください。

これでマクロは完成です、適当な名前で保存しましょう。

さて、ここで、このマクロの使い方ですが、「¿」(逆疑問符)にはグループごとに実行したい値をもつフィールドを入力していきます(これをグループ化入力とここでは記載しています)。その際、入力する値をユニーク値にする必要があります。ユニークツールや集計ツールでグループ化しましょう。

ワークフローに組み込む

まず、マクロを配置します。マクロの下側の入力にcustomer.csvを接続します。

次に、グループ化入力(コントロールパラメータ入力)に入力するためのデータを作っていきましょう。集計ツールを今回は使います。gender_cdごとにランダム%サンプリングツールを適用していきたいので、gender_cdでグループ化します。

その後、集計ツールからマクロのコントロールパラメータ入力に接続します。

ここでマクロの設定を行いましょう。まず、質問タブでコントロールパラメータ入力には先程接続した「gender_cd」を指定します。その下にある「N%のレコードを無作為抽出」という部分には「10」を入力します(問題分に記載されている通り10%のデータを抽出したいので)。

次に、グループ化タブです。Control GroupByフィールドは、コントロールパラメータ入力に入力されているフィールドの中から、グループごとに実行したい値を持つフィールドを指定します。今回であれば、「gender_cd」です。下側にあるInput1 GroupByフィールドは、実際にグループ化を適用するフィールド、つまり今回であればgender_cdとなります(Control GroupByフィールドで指定した値を持つフィールドを指定します)。なお、各マクロ入力ごとにここに表示されるため、複数の入力を持つ場合はそれぞれに設定することが可能です。

ここからはオリジナルの問題と同じになります。件数を集計するために、集計ツールを以下のように設定します。

最終的には以下のようなワークフローとなります。

まとめ

今回は、グループごとに実行するためのバッチマクロを作成する問題でした。グループごとに実行したい部分があとから出てきた場合に、それぞれのツールの設定を見直せばグループごとに処理はできるのですが、細かく見直すのに時間をかけるより、バッチマクロ化しグループ化対応するのが楽なこともあります。

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

コメント

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