デジタル推進課

KNIME・Excel Macro・Power Automateなど日々の業務で使用できる自動化ツールを中心に書き綴ります

KNIME - 時を操る3 日時の足し算・引き算 ~Date&Time Shift~

f:id:makkynm:20201220095054p:plain

 

 

はじめに

日時計算にて最重要なNode、日時の足し算・引き算を行うDate&Time Shiftを扱いたいと思います。これ習得すれば日付の計算は自動化できるようになったも同然です。

 

 今回のテーマ ~Date&Time Shift~

f:id:makkynm:20200801100756p:plain

 今回のテーマ ~Date&Time Shift~

Workflowは下記からダウンロードできます。

hub.knime.com

 

覚えてほしいこと

月末=月初 – 1 日

当たり前なことを言っています。これが月末を自動的に取得するための重要なポイントです。

 

やりたいこと

月末を自動的に計算していきます。

f:id:makkynm:20200801101216p:plain

月末を取得する

 

Date&Time Shiftの使い方

日時計算にて最重要なNode、日時の足し算・引き算を行うNodeです。

Workflow

f:id:makkynm:20200801101350p:plain

Workflow - Date&Time Shift

Confirm - Before After

月初を取得してから、月末を計算させます。

f:id:makkynm:20200801101412p:plain

Confirm - Date&Time Shift

Configure

 全部で3Stepあります。

f:id:makkynm:20200801101507p:plain

Configure - Date&Time Shift
Step1 - Column Selection 基準コラムの選択

計算元のDate&Time型のコラムを選択します。複数選択できます。つまり複数のコラムに対して同じ処理を適用できます

例えばTodayとTommorrow というコラムがあったとして、それぞれ1日ずつスライドさせたいというような場合です。

Enforce inclusion / exclusion

以前にも説明しましたが、Enforce inclusionにすると、現在選択されているコラムが固定され、今後実行して新しいコラムが来たときには自動的にExclusionの方に入るという設定です。

Step2 - Replace/Append Selection 計算後のコラム名

計算した後のコラム名に対する処理が選択できます。Replaceであれば、元コラムに上書きする形で出力、Appendであればコラム名を「元コラム名+Suffix of appended columnに入力された文字」にして新規でコラムが作成されます。

個人的には、複数コラムの計算はいいので、ここで直接コラム名を指定したいんですけどねー。わざわざ元コラム名を消すためにColumn RenameをDate&Time Shiftのあとに入れています。

 

Step3 - Shift Value Selection 足し引きする値の指定

ここが一番重要ですね。基準コラムにたいしてどれだけ足し引きするかを指定します。指定方法は2種類です。

  1.  Use Duration 期間で指定
  2.  Use Numerical 数字で指定

また、これらの下にはコラムを使うか、直接入力で指定するかが選べるようになっています。ちょっと一言で、Use Duration 期間を指定する場合のConfigureについてお見せします。

今回は数字で指定する場合ですね。月初の1日前を計算したいので、"-1"と入力してから、Granuality(単位のようなイメージ)をDaysに指定します。

Granuality 意味一覧

  • Years: 年
  • Months: 月
  • Weeks: 週
  • Days: 日
  • Hours: 時
  • Minutes: 分
  • Seconds: 秒
  • Millis: ミリ秒
  • Micros:  マイクロ秒
  • Nanos: ナノ秒

 

 ちょっと一言

 Use Duration 期間で指定する場合

 Duration(期間)で計算する例も出したいと思います。前回、ちょっと一言で期間を勤務年数をDurationで計算したと思います。今回はそれを使って、今日の日付を逆算していきます。

Workflow

f:id:makkynm:20200801104523p:plain

Workflow - Date&Time Shift
Confirm 

f:id:makkynm:20200801104641p:plain

Confirm - Date&Time Shift
Configure

今日=入社日 + 勤務年数

で計算できます。注意点は、Durationを使うと基本加算になる部分です。

また、Durationを直接入力するときは、

KNIME - 時を操る1 日時を作る ~Create Date&Time Range~ -Intervalの表記方法

を参考にしてください。

f:id:makkynm:20200801104247p:plain

Configure - Date&Time Shift

 

月初の自動取得方法

あれ?月初ってどうやって自動化すればいいんだ?という方に、非常にブサイクですが自動化できるFlowをお見せします。

ポイントは、「月初はString Manipulationで作り出す」です。

Workflow - 月初を自動取得

自動化できるFlowは下記のような形になります。

  1. 今日の日付を自動取得
  2. Stringに型変換する。この時、yyyyMMで日付情報を落としておく
  3. String ManipulationでJoin関数を使って月初を作る
  4. 日付型に変換する

f:id:makkynm:20200801110111p:plain

Workflow - 月初を自動取得
Configure - 月初を自動取得

皆さんがただ真似すればできるようにConfigureの画面だけ貼り付けておきます。

f:id:makkynm:20200801110425p:plain

Configure - Date&Time to String

f:id:makkynm:20200801110522p:plain

Configure - String Manipulation

f:id:makkynm:20200801110544p:plain

Configure - String to Date&Time

 

おわりに

どうでしょうか?自動化の幅がかなり広がったのでしょうか。

日付が扱えるようになると楽しくなると思います。もうここまで来たらKNIME中級編はマスターしたといっても過言ではないでしょう!まだまだ続きますが!

コメントなどもらえると非常に嬉しいです!ではまた!

 

 

余談 

 時を操るシリーズには欠かせないと思います。今回紹介する映画は「バック・トゥ・ザ・フューチャー」です。

個人的にはドクの無邪気さがとても好きです。こんな風に好きなことやって生きていきたいですね!まだ観ていない方はぜひ。

バック・トゥ・ザ・フューチャー (字幕版)

バック・トゥ・ザ・フューチャー (字幕版)

  • 発売日: 2013/11/26
  • メディア: Prime Video
 
バック・トゥ・ザ・フューチャーPART2 (字幕版)

バック・トゥ・ザ・フューチャーPART2 (字幕版)

  • 発売日: 2013/11/26
  • メディア: Prime Video
 
バック・トゥ・ザ・フューチャーPART3 (字幕版)

バック・トゥ・ザ・フューチャーPART3 (字幕版)

  • 発売日: 2013/11/26
  • メディア: Prime Video
 

 

www.youtube.com

 

参考リンク