Challenge #68: Elapsed Classroom Times ~授業の経過時間~ – Alteryx Weekly Challenge

2019.07.28

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

alteryx_960x400