時系列データにおいて、抜けている日の補完が必要なケースは避けて通れないことがありますが、それではAlteryxではどのように考えればよいでしょうか?
Alteryxにおける時系列補完
例えば、日付単位で考えたいと思います。行方向にデータを見ていき、各レコード間の日付の差分が1であれば抜けがない、ということになります。となると、複数行フォーミュラでできる、ということになります。
一旦立ち止まって考えてみましょう。Designerは様々なツールを持っていますが、時系列カテゴリ内に眠る「時系列フィル」というツールをご存知でしょうか?ちなみに、「フィル」は満たす、という意味になります。

つまり、このツールを使うことで、簡単に時系列データの補完ができてしまいます。
時系列フィルツールの使い方
設定は非常に簡単で、フィールドを選択し、間隔(日単位なのか、月単位なのか)、増分を選択するだけです。

実際に以下のようなデータがあるとします。2024年1月~2025年1月までの月がありますが、9月、11月、12月が抜けています。

これを間隔を「月」で増分は1として時系列フィルツールを適用してみましょう。結果は以下のとおりです。

適用したフィールドがちゃんと補完され、元の時系列フィールドは「OriginalDateTime」として保存されており、保管されたフィールドは「FlagGeneratedRow」にTrueの値が入ります。このとき、もともとあったその他のフィールドはすべてNullとなっています。
注意点
注意点は、「間隔」のオプションに「秒」が選択できないことです。秒単位で補完したい時は、複数行フォーミュラを使いましょう。例えば、日単位で保管するワークフローは、以下のようなワークフローが考えられます(詳細はサンプルワークフローを御覧ください)。

増分2としたときに、元のデータが増分1で存在するとどうなる?
例えば、2024年1月から2025年2月まで1ヶ月単位のレコードがあり、そのうち5月、8月、12月が抜けていたとします。つまり、以下のようなデータです。

これを、増分2で間隔を「月」にするとどうなるでしょうか?結果は以下のとおりです。

想定と少し異なるかもしれませんが、2月が3月に置き換わり、3月がだぶっています。そして、4月はもともと存在していなかった5月に置き換わっています。設定上は1、3、5、といった感じで月が存在すれば良いのですが、もともとのデータから言うと、5月が補完されるべきにも思えます。ただ、このツールでは、各レコード間の間隔が2になるようにしようとしているようです。そして、過剰なデータはそのままダブっています。
最終的には、補完された月でユニーク化すればほしいデータが取得できます。
まとめ
- Alteryxにおける日付の補完方法をご紹介しました。時系列フィルツールが楽です。
- 間隔が秒単位の場合は利用できないため、複数行フォーミュラを使う必要があります
- 増分設定より細かい単位でデータが入っている場合は、ユニークツールなどで重複を除去して下さい
サンプルワークフローダウンロード
次回
久々にレポート系のツールをご紹介します(しかもめちゃくちゃスタンダードなTipsです)。
コメント