「月末の日付」を求める方法、ご存知ですか?
全国1億2千万人のAlteryxユーザの皆様、こんにちは。今日も元気にデータ加工してますか?
今回は年月を表すテキストデータから月末の日付を求める方法を紹介します。
日付のデータ、相変わらず扱いが面倒臭いですね。RDBのテーブルに入れる際にはきちんと日付型カラムに格納して欲しいところですが、往々にして文字列として格納されている場合も多く目にします。これに迂闊な計算を加えると2/30などという恐ろしい結果が現れてしまうので、そうならないよう正しく処理したいものです。
さて、以下のような年月を表す文字型のデータに対し、その月の最終日を求めたい場合、どのように処理すればよいでしょう?
'201307'(文字列) -> 2013-07-31(日付)
Alteryxの日付関数にはDateTimeLastOfMonth()が用意されているのですが、残念ながら引数を取ることができません。自動的に実行した時点における月末の日付が表示されるようになっています。
これに対し、以下で解決を試みました。ご覧ください。
フローを作ってみた
実際に、月末の日付を求めるワークフローを作成します。シンプルに5つのツールを使用しました。
- テストデータを作成する
- データを文字列として定義する
- 文字列を日付に変換する
- 月末日付を算出する
- 処理結果を確認する
それでは、それらツールの働きを順番に細かく見ていきましょう。
1.テストデータを作成する
まず、Input Dataで入力データを作成します。
カラム見出しはとりあえずmonthとし、月末の日付がそれぞれバラバラになるように、2月、7月、11月を設定しました。
2.データを文字列として定義する
次に、Selectでmonth列のデータを6桁の文字列として設定します。
変換後のカラムをyear_month_strとリネームしました。
3.文字列を日付に変換する
そして、DateTimeで文字列データを日付型に変換する設定を行い、入力カラムyear_month_strの変換データをyear_month_dayとしました(図①)。
そして、文字列それぞれの桁が日付型のどれに該当するかを、Custom設定で与えました(図②)。
これで、文字列'201302'は、日付データ"2013年2月1日"として扱われるようになります。
月末日付を算出する
今までの処理で年と月だけの文字情報を、各月の一日(ついたち)の日付データに変換する事ができました。 さて、ここから一番の肝、月末日付を求める訳ですが、どうやって求めるかというと、実は
一日(ついたち)の日付に1月足して1日減らす
これだけです。計算式で表現すると
DateTimeAdd(DateTimeAdd([year_month_day],1,"Month"),-1,"Day")
となります。
AlteryxのFormulaツールで実際に表現してみます。
矢印の先の処理結果をご覧ください。たしかにyear_month_dayの値が月末の日付に変わっています。
処理結果を確認する
最後に、Browseで最終結果を表示します。
月末の日付が得られていることが確認できます。
まとめ
Alteryxで月末の日付を求める方法を紹介しました。
言われてみれば簡単ですが、ちょっと工夫が必要な処理だと思いますので、是非覚えておいてください。
そして、くれぐれも日付を文字列や数値として計算するのは思わぬ事故の元になる事も、肝に命じておきましょう。
それでは、また。yokatsukiでした。
Alteryxの導入なら、クラスメソッドにおまかせください
日本初のAlteryxビジネスパートナーであるクラスメソッドが、Alteryxの導入から活用方法までサポートします。14日間の無料トライアルも実施中ですので、お気軽にご相談ください。