【Alteryx】で日付データを扱う際の考え方について
こんにちは、アライアンス統括部の清水です。
今日は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の日時フォーマットの基本は「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関数を利用して変換できます。以下のように数式を書くことを考えると、画面上で元データの形式を指定するだけの日時ツールのほうが操作は楽かもしれません。
データの出力について
再度文字列に変換する
データの出力の際に、「年月表示」や「YYYY/MM/DD」といった表示にするには、また文字列に変換が必要です。
日時ツールを利用し、出力したい形式にするとこのように列が追加されます。
年月日にデータを分ける
なお、列分割ツールを利用すると文字列になったデータをこのように「スラッシュ」で区切って、年月日に列を分けることも可能です。
おわりに
日付データに関するご質問が割と多いので、まとめてみました。
- フィルターで範囲指定を行ったり、日付の計算を行う際はDate型などに変換が必要
- 出力の際には文字列に変換が必要
どなたかのお役に立てば幸いです。