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

100本ノック

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

↓ネ

↓タ

↓バ

↓レ

↓防

↓止

答えと解説

設問はこちらでした。

P-005: レシート明細データ(receipt.csv)から売上日(sales_ymd)、顧客ID(customer_id)、商品コード(product_cd)、売上金額(amount)の順に列を指定し、以下の全ての条件を満たすデータを抽出せよ。

・顧客ID(customer_id)が”CS018205000001″
・売上金額(amount)が1,000以上

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

特定のフィールドの特定の条件に一致したレコードを抽出する場合は、フィルターツールを使用しますが、今回は条件が二つあり、片方は数値での比較となります。

今回は3ステップを踏みたいと思います。

  1. データ型の確認
  2. 複数のフィルターツールで結果を出す
  3. 複数条件を一つのフィルターツールで実現

1. データ型の確認

数値で比較する場合は、数値同士で比較する必要がありますが、今回読み込んでいるファイルはCSVファイルのため、読み込んだ際のデータ型はすべてテキスト型となっています。

今回は、オートフィールドツールでデータ型を確認してみましょう。

オートフィールドツールは特に設定はありません。チェックを入れた項目のデータ型を自動的に判定してくれます。

ワークフローを実行後、オートフィールドツールの出力アンカーを選択し、結果ウィンドウにて「メタデータ」をクリックすることで、各フィールドのデータ型やサイズなどを確認することができます。

今回はamountというフィールドにて数値で比較したいため、このフィールドを数値型に変える必要がありますが、オートフィールドツールによると最適なデータ型は「Int16」ということになります。このままオートフィールドツールからワークフローを組み立ても良いですが、今回はこの結果をセレクトツールに適用していきたいと思います。

セレクトツールにて、amountの型を「Int16」に変更しましょう。もちろんその他不要な項目のチェックを外す必要があります。

ようやくここからフィルターを使うことができます。

2. 複数のフィルターツールで結果を出す

まずは、二つの条件ということで複数のフィルターツールで実行してみたいと思います。ワークフローとしてはこのような形になります。

シンプルな検索条件の場合は、「基本フィルター」を使用します。

まず1つ目のフィルターツールです。フィールドは「customer_id」、演算子は「等しい」、値は「CS018205000001」となります。

次に2つ目のフィルターツールです。フィールドは「amount」、演算子は「>=」、値は「1000」となります。

3. 複数条件を一つのフィルターツールで実現

次に、1つのフィルターツールで完結する方法を紹介します。ワークフローとしては以下のような形になります。

複数条件を1つのフィルターツールで実現する場合は「カスタムフィルター」を使います。

基本フィルターで一度設定したのち、カスタムフィルターを選択すると、自動的に基本フィルターの計算式がカスタムフィルターに入力されます。例えば、以下のような場合、うっすらとカスタムフィルターに計算式が出ていると思います。

ここからカスタムフィルターを選択すると、以下のように自動的に入力されます。

さて、ここから追加で条件を設定しましょう。amountが1,000以上という条件になるので、AND条件となります。つまり、計算式としては以下の通りです。

[customer_id] = "CS018205000001" AND
[amount] >= 1000

このようにカスタムフィルターに設定すればOKです。

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

コメント

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