Alteryxでの日時操作のすべてをご紹介します
Alteryxでの日時操作はExcelなどに比べると制限が強く、慣れるまでは思ったように日時の処理ができないことがあるかもしれません。本記事ではわかりやすくAlteryxにおける日時操作を紹介していきます。シリーズとしてStepを3段階に分けてご紹介します。
- Step1 準備(日時形式へ変換)
- Step2 日時操作
- Step3 活用(他フォーマットへの変換)
今回はStep1として日時操作の前準備について紹介します。
Step2、3はこちらをご覧ください。
Alteryxでの日時操作の基本
まず、Alteryxで日時を取り扱う際のフローを記載します。
Alteryx上では、関数を使って日時操作を行う場合(1日足したり、日時の差分を取得したり)は必ず「日時形式」である必要があります。そのため、文字列形式でデータを持っている場合は、日時形式への変換が必要です。
また、Alteryxにおける日時フォーマットの基本は「yyyy-mm-dd hh:mm:ss」となります。そのため、テキスト入力ツールなどで「yyyy-mm-dd」と入力すると自動的に日付形式として認識されるようになっています。
日本で良く使われる「yyyy/mm/dd」形式(スラッシュで区切る形式)はデフォルトでは文字列と認識されます。そのため、「1日加える」などの日時操作を行う場合は、文字列形式から日時形式へ変換する必要が出てくるため、この形式変換には慣れておく必要があります。
※ただし、元データがExcelファイルの場合、スラッシュ区切りで表示されていても日時形式とExcelが認識している場合に限りAlteryx上でも日時形式で認識します。
※ロケールに応じて自動的にこのあたり認識してもらえるとすごい助かるのですが、逆に混乱することもあるので、「良し悪し」かと思います
まとめると、
- Alteryxでの日時デフォルトフォーマットは「yyyy-mm-dd hh:mm:ss」
- 日時操作機能(関数)を利用する際は、日時形式に変換する必要がある
- Excelで日時として認識されている場合は、Alteryxでも日時として認識される(スラッシュ区切りであっても)
ということになります。
どのようにして文字列形式から日時形式間への変換を行うか
文字列形式と日時形式の相互変換は「パース」カテゴリの「日時(DateTime)」ツールを使うか、各種フォーミュラツールの「DateTimeParse」もしくは「DateTimeFormat」関数を使います。
日時(DateTime)ツールを利用して文字列形式から日時形式へ変換する場合
DateTimeツールは簡単に形式の変更が可能です。欠点は、一度に変換できるフィールドが1つだけ、ということです。また、既存フィールドの形式を変更できず、必ず新しいフィールドを作る形となります。
文字列形式→日時形式の変換方法
以下のようにDateTimeツールを設定します。
「入力された文字列フィールドに一致する形式を選択」の設定方法:
変換元のフォーマットが、例えば「2019/12/03 13:54:20」であれば、カスタム設定にて「yyyy/MM/dd hh:mm:ss」と設定します。つまり、元のフォーマットがどう書かれているかを以下に記載しているフォーマットリストに基づいて設定します。
さらに例:
「10 October,2019」であれば「dd Month,yyyy」とカスタムで設定します。
「31/12/2019」であれば「dd/MM/yyyy」を選択します。
フォーマットリスト:
フォーマット | 変換対象 | サンプル(元データ「2019-12-03 13:54:20」) |
---|---|---|
yyyy | 年(西暦4桁) | 2019 |
yy | 年(西暦2桁) | 19 |
MM | 月 | 12 |
dd | 日 | 03 |
hh | 時 | 13 |
mm | 分 | 54 |
ss | 秒 | 20 |
Month | 月名 | December |
Mon. | 月名(短縮版) | Dec |
dy. | 曜日(短縮版) | Tue |
なお、Excelなどで編集した際、桁数が減少(2019/01/01→2019/1/1のように頭の0が削除されてしまった場合)した場合も、問題なく変換されます。
変換サンプル:「入力された文字列フィールドに一致する形式を選択」をカスタムで設定したサンプル
元データ | 入力された文字列フィールドの形式を指定 | 変換後 |
---|---|---|
2019/10/01 | yyyy/MM/dd | 2019-10-01 |
2019/10/1 | yyyy/MM/dd | 2019-10-01 |
10 December,2019 | dd Month,yyyy | 2019-12-10 |
10 Dec,2019 | dd Mon.,yyyy | 2019-12-10 |
2019/10/01 13:50:12 | yyyy/MM/dd hh:mm:ss | 2019-10-01 13:50:12 |
参考記事:
各種フォーミュラツールの関数を利用して文字列形式から日時形式へ変換する場合
フォーミュラツールや複数フィールドフォーミュラを使う利点は、アイコン一つで複数のフィールドに対して一度に変換ができることです。ただし、日時ツールほど懇切丁寧なインターフェースではないのでご注意ください。また、文字列形式→日時形式、日時形式→文字列形式で異なる関数を使う必要があります。
文字列形式→日時形式の変換方法
DateTimeParse関数を利用
文字列形式から日時形式に変換する際は基本的にこの関数を使用します。インプットデータがどのフォーマットで記載されているか、というのを指定することで日時形式に変換することができます。
使い方:
DateTimeParse([フィールド名],"元データのフォーマット")
※元データのフォーマットの部分は、指定したフィールドがどのようなフォーマットかを指定します。例として、「2019/10/01」であれば、「%y/%m/%d」と記載します。「/」は区切り記号、「%y」は年、「%m」は月、「%d」は日を示しています。
変換対象 | 元データのフォーマット | サンプル | 補足 |
---|---|---|---|
年 | %y | 2019 | |
月 | %m | 11 | |
日 | %d | 1 | |
月名 | %b、%B、%h | December、Dec | |
時(24時間) | %H、%k | 13 | |
時(12時間) | %I | 1 | %P、%pと組み合わせる必要があります |
AM/PM | %P、%p | PM、pm | %P:大文字 %p:小文字 |
分 | %M | 5 | |
秒 | %S | 16 |
サンプル:
変換サンプル:
元データ | 元データのフォーマット | 変換後 |
---|---|---|
2019/10/01 | %y/%m/%d | 2019-10-01 |
2019/10/1 | %y/%m/%d | 2019-10-01 |
10 December,2019 | %d %b,%y | 2019-12-10 |
10 Dec,2019 | %d %b,%y | 2019-12-10 |
2019/10/01 13:50:12 | %y/%m/%d %H:%M:%S | 2019-10-01 13:50:12 |
2:05 PM | %I:%M %P | 14:05:00 |
なお、Excelなどで編集した際、桁数が減少(2019/01/01→2019/1/1のように頭の0が削除されてしまった場合)した場合も、問題なく変換されます。
ToDate、ToDateTime関数を利用
この関数は、すでにAlteryxの標準日付形式と同じフォーマットで記載された文字列型のデータを日付型に変換します(「2019-10-01」という文字列を日付型に変換する)。使い所があまりないかもしれません(後述します)。
使い方:
ToDate([フィールド名])
ToDateTime([フィールド名])
サンプル(ToDate):
文字列→日付型への変更は、通常YYY-MM-DDではないフォーマットを日付型にする際に使うので、この関数自体は非常に使い所が限定されます(元々YYYY-MM-DD形式で書かれていれば、セレクトツールで形式だけ変えても日付型に変更できます)。
例えば、YYYY-MM-DD形式であるけれども文字列型のフィールドをそのまま日付操作関数内で使用したい時、等考えられます。
まとめ
本記事では、Alteryx上で文字列形式で持っている日付を扱う際の準備として、文字列形式から日付形式への変換方法をご紹介しました。
方法としては、以下2通りあります。
- 日時(DateTime)ツールを使用
- 各種フォーミュラツールのDateTimeParse関数を使用
日時形式に変換すれば、Alteryxが持つ多種多様な関数を用いて日付操作が可能です。
サンプルWFダウンロード
文字列形式→日付形式への変換サンプル fa-download
関連記事
※Alteryx Designer 2019.4.4.20206時点の情報となります