日付列の加算/減算
日付に一定の期間を足したり引いたりします。受注日の 30 日後を納期にする、基準日から 1 年前を出す、といった使い方をします。
入出力
| ポート | 内容 |
|---|---|
| 入力データ | データ |
| 出力データ | 計算結果の列を加えたデータ |
Spark エンジンでも動きます。
行の数と並び順は変わりません。新規列に挿入を選ぶと列がいちばん右に 1 つ増え、元の日付列はそのまま残ります。既存列に上書きを選ぶと列は増えず、選んだ日付列の値が書き換わります。出力の型は元の列と同じ(日付型なら日付型、日付時間型なら日付時間型、時間型なら時間型)です。
設定項目
フォームの見出しの並び — 「処理対象列を選択」 → 「詳細設定」。条件によって出ない見出しもあります。
- 結果の挿入先を設定
- 新規列に挿入(既定)か既存列に上書き。上書きを選んだときは、下の「日付列を選択」で選んだ列がそのまま書き換わります。上書き用の列を別に選ぶ欄はありません。
- 新規列名を入力必須
- 「新規列に挿入」のときに出ます。すでにある列と同じ名前にするとエラーになります。
- 日付列を選択必須
- 足し引きの対象。日付型・日付時間型・時間型の列だけ選べます。
- 演算子を設定
- +(加算)(既定)か -(減算)。
- 日付要素選択 / 演算対象要素選択
- 足し引きする単位。選んだ列の型によって選択肢が変わります(列の型で変わる単位)。見出しも型で変わり、日付型では「日付要素選択」、日付時間型と時間型では「演算対象要素選択」になります。
- 既存列を参照して演算する
- 既定は off。on にすると、全行に同じ数を足すのではなく、行ごとに別の数値列の値を足し引きします。
- 数値を入力必須
- 「既存列を参照して演算する」が off のときに出ます。単位が「秒」のときだけ小数を入れられ、それ以外の単位では整数だけです。
- 数値列を選択必須
- 「既存列を参照して演算する」が on のときに出ます。数値型の列だけ選べます。小数が入っていると小数点以下は捨てられます(
1.9は 1、-1.9は -1)。 - 欠損値を置換して演算する
- 「オプション」の中にあり、「既存列を参照して演算する」が on のときに出ます。参照する数値列が空欄の行で、代わりに使う数。指定しないと、その行の結果は空欄になります。
列の型で変わる単位
| 列の型 | 選べる単位 | 最初に選ばれているもの |
|---|---|---|
| 日付 | 年 / 月 / 日 | 年 |
| 日付時間 | 年 / 月 / 日 / 時 / 分 / 秒 | 年 |
| 時間 | 時 / 分 / 秒 | 時 |
月や年を足したときの日
日はそのまま維持されます。 ただし足した先の月に同じ日がないときは、その月の最終日になります。
| 元の日付 | 設定 | 結果 |
|---|---|---|
| 2024-01-31 | + 1 月 | 2024-02-29 |
| 2024-03-31 | + 1 月 | 2024-04-30 |
| 2024-02-29 | + 1 年 | 2025-02-28 |
毎月の最終日を出したいときは、足したあとで日付要素の切り出しの「月末」を当ててください。
時間型は 24 時でひと回りする
時間型の列は日付を持たないため、24 時を越えた分は翌日に送られず、先頭に戻ります。
| 元の時間 | 設定 | 結果 |
|---|---|---|
| 23:30:00 | + 2 時 | 01:30:00 |
| 01:00:00 | - 2 時 | 23:00:00 |
日をまたぐ計算が必要なときは、日付時間型の列を対象にしてください。
空欄があるとき
| 空欄になっている場所 | 結果 |
|---|---|
| 対象の日付列 | その行の結果は空欄 |
| 参照する数値列(「欠損値を置換して演算する」を指定していない) | その行の結果は空欄 |
| 参照する数値列(「欠損値を置換して演算する」に数を入れた) | その数を足し引きした値 |
エラーと対処
対象の列が選択されていない
日付列・数値列のどちらかが空のまま実行したとき。
対象の列が選択されていません。
直し方 — 列を選んでから実行してください。
対象の列が見つからない
前の処理で列名が変わった、または列が消えたとき。
対象の列が存在しません。
直し方 — 列を選び直してください。
新規列名が既にある
「新規列に挿入」で、すでにある列と同じ名前を入れたとき。
新規列名(
{{new_col}})が既存の列名と重複しています。
直し方 — 別の名前にするか、「既存列に上書き」に切り替えてください。
参照する列が数値でない
「既存列を参照して演算する」で、数値型でない列を選んだとき。
列:
{{add_colname}}は数値型では無いため計算に利用できません。列の型変更で数値型に変換してください。
直し方 — 列の型変更で数値型にしてください。
扱える範囲を超えた
足し引きした結果が、扱える日付の範囲から出たとき。
加算/減算する値が大きすぎるためnehanで扱える日付時間の範囲を超えました。値を小さくして実行してください。
直し方 — 足し引きする数を小さくしてください。扱える範囲は日付型が 1677-09-22 〜 2262-04-11、日付時間型が 1677-09-21 00:12:44 〜 2262-04-11 23:47:16 です。
元のデータに範囲外の日付がある
計算する前から、扱える範囲の外の日付が入っていたとき。
nehanで扱える範囲の外の日付が含まれています。 ・日付型: 1677-09-22 ~ 2262-04-11 ・日付時間型: 1677-09-21 00:12:44 ~ 2262-04-11 23:47:16 対象の列に範囲外のデータがある場合は範囲内に収まるように変換してください。
直し方 — 入力のデータに 9999-12-31 のような値が入っていないか確かめてください。
よく使う例
1. 30 日後を納期にする
お題 — 受注日の 30 日後を納期にしたい
入力
| 受注日 |
|---|
| 2024-04-01 |
| 2024-04-20 |
設定
| 設定項目 | 値 |
|---|---|
| 結果の挿入先を設定 | 新規列に挿入 |
| 新規列名を入力 | 納期 |
| 日付列を選択 | 受注日 |
| 演算子を設定 | +(加算) |
| 日付要素選択 | 日 |
| 数値を入力 | 30 |
出力 — 納期 が日付型で増えます(2024-05-01 / 2024-05-20)。
2. 前年の同じ日を出す
お題 — 前年同日の売上と並べて比べたい
入力 — 売上日(日付型)が入ったデータ
設定
| 設定項目 | 値 |
|---|---|
| 新規列名を入力 | 前年同日 |
| 日付列を選択 | 売上日 |
| 演算子を設定 | -(減算) |
| 日付要素選択 | 年 |
| 数値を入力 | 1 |
出力 — 2024-05-10 なら 2023-05-10。この列をキーにしてキー列を指定する結合でつなげば、前年の値を横に並べられます。
3. 商品ごとに違う日数を足す
お題 — 商品によってリードタイムが違うので、行ごとに足す日数を変えたい
入力
| 受注日 | リードタイム |
|---|---|
| 2024-04-01 | 3 |
| 2024-04-01 | 10 |
設定
| 設定項目 | 値 |
|---|---|
| 新規列名を入力 | 納期 |
| 日付列を選択 | 受注日 |
| 日付要素選択 | 日 |
| 既存列を参照して演算する | on |
| 数値列を選択 | リードタイム |
出力 — 2024-04-04 / 2024-04-11。
4. リードタイムが空欄の行も計算する
お題 — リードタイムが未入力の行は、当日出荷として扱いたい
入力
| 受注日 | リードタイム |
|---|---|
| 2024-04-01 | 3 |
| 2024-04-01 | (空欄) |
設定 — 例 3 に加えて、「オプション」の中の「欠損値を置換して演算する」に 0 を入れます。
出力 — 2024-04-04 / 2024-04-01。入れないと 2 行目は空欄のままです。
5. 記録時刻を 1 時間ずらす
お題 — 別の地域の時刻に合わせて、記録時刻を 1 時間後にしたい
入力 — アクセス日時(日付時間型)
設定
| 設定項目 | 値 |
|---|---|
| 結果の挿入先を設定 | 既存列に上書き |
| 日付列を選択 | アクセス日時 |
| 演算子を設定 | +(加算) |
| 演算対象要素選択 | 時 |
| 数値を入力 | 1 |
出力 — アクセス日時 がそのまま書き換わります(2024-04-01 23:30 → 2024-04-02 00:30)。日付時間型なので日をまたいでも繰り上がります。