見出し画像

【JKI】005_Date to Fiscal Year

【JKI_005】課題を確認

Just KNIME It! (JKI)

今回の挑戦はこちら。
Google翻訳すると

画像1

課題5:会計年度までの日付
レベル:中
説明:あなたが働いている会計事務所では、異なる日に実行された契約が与えられます。あなたの目標は、これらの各契約に対応する会計年度のラベルを付けることができるメソッドを作成することです。注:会計年度は、通常、予算目的および財務報告のために、政府の会計で使用される12か月の期間です。その定義は国によって異なるため、ソリューションは柔軟で、会計年度の開始日と終了日の両方のフロー変数を含める必要があります。たとえば、米国の連邦会計年度は、10月1日から翌年の9月30日までの12か月間です。

【会計年度の多様性】

年度なんだから1年間に決まってるし、始まりの月さえ指定したらいいのではと最初は思いました。甘かった。

会計年度は1年間とするのが通例であるが、特殊な事情により変則的な期間が採用されることもある。

そんなことあるんですか!完璧を目指すなら開始日と終了日が必要なわけですね。


【データセットを入手】

からExcelファイル2つを入手し、いつものようにknime-workspace内にdataフォルダを作って格納しました。

画像2

それぞれExcel Readerで読み込みます。
以前にも使った手法なので、設定画面のみ以下に。

設定:

画像3
画像4

【日付データへ変換】

JKIの第2回でやらかしたので、今回は同じ過ちは繰り返しません。

画像5

結果:

画像6

【課題の解釈が分かれるところ】

ここまでは良かったんですけど、この先はそれなりに悩みました。
どうしてかというと、「fiscal_years_lookup_table.xlsx」に会計年度の定義がされていない期間をどう扱うかが課題には明記されていなかったからです。

画像7

2015年10月1日より前や2020年9月30日より後をどうするか。
例えば、上記のFYすなわち会計年度Fiscal Yearの定義はサンプルと見なして、同様のルールでFYを定めてしまう方法もあります。

しかし今回は

あなたの目標は、これらの各契約に対応する会計年度のラベルを付けることができるメソッドを作成することです。

ソリューションは柔軟で、会計年度の開始日と終了日の両方のフロー変数を含める必要があります。

と言ってますので、私の判断では「fiscal_years_lookup_table.xlsx」に定められた日付のみをFY定義に用いることで、この定義書を差し替えるだけで柔軟に多様な会計年度のラベル付けができるWFを提供することにしました。
皆さんの解釈と違ってもまあそんなこともあるさと割り切りました。仕事だったらもちろん相手に真意を確かめてから作りますよ、気づいたらね。


【データにIDを付与】

Loop処理でFYを入力していこうと考えたので、各行にIDを発番しておくことにしました。もっとうまいやり方もあるかもしれないんですが、IDを最初のデータテーブルの並びの順に後でソートできるようなIDをつけておくといろいろ便利なことがあると思ったからです。

画像11
画像8

今回は変数ROWINDEXをそのまま整数値のID番号として使いました。

結果:

画像9

【FY毎にLoop処理】

画像10

設定:

画像12

一回目のループ時の変数:

画像13

FY2016はStart が 2015-10-01, End が 2016-09-30と変数指定されています。

【Date&Time-based Row Filter】

画像14

上記の変数指定された期間でデータを絞り込みます。

設定:

画像15
画像16

一回目のループ時の結果:

画像17

意図した通りに絞り込まれています。


【会計年度データを加える】

画像18

上記で変数Keyに会計年度が指定されていたので、その値を新たなカラムに入力します。

画像19
画像20

一回目のループ時の結果:

画像21


【まわせTRTVループ】

画像22

Table Row To Variable Loopを今回だと5行分すなわち5回まわします。

上記はノードをStep Loop Executinして1回目で止めた状態です。
右クリックでResume Loop Executionを選べば残りのループ全てを回せますね。

画像23
画像24

Loop完了結果:

画像25

Iterationが0~4の5回分、集計されて379行の処理が終わりました。
最初に「contract_dates_table.xlsx」で入力したのは445行なので、66行は処理されないで会計年度が定義されませんでした。


【データを統合して整形】

JoinerでOrderカラムをキーにして入力データにFYカラムを統合します。作業用のOrderカラムなどは残さない設定としています。

設定:

画像26
画像27

結果:

画像28

最初の方は2015年9月までのデータが多いのでFYは空白になってます。

画像29

最後の方は比較的新しい日付でかつ2020年9月までなのでFY定義ができています。以上で完了と考えます。

【WF提出】

難易度の基準が分からないなぁと思いつつKNIME HubにWFを上げて完了です。

画像30
画像34


今回の皆さんの解答と次の課題も楽しみにしておきます。


おまけ:

【JKI_004振り返り】

公式解答のRuleEngineの設定が効率良いなと思いました。


画像31
画像32

私のは効率よくなかったですね。反省。

画像33

【すべては老後のために】

Loopを回そうとするとき、かなりの確率で思い出す曲がこちら。

「まわせPDCAサイクル」以外の10曲はめっちゃこだわって、丁寧に気持ちを込めて作りました。エンタメ性の強い曲も、聴かせる目的の曲も。 月並みな表現やけど、たくさんの人に届けと思って大切に大切に作りました。 「まわせPDCAサイクル」はもうアレですね。テレビ見ながら作りました。

好きだわぁ~この感じ



記事を読んでいただきありがとうございます。 先人の智慧をお借りしつつ、みなさんに役立つ情報が届けられたらと願っています。 もしサポートいただけるなら、そのお金はKNIMEの無料勉強会の開催資金に充てようと思います。