チャレンジ #3: 日付の解析 ~テキストから日付の抽出~ – Alteryx ウィークリーチャレンジ
こんにちは。Alteryxサポートエンジニアとして勉強中のスズです。
Alteryx コミュニティで公開されているウィークリーチャレンジに挑戦するシリーズ。普段は英語版のWeekly Challengeに挑戦していますが、今回は日本語版で挑戦してみました。
ちなみに、日本語版とは出題番号が異なりますが、英語版のWeekly Challengeでも同様の問題が出題されています。
今回のエントリでは、ワークフローを楽して作ることを目標にして回答を作成しました。
動作環境
当エントリの執筆には、以下の環境を利用しています。
- Windows 10 Pro
- Alteryx Designer 2019.1.6.58192 英語版
チャレンジ #3: 日付の解析
お題
今回挑戦するお題はこちら。
Input側には以下のデータが用意されています。データの中に日付の表記があります。
説明文の中に日付表記のパターンが紹介されています。
- 16-APR-2005
- Nov 16, 1900
- 4-SEP-00
- Jan 5 2000
Output側のデータはこちら。Input側のデータから日付を抽出して表記をそろえています。
解答
今回作成するワークフローはこちら。
RegExツールを使用して、正規表現でデータから日付の部分を抽出します。
Regular Expressionには以下のとおり設定しています。
(\d+-...*-\d+|...\s\d*,?\s\d{4})
(\d+-...*-\d+)
または(...\s\d*,?\s\d{4})
という条件の日付を抽出しています。
(\d+-...*-\d+)
の出力はこちら。16-APR-2005と4-SEP-00の日付形式が抽出されます。
(...\s\d*,?\s\d{4})
の出力はこちら。Nov 16, 1900とJan 5 2000の日付形式が抽出されます。
DateTimeツールを使用して、抽出した日付をDate型に変換します。こちらは3パターンで対応します。
Date型に変換した結果はこちら。ツールを3つ使用しているため、列が3つに分かれています。
Formulaツールを使用して、「DateTime_Out」列に日付をまとめます。
「DateTime_Out2」列や「DateTime_Out3」列がNullではなかった場合に、「DateTime_Out」列に出力するように設定しています。
if !IsNull([DateTime_Out2]) then [DateTime_Out2] elseif !IsNull([DateTime_Out3]) then [DateTime_Out3] else [DateTime_Out] endif
Selectツールを使用して不要な列を削除します。
結果を確認して完成です。
最後に
今回はチャレンジ #3: 日付の解析に挑戦しました。日本語版のウィークリーチャレンジも出題数が増えてきましたので、挑戦してみてはいかがでしょうか。
Alteryxの導入なら、クラスメソッドにおまかせください
日本初のAlteryxビジネスパートナーであるクラスメソッドが、Alteryxの導入から活用方法までサポートします。14日間の無料トライアルも実施中ですので、お気軽にご相談ください。