Challenge #68: Elapsed Classroom Times ~授業の経過時間~ – Alteryx Weekly Challenge
こんにちは。Alteryxサポートエンジニアとして勉強中のスズです。
Alteryx Communityで公開されているWeekly Challengeに挑戦するシリーズ。今回は授業の経過時間の出力に挑戦します。
動作環境
当エントリの執筆には、以下の環境を利用しています。
- Windows 10 Pro
- Alteryx Designer 2019.2.7.63499 英語版
Challenge #68: Elapsed Classroom Times
お題
今回挑戦するお題はこちら。
Input側に用意されているデータはこちら。「MILITARY BEGIN_TIME」には開始時間、「MILITARY END_TIME」には終了時間が24時間表記で用意されています。
Output側のデータはこちら。「Begin Time」と「End Time」に12時間表記で時間が表示され、「Elapsed (min)」には経過時間が分単位で表示されています。
解答
作成したワークフローはこちら。
Formulaツールを使用して時間の表記を整えます。「MILITARY BEGIN_TIME」と「MILITARY END_TIME」はString型になっていますので文字列の長さを確認し、文字列の長さが3の場合には先頭に0を追加しています。
DateTimeツールを使用して、「MILITARY BEGIN_TIME」と「MILITARY END_TIME」をTime型に変更します。また、列の名前は「Begin Time」と「End Time」で作成します。
Formulaツールを使用して、「Elapsed (min)」を作成します。DateTimeDiff関数を使用して、「End Time」と「Begin Time」の差を分単位で出力します。
Selectツールで「MILITARY BEGIN_TIME」と「MILITARY END_TIME」を削除し、「Begin Time」と「End Time」をV_WString型に変更します。
Multi-Field Formulaツールを使用して「Begin Time」と「End Time」の表記を整えていきます。式が分かりにくいので、ツールを3つ使用して分けて処理を行っていきます。まずはLeft関数で左から5文字を取り出します。
次は24時間表記を12時間表記に変更し、また出力が空になっている場合にはNullになるように変更します。
設定した条件はこちら。
if ToNumber(Left([_CurrentField_], 2)) > 12 then ToString(ToNumber(Left([_CurrentField_], 2)) - 12) + Right([_CurrentField_], 3) elseif IsEmpty([_CurrentField_]) then Null() else Left([_CurrentField_], 2) + Right([_CurrentField_], 3) endif
最後に、文字列の長さが4の場合には先頭に0を追加するように設定します。
結果を確認して完成です。
最後に
今回はChallenge #68: Elapsed Classroom Timesに挑戦しました。
Alteryxの導入なら、クラスメソッドにおまかせください
日本初のAlteryxビジネスパートナーであるクラスメソッドが、Alteryxの導入から活用方法までサポートします。14日間の無料トライアルも実施中ですので、お気軽にご相談ください。