WeeklyAlteryxTips#68 一定の間隔の時刻の抜けを簡単に発見する

Alteryx

時系列データにおいて、抜けている日の補完が必要なケースは避けて通れないことがありますが、それでは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です)。

コメント

タイトルとURLをコピーしました