Tableau(タブロー) Excelの8:00( h:mm ):勤務時間をどう処理すると良い??
はじめに
Excelでは、勤務時間合計8:00(=8.0h)といった形式をユーザー定義:[h]:mmで認識させることが可能です。この場合、加減算が可能となります。これをそのままTableau(タブロー)で読み込んだ場合、思い通りの読み込みができません。結果的に、加減算もできません。
例えば、Excelで8:00( [h]:mm )と定義されたセルをTableauで読み込んでみます。
[h]:mm → 1899/12/30 8:00:00 で認識されてしまう
つぎに、日付形式から文字列形式で変換してみると、:12 という表記に変わってしまいます。
上記の場合、このままでは加減算できません。そこで、Tableau(タブロー)で加減算を可能にする方法を確認してみようと思います。もしかしたら、下記でご紹介する対症療法よりもスマートな方法がすでに存在するかもわかりません。しかし、その方法が思いつかない場合は、ひとまず下記でご紹介する方法で対応してみると良いかもしれません。
検証データの確認
まずは、今回使用するExcelデータを確認してみましょう。馬車馬太郎さんが名前に負けない働きぶりをみせてくれております。なお、C列の勤務時間のユーザー定義は、[h]:mmではなく、h:mmとしております。[h]:mmで読む場合、Tableauで文字列型に変換した場合に都合が悪いためです。ただし、この場合、24:00以上になると、0:00に切り替わってしまうため、扱いには注意してください。
C列は、h:mm
手順の確認
① Excelを取り込み、データ型を文字列型へ変更する
② :を区切り文字としてカスタム分割する
③ カスタム分割済み1を合算、同様にカスタム分割2も合算する
④ 合算したカスタム分割2を60で割り(/60)、商を求め、カスタム分割済み1へ加算。これを最終的な「時間」とする
⑤ 合算したカスタム分割2を60で徐算(%60)して、余りを求め、これを最終的な「分」とする
⑥ ④と⑤を文字列型に変換して、h:mm という形で変形して表示する
では、手順通り、実装してみます
① Excelを取り込み、データ型を文字列型へ変更する
赤枠アイコンをクリックして、勤務日を日付型に、勤務時間を文字列型に変換しております。
②:を区切り文字としてカスタム分割する
③ カスタム分割済み1を合算、同様にカスタム分割2も合算する
さきに、カスタム分割済み1および、カスタム分割2の両方を連続の数値型に変換します。そして、メジャーへドラッグ&ドロップで移動します。
分割した時間および、分をSUM関数で合算する。
下記のように、時間と分でそれぞれ合算してみました。
④ 合算(分)を60で割り( /60 )、商を求め、合算(時間)へ加算する。
これを最終的な「時間(正規化)」とする
INT関数で小数を捨て、商を求めます。この商を、合算(時間)に加算することで、時間を正規化できます。
⑤ 合算したカスタム分割2を60で徐算(%60)して、
余りを求め、これを最終的な「分」とする
% 60 で徐算する。この余りが、最終的な分となる。
⑥ ④と⑤を文字列型に変換して、h:mm という形で変形して表示する
下記のように、STRで文字列型に変換して、+ で繋いで正規化します。なお、h:mm の部分のmmを、5:05のように、左側を0埋めしたい場合は、STR([時間(正規化)]) + “:” + RIGHT(“00″+STR([分(正規化)]),2) と記載ください。
まとめ
今回は、勤務時間のように、Excelでは時間として認識され加減算が可能なデータ型をTableau(タブロー)で扱うときの対症療法をご紹介いたしました。もっとスマートな方法があるかもわかりませんが、ひとまず、頭を悩ますくらいならば、一度、こちらで対応しておくと良いかもわかりません。ぜひ、ご参考にしていただければ幸いです。他に良い方法があれば、ぜひ、みなさまのブログでご紹介くださいませ。