このページは解答編です。
↓ネ
↓タ
↓バ
↓レ
↓防
↓止
答えと解説
設問はこちらでした。
P-007: レシート明細データ(receipt.csv)から売上日(sales_ymd)、顧客ID(customer_id)、商品コード(product_cd)、売上金額(amount)の順に列を指定し、以下の全ての条件を満たすデータを抽出せよ。
・顧客ID(customer_id)が”CS018205000001″
・売上金額(amount)が1,000以上2,000以下
解答ワークフローは以下のようになります。
特定のフィールドの特定の条件に一致したレコードを抽出する場合は、フィルターツールを使用しますが、今回は条件が3つあり、1つはカスタマーIDの条件。残りは数値で比較する条件をAND条件で組み合わせています。
6問目と同様、セレクトツールを使って、売上金額(amount)はInt16型に変更しましょう。
ここから、二通りの作成方法についてご紹介します。
- 複数のフィルターツールで結果を出す
- 複数条件を一つのフィルターツールで実現
1. 複数のフィルターツールで結果を出す
今回は、3つの条件ですが、実質的には前半部分の顧客ID(customer_id)の条件と、売上金額(amount)には2つの条件があるため、全部で3つのAND条件でデータを抽出する必要があります。
実際のワークフローは以下の通りとなります。
すべてAND条件のため、三つのフィルターツールを使ってすべて基本フィルターで実装することが可能です。
顧客ID(customer_id)の条件は、5問目と同様の条件なので、フィールドは「customer_id」、演算子は「等しい」、値は「CS018205000001」と設定しましょう。
次に2つ目のフィルターツールです。フィールドは「amount」、演算子は「>=」、値は「1000」と設定しましょう。
3つ目のフィルターツールも同じように設定します。フィールドは「amount」、演算子は「<=」、値は「2000」と設定しましょう。
これで、顧客ID(customer_id)が「CS018205000001」かつ売上金額(amount)が1,000以上かつ2,000以下というレコードを抽出できます。
ただ、ワークフロー的には一つのフィルターツールで表現できるところが三つのフィルターを使っているので複雑なワークフローになった際はごちゃごちゃして見えると思います。このような場合はフィルターツールをまとめた方がシンプルになると思います。
2. 複数条件を一つのフィルターツールで実現
次に、1つのフィルターツールで完結する方法を紹介します。ワークフローとしては以下のような形になります。単純にすべての条件をフィルターツールに記載するだけです。
上のように、すべての計算式を一つのフィルターツール内に記載します。計算式としては以下の通りです。
[customer_id] = "CS018205000001" AND
([amount] >= 1000 AND [amount] <= 2000)
赤色の部分は「顧客ID(customer_id)が”CS018205000001″」であることを示し、緑色の部分が「売上金額(amount)が1,000以上2,000以下」を示します。
すべてAND条件なので、特にカッコでくくる必要もありませんが、意味的には売上金額に対し1000以上、2000以下と複数条件であることを強調する意味でカッコでくくっています。
これにより一つのフィルターツールで実現されました。
コメント