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

問題編 100本ノック

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

↓ネ

↓タ

↓バ

↓レ

↓防

↓止

答えと解説

設問はこちらでした。

P-037: 商品データ(product.csv)とカテゴリデータ(category.csv)を内部結合し、商品データの全項目とカテゴリデータのカテゴリ小区分名(category_small_name)を10件表示せよ。

※出力結果は、product_cdの昇順としてください

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

今回は複数のデータを結合する問題です。36日目の問題と異なり出力結果はシンプルにソートして出力する問題のため、問題としては非常にシンプルとなっています。

データを確認する

今回は、category.csvをproduct.csvに結合し、カテゴリ小区分名(category_small_name)を結合する問題です。まずは、データの作り方を見てみましょう。

基本的にカテゴリ小区分コード(category_small_cd)で結合を行いますが、カテゴリ小区分コードが一意になっているかどうか(他のレコードと重複がないか)を確認すべきです。データの作り方によっては、大区分、中区分、小区分あわせて一意のコードとなるような場合もあるため、ここは確認した方が良いでしょう。

これを行うためには簡単なワークフローで確認が可能です。以下のように、集計ツールで各カテゴリ小区分コード(category_small_cd)のカウントを取り、1以外のものがあれば重複があるとみなせます。

集計ツールの設定は以下のようになります。

category_small_cdでグループ化し、そのままカウントを取るだけです。

フィルターツールの結果として、今回は1以外のものはなかったため、重複はゼロです。つまり、カテゴリ小区分コード(category_small_cd)のみで結合すればオッケーです。

ちなみに、データの中身としては、例えばカテゴリ大区分コードは以下のようになっています。

次に、中区分コードを見てみます。

頭から9レコードのみ抽出していますが、この感じですと、最初の2桁が大区分コード、次の2桁が中区分コードになっているようです。さらに小区分コードを見てみましょう(先頭から11レコードのみ抽出しています)。

最後の2桁が小区分コードのようです。基本的に、大中小がすべて組み合わさっているため、一意になっているようです。

実際のワークフロー作成

それでは、実際にワークフローを作成していきたいと思います。product.csvとcategory.csvそれぞれから結合ツールに接続します。

設定は以下の通りです。category_small_cdで結合します。

不要なR入力のフィールドは削除しましょう。基本的には「category_small_name」のみあればオッケーです。

ここでポイントですが、結合後の件数は必ず確認しましょう。今回は、L入力のデータ(product.csv)にR入力のデータを結合しようとしていますが、例えばR入力のデータに不足があれば、結合しないデータが出てくるため、L出力側にもデータが出てきてしまいます。このような場合はマスターデータ(今回であればcategory.csv)の見直しが必要になります。

また、J出力の件数がL出力よりも増加している場合は、R入力側に重複データがあります。このような場合は、重複データを取り除いてから結合しましょう。

このように、結合ツールの出力の件数チェックは非常に重要です。

次に、出力のためにproduct_cdの昇順で並べ替えます。ソートツールを使います。

あとは、サンプリングツールなどで10レコード抽出すれば完成です。

まとめ

今回も、結合ツールでデータの結合を行いました。データの結合は非常に頻繁に行うと思いますので、ぜひマスターしてください。

現実のデータはいろいろとマスターファイルに過不足があったりミスがあったりするので、事前にデータのチェックを行っておくことをおススメします。また、結合後はかならずカウント数を確認し、正常に結合できているか、想定通りに結合されているか、を確認しましょう。

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

コメント

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