2つの日付列の日付の差の日数を計算し、計算結果の列を追加します。ExcelのDAYS関数に相当する機能です。
説明
データにある2つの日付の値の間の日数を求めたい場合があります。 MSIPでは 列追加アイコンを使用することで、日数を計算することができます。 ExcelのDAYS関数に相当する機能です。
例えば、以下のようにデータに日付型の値が格納された「日付1」と「日付2」の列があるとします。ただし、ここでは「日付2」の方が「日付1」よりも先の日付となっているとします。
この各行に対して、「日付2」 - 「日付1」
を計算し、「日数」列に計算した値を格納します。
使い方
テーブルデータに、日付型の日付1
と日付2
の列があるとします。
- データに列追加アイコンを接続します。
- パラメータ設定画面を開き、「追加する列名」に新しい列名「日数」を入力します。
- 「計算式」に
(table["日付2"] - table["日付1"]).get_total_seconds()/60/60/24
を入力します。get_total_seconds()
は、日付型または日時型同士を引き算した結果を秒数で返す関数です。
- アイコンを実行すると、「日数」列が追加された結果が出力されます。
なお、このままだと、日数の列が実数型になるため、小数点表示されてしまいます。
そこで、日数の列を整数型に変更します。
- 列追加アイコンに列属性変更アイコンを接続します。
- パラメータ設定画面を開き、「日数」列にチェックを入れます。
- 「新列型」を
integer
にします。
- アイコンを実行すると、「日数」列の型が整数型になった結果が出力されます。
OnePoint
ここでは、異なる年の間の日数も求められるように、列追加アイコンでget_total_seconds()
を使用しました。
ですが、求める日数が同一年内の場合は、日時情報アイコンでも日数を求めることができます。
日時情報アイコンでは、1月1日からの経過日数(年日数)を求めることができるので、日付1
と日付2
の年日数の差を計算します。
フローは以下のとおりです。
- データに日時情報アイコンを接続します。(フローの日時情報1)
- パラメータ設定画面を開き、「対象列」に
日付1
を指定し、出力項目の年日数にチェックを入れます。
- アイコンを実行すると、「年日数」列に1月1日から数えた
日付1
の日数が追加された結果が出力されます。
続いて、同様の処理を日付2
に対してもおこないます。(フローの日時情報2)
ただし、ここでは設定画面で「元データ出力」のチェックをはずしておきます。
これで、日付1
と日付2
の年日数が求まったので、引き算をするためにひとつのテーブルにまとめます。
- 日時情報1から列結合アイコンを接続します。
- 日時情報2から、上記の列結合アイコンに接続リンクを繋ぎます。
- 列結合アイコンを実行すると、日時情報1の結果と日時情報2の結果が列方向に結合されます。
ここで、同じ年日数
という名前の列を結合したため、日付2
の年日数が自動的に1.年日数
という名前に変更されていることに注意してください。
ここまで来れば、最後に日付2
の年日数から日付1
の年日数を引くだけです。
- 列結合アイコンに列追加アイコンを接続します。
- パラメータ設定画面で「追加する列名」に「日数」を入力します。
- 「計算式」に
table["1.年日数"] - table["年日数"]
を入力します。ここで1.年日数
の列は、日付2
の年日数です。
- 実行すると、
日付1
と日付2
の間の日数が追加された結果が出力されます。