チャレンジ #3: 日付の解析 ~テキストから日付の抽出~ – Alteryx ウィークリーチャレンジ

2019.05.21

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは。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日間の無料トライアルも実施中ですので、お気軽にご相談ください。

alteryx_960x400