【Alteryx】で日付データを扱う際の考え方について

2023.02.16

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、アライアンス統括部の清水です。

今日はAlteryxを利用するうえで、ご質問をよくいただく日付データに関してブログにしてみました。

フィルターツールを使って、特定の期間のデータを抽出したい

【<=】【>=】が使える場合・使えない場合

例えば以下のような年月データを、フィルターツールを使って「2017年6月以降」のものを抽出してみます。

このとき普通に考えると6月以降という条件だと、6月も含めたいので、「年月データ」>=「2017年6月」というフィルター設定にするかと思います。

では実際のデータとAlteryxの画面では、どのようになるでしょうか?このように大なりイコールや小なりイコールが選べません。

そうすると6月も含めたいので、「年月データ」>=「2017年6月」としたくても、大なりイコールや小なりイコールが使えないため、以下のようにしておかないと、6月以降のデータが取得できません。

では、別のデータだとどうでしょうか?大なりイコールや小なりイコールが利用できるので、本来設定したかった6月以降といったフィルターが設定可能です。

その他、細かく「XX日」から「XX日」までといった範囲指定も可能です。

 

この違いはなんでしょうか?

今回先にこのデータの項目名の後ろにそれぞれ「文字列」や「日付型」といれておきましたが、Alteryxに限らず、データを扱う上で非常に大事な「データ型」という概念に関してお伝えします。

データ型について

エクセルからデータ入力してみる

このように、Excelファイルにあるサンプルデータを「データ入力ツール」を使って読み込んでみます。このとき「Order_date」や「Ship_date」などといった日付に関するデータが存在していたとします。

このデータは、読み込んだ時点でどのデータ型となっているか見てみると、「V_String」となっています。これは日付型ではなく文字列であることを意味しています。

そのほか、「Shipping_Cost」といった、コストに関するデータも文字列として認識されているため、この状態で集計ツールを利用しても、数式を利用して集計処理が出来ません。このように、本来想定される使用用途に沿ったデータ型になっていなければ、その後データ加工を行う際に支障がでてきてしまいますので、先に正しいデータ型へ変換することが必要となります。

「データ型」に関して、詳細をご確認したい方は以下の弊社記事をご参照ください。

Alteryxでのデータの型とその役割

「文字列」を「日付型」に変換するには

フォーマットの基本

Alteryxの日時フォーマットの基本は「yyyy-mm-dd hh:mm:ss」です。一般的によく見かける「yyyy/mm/dd」形式の場合、そのままデータを読み込むと文字列として認識してしまいます。ただしスラッシュ区切りで表示されていても日時形式としてExcelなどで認識している場合は、Alteryx上でも同じように認識します。

セレクトツール

元々「YYYY-MM-DD」形式で書かれていれば、セレクトツールで手動で変更が可能です。

オートフィールド

元々「YYYY-MM-DD」形式で書かれていれば、オートフィールドでもそのまま日付型に変換されます。

日時ツール

「yyyy/mm/dd」だったり、「yyyy年mm月」などどいった、元のデータが「YYYY-MM-DD」形式以外の場合、日時ツールでこのように元データの形式を指定することにより、変換が可能です。

なおこちらを利用すると、上記の他のツールとは異なり、新しく変換されたデータが1列追加されますのでご注意ください。

フォーミュラーツール

「日時ツール」と同じ内容の処理を、DateTimeParse関数を利用して変換できます。以下のように数式を書くことを考えると、画面上で元データの形式を指定するだけの日時ツールのほうが操作は楽かもしれません。

DateTimeParse

DateTimeParse でサポートされる入力

 

データの出力について

再度文字列に変換する

データの出力の際に、「年月表示」や「YYYY/MM/DD」といった表示にするには、また文字列に変換が必要です。

日時ツールを利用し、出力したい形式にするとこのように列が追加されます。

年月日にデータを分ける

なお、列分割ツールを利用すると文字列になったデータをこのように「スラッシュ」で区切って、年月日に列を分けることも可能です。

おわりに

日付データに関するご質問が割と多いので、まとめてみました。

  1. フィルターで範囲指定を行ったり、日付の計算を行う際はDate型などに変換が必要
  2. 出力の際には文字列に変換が必要

どなたかのお役に立てば幸いです。