このページは解答編です。
↓ネ
↓タ
↓バ
↓レ
↓防
↓止
答えと解説
設問はこちらでした。
P-011: 顧客データ(customer.csv)から顧客ID(customer_id)の末尾が1のものだけ全項目抽出し、10件表示せよ。
解答ワークフローは以下のようになります。
単純な内容ですが、様々な解法があります。基本的にはフィルターツールを使いますが、判定方法は様々です。
- Right関数で切り取って比較
- EndsWith関数
- 正規表現ツール
- 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の正規表現ツールに設定した式と同様です。
コメント