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

100本ノック

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

↓ネ

↓タ

↓バ

↓レ

↓防

↓止

答えと解説

設問はこちらでした。

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

・顧客ID(customer_id)が”CS018205000001″
・売上金額(amount)が1,000以上または売上数量(quantity)が5以上

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

特定のフィールドの特定の条件に一致したレコードを抽出する場合は、フィルターツールを使用しますが、今回は条件が3つあり、1つはカスタマーIDの条件。残りは数値で比較する条件をOR条件で組み合わせています。

5問目でデータ型の確認は行ったので、そこについては確認済みで進めていきますが、売上金額(amount)はInt16型、売上数量(quantity)はByte型の範囲に収まるため、それぞれセレクトツールで以下のように設定する必要があります。

ここから、二通りの作成方法についてご紹介します。

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

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

今回は、3つの条件ですが、実質的には前半部分の顧客ID(customer_id)の条件と、売上金額(amount)、売上数量(quantity)のOR条件の2つに分けることができます。

実際のワークフローは以下の通りとなります。

顧客ID(customer_id)の条件は、基本フィルターで十分です。5問目と同様の条件なので、フィールドは「customer_id」、演算子は「等しい」、値は「CS018205000001」と設定しましょう。

次に2つ目のフィルターツールです。OR条件の場合はフィルターツール内でOR条件を設定する必要があります(厳密には、複数のフィルターツールを使って実現することもできますが、一般的に行わない方法なので今回は取り扱いません)。

OR条件の場合は、カスタムフィルターを使用します。

以下のような計算式をカスタムフィルターにセットします。

[amount] >= 1000 OR
[quantity] >= 5

2つの計算式を記載し、ORで結合するように記載します。これで、売上金額(amount)が1,000以上もしくは売上数量(quantity)が5以上、というレコードを抽出できます。

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

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

上のように、すべての計算式を一つのフィルターツール内に記載します。計算式としては以下の通りです。

[customer_id] = "CS018205000001" AND
([amount] >= 1000 OR [quantity] >= 5)

赤色の部分は「顧客ID(customer_id)が”CS018205000001″」であることを示し、緑色の部分が「売上金額(amount)が1,000以上または売上数量(quantity)」を示します。

それぞれの計算式をANDでつなぎ、緑色の部分はカッコでくくっています。AND条件でつなぐことで、両方の条件を満たすレコードを抽出することができます。

これにより一つのフィルターツールで実現されました。

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

コメント

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