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

100本ノック

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

↓ネ

↓タ

↓バ

↓レ

↓防

↓止

答えと解説

設問はこちらでした。

P-011: 顧客データ(customer.csv)から顧客ID(customer_id)の末尾が1のものだけ全項目抽出し、10件表示せよ。

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

単純な内容ですが、様々な解法があります。基本的にはフィルターツールを使いますが、判定方法は様々です。

  1. Right関数で切り取って比較
  2. EndsWith関数
  3. 正規表現ツール
  4. REGEX_Match関数

1. Right関数で切り取って比較

「顧客ID(customer_id)の末尾が1」ということなので、末尾から1文字切り取って比較することが可能です。このような場合は、Right関数が利用可能です。Right関数の使い方は、

Right(対象文字列, 切り取る文字数)

となります。つまり、今回であれば以下の通りとなります。

Right([customer_id], 1) = "1"

末尾が1とのことなので、数字に見えますが文字列として比較しているので「””」(ダブルクォテーション)でくくる必要があります。

フィルタツールの設定としては以下の通りとなります。

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

2. EndsWith関数

「顧客ID(customer_id)の末尾が1」ということなので、EndsWith関数が利用可能です。最もスタンダードな手法がこちらになります。関数の使い方としては、

EndsWith(検索先文字列, 検索文字列)

となります。つまり、今回であれば以下のようになります。

EndsWith([customer_id], "1")

フィルターツールの設定は以下のとおりとなります。

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

3. 正規表現ツール

若干高度な手法になりますが、正規表現ツールを使うこともできます。基本的な使い方は前日の解答を参照願います。

今回は、「顧客ID(customer_id)の末尾が1」ということなので、「.*1$」という式になっていますが、それぞれ以下のような意味となります。

.* : 0文字以上の文字列を示します(「.」は文字1文字(アルファベットでも記号でも数字でもなんでもよいです)、「*」は直前の文字0以上の繰り返し、を意味します)

1 : 「1」という文字列です

$ : 行末であることを示します

これにより、「行末が1で終わる文字列」という形になります。実際のツールの設定は以下の通りです。

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

4. REGEX_Match関数

こちらも若干高度な方法になりますが、正規表現ツールを使う代わりに、REGEX_Match関数を使うことで使用するツールの数を減らす方法をご紹介します。

フィルターツールで使うREGEX_Match関数は以下のように使います。

REGEX_Match(検索文字列, 正規表現式)

今回であれば以下のようになります。

REGEX_Match([customer_id], ".*1$")

ここで設定する正規表現式は、解答その3の正規表現ツールに設定した式と同様です。

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

コメント

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