はじめに
皆さんご無沙汰しております。デジタル推進課のまっきーです。最近書くネタがなくなってきたり、ChatGPT系を触っていたら更新がなくなってしまいました。
ぜひKNIME作成の外注や業務自動化などに関心のある方はお気軽にお問い合わせください。私のブログのアイデアの一つになるかもしれません。。
今回のテーマ ~シリアル値の日付型へ変換~
ExcelをKNIMEに取り込んだ時シリアル値で取り込まれてしまった!という場合、皆さんならどう処理しますか?
覚えてほしいこと
windows Excelのシリアル値は1900年1月1日からの日数を示している。
Excelのバグには注意
始める前に - シリアル値とは?
ここはやはりChat GPTに聞いてみましょう。
Excelのシリアル値は、日付を数値として表現したものです。Excelでは、特定の日付をその日が1900年1月1日から何日目であるかを示す整数で表現します。このような数値表現を使用することで、日付に関する計算が容易になります。
具体的には、1900年1月1日は1、1900年1月2日は2というように数値化されます。つまり、Excelの日付のシリアル値は1900年1月1日を基準(起点)とした日数を表します。
同様に、時間もシリアル値として表現されますが、これは1日を1とした小数で表現されます。例えば、12:00 PMは0.5、6:00 PMは0.75となります。
このシステムを使用することで、日付と時間の計算や比較を簡単に行うことができます。ただし、このシステムには注意点が一つあります。Excelは1900年を閏年として扱っており、1900年2月29日(シリアル値60)を認識しています。しかし、実際には1900年は閏年ではないため、この日は存在しません。このため、日付の計算においてはこの点を考慮する必要があります。
え、、そうなの??
これも検証してみましょう。
事前準備
まずはExcelファイルを用意します。下記のようなExcelを作ってみました。
シリアル値に表示を変える方法はシンプル。日付をコピーして、表示形式を数値に変更するだけです。
やりたいこと
Excelの日付のcolumnがシリアル値で取り込まれてしまった際に日付型にKNIME上で戻す
Workflow
Workflowは下記リンクからダウンロードできます。
KNIME Hub上に上がっていたComponentにはバグがあったりLoop使っていて面倒そうだったので、自分でComponentも作っちゃいました。
ざっくり解説
こちらは実践編なので、中級編まで終えている前提で解説します。
そんなに解説するところもないですが、、、各Nodeでやっていることは下記のとおりです。
- Cross Joiner: 1900.01.01の日付が格納されているDateというColumnを作る
- Row Splitter: excelのバグにより、1900年の閏年の扱いに誤りがあるので、処理に調整をかける
- Math formula: 1900年の閏年以降はシリアル値-2で処理すれば計算が可能になる
- Date&Time Shift: 1900.01.01を起点として日付を計算する
ちょっと一言
シリアル値 - Excelのバグは本当にあるのか
ChatGPTさん、本当ですかということで検証。
まずはExcelで計算してみます。Excelでは問題なく計算できているようです。
ただ、KNIMEで計算した結果、確かにずれてます!!
Chat GPTさんすげえ。。
Component で楽をする
excelのシリアル値変換のような一般的なケースは世界中のKNIMEユーザの誰かがNodeを作ってくれていることが多いです。検索してKNIME Hubで見つけたら、一度Downloadしてみて使ってみるのもありです。
ただし、今回のケースのようにそのComponentが間違っていることもあります。また、Component内で無駄な処理をしている場合やExtensionをインストールしないと使えないものも多々あります。
ご利用は慎重に。。。
今回のケースについては正しいLogicおよびより簡潔なLogicを反映させてComponentをアップロードしておきました。こちらを使っていただいても構わないです。
ただしこちらのComponentはDate型のみ適用で、Date&Time型には適用させていないです。
Excel Serial to Date – KNIME Community Hub
おわりに
ChatGPTさんの強さについて改めて気付かされた。まさかExcelにバグがあるなんて。。
また、Componentの使い所についても少しだけ触れました。ぜひ楽してKNIMEを作っていってみてください。
KNIME作成の外注や自動化全般のコンサルティングなど、もし案件あれば気軽におっしゃっていただければと思います。
ではまた!
KNIME Hubワークスペース
Twitter アカウント
まっきー | デジタル推進課 (@makkynm) | Twitter
KNIMEに関する本
KNIMEに関する日本語の本って今これくらいしかないと思うんですよね、、
本がいいなーと言う人はぜひ試してみてください。