5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Modeler詰将棋!の線形補完をやってみた

Last updated at Posted at 2021-03-12

IBMソリューションブログのこちらの記事にある、Modeler詰将棋!が面白かったので、気晴らしついでにやってみました。

例題1:「欠損の直前の値を代入する」

これは簡単ですね。同じ値をいれるので、置換ノードで@OFFSET(@FIELD,1)で上からコピーすればいけます。

ストリームは置換ノードの処理のみ。1手詰め。
image.png
image.png
image.png

例題2:「欠損値を線形補間する」

これを7ノード未満でやることにチャレンジ。

実戦ではこういうケースでは集計ノードをうまく使えないか考えます。
色々考えて、6ノード(6手詰め)で出来ました。
image.png

まず新規フィールド作成ノードで、sectionとして集計する区間にラベルをつける。nullと非nullの区間ごとにカウントアップさせます。
image.png

集計ノードでsection毎にTemperatureの最小と最大を集計します。このときに件数Record_Countも出しておきます。
image.png

次の新規フィールド作成ノードがポイントで、null区間で加算する差分値diffをここで計算してます。CLEM式の意味は、1レコード後ろの最小値と1レコード前の最大値の差分(これがnull区間で埋めるべき値の幅)を、レコード件数で割って1レコードあたりの差分値としています。
image.png

あとはこれを本流に結合して、結合で順番が狂ってしまったレコードをTimeの昇順でソートした後、Temperatureを置換ノードでnullの区間に「1つ前のレコード+diff」として埋めます。
image.png

完成!
image.png

不要列を消すフィルターノードを入れたら7手になっちゃいますが、お題はTemperatureの補完なので、これでヨシとします。


(2021/3/19追記) 次のブログで紹介されました。ありがとうございます。5手詰できる猛者の登場に期待します。
https://www.ibm.com/blogs/solutions/jp-ja/modeler-tips-03/

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?