[Tips] Alteryxで「日本時間」を「UNIX時間」に変換してみた

2023.09.13

こんにちは、まつおかです。

Alteryxでダウンロードツールを使用して、とあるREST APIを実行しようとしたところ、パラメーターで指定する日時の型が「Unix time」だったので、日本時間からの変換方法を調べてみました。

UNIX時間とは

まずは「UNIX時間とはなんぞや」というところからですが、UNIX時間とは主にUNIX系OSで使用されている日時表現のひとつです。
1970年1月1日 午前0時0分0秒 から協定世界時(UTC)までの秒数で表します。
協定世界時(Universal Time Coordinated:UTC)とは、現在世界で標準として使用している時間であり、日本標準時(Japan Standard Time:JST)の 9時間前の日時となります。

ちなみに、1970年1月1日 午前0時0分0秒 のことは「UNIXエポック」と呼ぶのだそうです。

日本時間 を UNIX時間 に変換

では早速Alteryxを使って日本時間をUNIX時間に変換してみます。

UNIX時間の定義がわかればそれほど難しくはないです!

まずは、テキスト入力ツールで日本時間の日時を入れるフィールドを作り、次のセレクトツールでデータの型を DateTime に変更しています。ここは実際のデータに合わせ必要に応じて変更してください。

最後に繋いだフォーミュラツールでUNIX時間への変換をしています。詳細は以下となります。

  • UTC
    • UNIX時間に変換するためには協定世界時が必要ですので、DateTimeAdd 関数を使用し日本時間から9時間前の日時を計算します。
      DateTimeAdd([JST],-9,"hour")

      DateTimeAdd | Alteryx Help

  • Unix_time
    • UTCとUNIXエポックとの秒数差を DateTimeDiff 関数を使用して計算することで UNIX時間 を出すことができます。
      DateTimeDiff([UTC],'1970-01-01 00:00:00', 'sec')

      DateTimeDiff | Alteryx Help

今回はわかりやすいようにUTCの計算とUnix_timeの計算を分けましたが、もちろん関数を入れ子にして一度に算出することも可能です!

DateTimeDiff(DateTimeAdd([JST],-9,"hour"), '1970-01-01 00:00:00', 'sec')

うるう秒について

数年に一度、季節のズレを調整するためうるう秒が挿入されます。
詳細はこちらをご参照ください。

UNIX時間に関しては、うるう秒が挿入された場合も数は増えないそうです。
例えば、日本時間の 2012年1月1日 午前8時59分59秒 のあと、うるう秒が挿入され 午前8時59分60秒が発生しているのですが、UNIX時間は 8:59:59 も 8:59:60 も同じく「1325376000」となります。

特にうるう秒を意識することもなく、DateTimeDiff 関数を使い 1970年1月1日 午前0時0分0秒 からの秒数を算出すれば問題はありません。

さいごに

今回はAlteryxを使用した場合の UNIX時間の算出方法をご紹介しましたが、他のツールでも計算方法は同じです。

  • Tableau

  • Excel

    • Unix_timeの書式は60秒以上の秒を表示しますので書式を [s] にする必要があります

さて、これでダウンロードツールで REST API を使って無事データを取得できたので、このあと加工していきたいと思います!
ダウンロードツールも活用するととても便利ですのでぜひ!