時系列データを取り扱う際、あまりにもデータが多い場合や、複数のデータソースの時間間隔が異なる場合に合わせたい、などといったケースでは、データを分刻みにするとか時間刻みにするなど、時間を操作する必要があります。これをAlteryxで行う場合、DateTimeTrim関数を使います。
DateTimeTrimとは?
このような場合に、AlteryxではDateTimeTrim関数が非常に便利で、指定した単位でそれ以下の時間を切り捨てることができます。例えば、一ヶ月の売上データがあった場合に、月単位で集計したいといった場合は、DateTimeTrim([DateTime],”Month”)などとすることで、日付列を月初の日付にすることができます。
ここで、DateTimeTrim関数のオプションを見てみましょう。
DateTimeTrim(dt,t)
- dt:日付データ。値を直接指定することも可能ですし、Date型、DateTime型のフィールドを指定することも可能です。
- t:トリムする単位を指定します。単位は以下のように指定します。
- Year:1月1日AM0時0分0秒にします
- Month:当該月の1日のAM0時0分0秒にします
- Day:該当日のAM0時0分0秒にします
- Hour:該当の時間の0分0秒にします
- Minute:該当の分の0秒にします
- seconds:該当の秒にします(秒より小さい単位を使っているときに利用可能です)
- milliseconds:該当のミリ秒にします(秒より小さい単位を使っているときに利用可能です)
- Firstofmonth:当該月の1日のAM0時0分0秒にします。Monthオプションと同じ。
- Lastofmonth:当該月の最終日の23時59分59秒にします。
しかしこれ、基本的に中途半端な時間にすることはできません。例えば、5分ごとのデータにすることはできません。今回は、指定した時間間隔になるようにしてみたいと思います。
好きな時間でDateTimeTrimする
まず、5分ごとにデータにしてみたいと思います。
基本的な考え方としては、分の部分を抜き出し、5で割ったときの余りを計算し、その余りを元の時間から引き算。その後小数点部分を消すためにDateTimeTrimを分指定で行う、ということになります。フォーミュラ1つで再現すると、以下のようになります。なお、インプットする時間フィールドの名前は「MyDateTime」です。
DateTimeTrim(DateTimeAdd([MyDateTime],-MOD(DateTimeMinutes([MyDateTime]),5),"minutes"),"minutes")
もう少し分割して考えると、以下のようになります。

この結果は、以下のようになります。

MODで計算した時間が「minutes」フィールドに出力されています。これをMyDateTimeから引き算すれば、0分~4分はすべて0分のデータになります。ちなみに、秒が無いデータであれば、最後のDateTimeTrimは不要です。
これを応用すれば、2時間単位や、10秒単位などももちろん簡単にできます。
気をつけないといけないポイントとして、指定する間隔について、分の場合は60分を割り切れる必要があります。例えば、25分単位などにすると、0分、25分、50分という感じになりますが、上の式だとまた0分、25分、50分となります。25分間隔にしたいということであれば、50分の次は75分なので、15分(一番はじめの時間からすれば、1時間15分ということですね)が正解です。この場合は次のように考えます。
指定する間隔を常に一定にしたい場合
この場合は、基準となる開始ポイントを決めてそこからの時間がどうなのか、ということになりますが、基準時間を決める分、少し複雑なワークフローになるかもしれません。
今回は、当日のAM0時0分0秒を常に基準とします。この場合、フォーミュラツールの数式は以下のようになります。

一番上の部分しか変更していませんが、基準となる日時からDateTimeDiffを行っています。ここで基準となる時間は「MyDateTime」を日でDateTimeTrimした時間にしています。これにより、以下のようなデータが得られます。確かに25分ごとになっています。

いずれにしてもあまりトリッキーな間隔にするとわかりにくくなるため、例えば1時間を割り切れる間隔や1日を割り切れる間隔にするのが良いかと思います(変な時間間隔にすると、日にちごとで見ようとしたときなどに、日ごとにデータ数が変わったりするとややこしくなります)。
なお、上の数式はフォーミュラ式一つの場合、以下のようになります。
DateTimeTrim(DateTimeAdd([MyDateTime],-MOD(DateTimeDiff([MyDateTime],DateTimeTrim([MyDateTime],"Day"),"minutes"),25),"minutes"),"minutes")
基準時間を自分で指定したい場合は、赤色の部分を特定の日付にしてください(例:’2025-01-01 00:00:00’ など)。
まとめ
- 指定した時間間隔でDateTimeTrim的なことをする方法を紹介しました
- なるべく1日、1時間などを割り切れる間隔でやることをおすすめします
サンプルワークフローダウンロード
次回
未定です。
コメント