はじめに
中二病っぽい題名になってしまいましたが、今回からDate&Timeの処理Nodeについて集中して扱っていきたいと思います。日付の処理はよく出てくると思います。これらを習得してより自動化の効率を上げていきましょう。
第一回目は、日付や時間を作るNodeです。
今回のテーマ ~Create Date&Time Range~
Workflowは下記からダウンロードできます。
覚えてほしいこと
今日の日付の自動取得はCreate Date&Time Range
やりたいこと
できることを説明するため、3通りのOutputを作っていきたいと思います。
やりたいこと1 - 今日の日付を取得する
今日の日付を自動的に取得する
やりたいこと2 - 1日の時間を作成する
0時から23時まで作ります。
やりたいこと3 - 1月のカレンダーを作成する
1月のカレンダーを作ってみます。
Create Date&Time Rangeの使い方
Workflow
Confirm - Before After
さきほどやりたいことで説明しましたが、再度掲載します。
やりたいこと1 - 今日の日付を取得する
個人的に一番使います。自動的に今日の日付を取得できるので変数と組み合わせると自動化作業が楽になります。
やりたいこと2 - 1日の時間を作成する
1時間ごとのデータを作成します。24個分のデータを作成します。
やりたいこと3 - 1月のカレンダーを作成する
1月のカレンダーを、開始日と終了日、間隔を指定して作成します
Configure
大きく4つの設定項目があります。やりたいこと1~3を一気に掲載します。
Step1 - Output Settings データ型とコラム名の設定
Step1では、出力したいデータ型とコラム名を指定します。
Output Type:データ型の設定
ここではDate&Time型に関わる4種類が指定できます。
やりたいこと1と3では、日付のみを出力したいのでDate型を、
やりたいこと2では、時間を出力したいのでTime型を指定します。
New column Name:新コラム名の設定
次に出力時のコラム名を指定します。
やりたいこと1はToday
やりたいこと2は1月
やりたいこと3はHour
として入力しています。
Step2 - Mode Selection 出力行数の設定
出力する行数を指定できます。FixedとVariableはStep3とStep4の設定項目に大きくかかわっています。各意味は下記の通りです。
Fixed:出力行数を指定するモード。Starting PointとEnding Pointで設定された値をここで指定した値で均等に分割して値を計算していく。
Variable:Starting Pointから、Ending PointまでStep4 Ending Point Intervalで指定した感覚で値を計算していく。
やりたいこと1では、Fixedで1を指定しました。この場合、1行しか出力しないということになります。
やりたいこと2では、Fixedで24を指定しました。すると、Step3で指定した00:00とStep4で指定した23:00を24で均等分割して出力します。
やりたいこと3では、Variableを指定しています。この場合、Step3で指定した開始日から、Step4で指定した1日ごとの間隔でデータを増加させていき、Step4で指定した終了日まで続くようなデータを作成します。
Step3 - Starting Point 開始位置の設定
データの開始日時を指定できます。Use execution date&time使用すると、このNodeが実行された日時を取得できます。
Step4 - Ending Point 終了位置・データ間隔の設定
データの終了日時を指定できます。
Step2でVariableを選んだ場合は、Interval(データ間隔)を指定する必要があります。データ間隔の表記方法は「ちょっと一言」で扱います。
ちょっと一言
Intervalの表記方法
Step2でVariableを選んだ場合は、Interval(データ間隔)を指定する必要があります。
3種類の表記方法があります。
Example 1 - ISO-8601基準に沿った表記
ISO-8601基準に沿った表記は下記のような形です。(NodePitから引用した書き方だと、反応しないので、カンマ等なくしたほうがいいと思います。結局Example3と同じ表記になりますね。)
2年間隔: "+2 years"
-2年間隔: "-2 years"
1年2ヵ月3週間4日間隔: "1 year 2 months 3 weeks 4 days"
15分間隔: "+15 minutes"
-15分間隔: "-15 minutes"
2時間15分3.5秒間隔: "2 hours 15 minutes 3.5 seconds"
参考:
Duration (Java Platform SE 8 )
Example 2 - 略字での表記
年: y
月: M
日: d
時間: H
分: m
秒: s
日付: y: years, M: months, d: days
Time-based duration: H: hours, m: minutes, s: seconds
Example 3 - 通常単語での表記
これは英語と同じですね。sはあってもなくても大丈夫です。連続して表記する場合は空白であれば大丈夫です。(”,”などは認識してくれません)
年: year / years
月: month / months
日: day / days
時間: hour / hours
分: minute / minutes
秒: second / seconds
1年2ヵ月: 1 year 2 months
おわりに
Date&Time 型は日々日々のレポート作成において非常に扱えると強いです。変数にすれば、実行時にわざわざConfigureの設定を変える必要がなくなるので、リセットと実行だけをすればよくなるためです。習得すれば1レベルアップできると思います!
ここ分かりにくい、ここ違うんじゃない?、これがあれば参考になる、自分の会社ではこんな風な使い方をしている、などなど、コメントあればいただけると大変助かります!
余談
時間といえば、言わずとしれた映画「ミッドナイト・イン・パリ」です。パリをこよなく愛する脚本家のギルが、真夜中に車に乗るとあこがれの1920年代にタイムスリップするお話です。個人的には2つの「今はいつでも満たされない」、「価値観と合う人と一緒にいるのは素晴らしい」というメッセージが印象的でした。あまりにも有名なので、ぜひ一度観てみてください。
参考リンク
- KNIME公式Node Pit(英語):
- KNIME Example Workflow(英語):
Create Date&Time Range – KNIME Hub