みた、こと。きいた、こと。

合言葉はSite Seeing

はてなグラフ(関数について)

ちょこちょこ趣味の世界で弄ってみた。なるほど、って感じ。
とはいえ、残念ながら今の段階で「関数チョーベンリ!」とまで言えないかもしれない。今の仕様ではしたくても出来ない計算が多いからだ。

はてなグラフ関数で気付いたこと

同一日付内の参照しか出来ない。
指定できる関数を単純化させるため?
関数で算出した値は計算に再使用出来ない。
計算順序の問題や循環参照が発生することを防ぐため?
日付に関する関数がない。
折角横軸が「年月日」で固定になっているのなら、やはり日付に関する関数は欲しい。

という問題があって、結局出来る計算といえば「BMI」とか「燃費計算」とかぐらいしかない。「バイオリズム」も関数のおかげで出来るんだが、これは本来のはてなグラフの趣旨とは異なっているような気がする。人のを見たり、比較する意味がないからだ。単純な周期なわけだし。

そこで、個人的な要望を挙げるならばこういうものが欲しい。

はてなグラフに要望したいこと

特殊関数の実装
LAG()
LAGとは遅延の意味だが、この関数は「前日の値」を取得する。LAG([体重])であれば、昨日の体重だ。もし、前日だけでなく指定可能に出来るのであれば、LAG2([体重])か、LAG([体重),2)という指定が出来るといい。これは2日前の体重という意味。*1
NVALID()
一定期間の値のあるデータ数を数える関数。()内に集計する日数を書く。NVALID(7)だと、過去7日間(今日含む)で値の入力があった日数を返す。移動平均などの算出に利用できる。
集計関数の実装
SUM()
一定期間の合計を出すための関数。()内に集計する日数を書く。SUM(7)だと、過去7日間(今日含む)の合計値という意味。
MAX()
一定期間の最大値を返す関数。()内に集計する日数を書く。0または指定なしは列全体。比率を求める際に利用。
MIN()
一定期間の最小値を返す関数。()内に集計する日数を書く。0または指定なしは列全体。MAX()と同様。
MEAN()
一定期間の平均値を返す関数。()内に集計する日数を書く。0または指定なしは列全体。ただし、SUM()/NVALID()でも同様の結果となるハズ。
日付関数の実装
DAYS()
指定した日にちからの経過日数を返す関数。内部に指定する日付形式は「日付と認識できる文字列」とする。
YEAR()
横軸(当日)の年を返す。
MONTH()
横軸(当日)の月を返す。
MDAY()
横軸(当日)の日を返す。
WEEKDAY()
横軸(当日)の曜日を返す。・・・使わないか?
日付参照の実装
DATA()
日付を指定したデータ参照。列名、年月日を指定する。基本的に過去(当日含む)の日付しか指定できない。
条件式の実装
不等号
()内で囲まれていて、中に不等号を含んだ条件式が記載されている場合、条件に一致する場合は1、それ以外は0を返す。条件式には「以上、以下、超、未満」が指定できること。
機能面での要望
関数列の計算利用
循環参照が発生する恐れがあることは認識した上での要望。単純な式なら必要は無いが、複雑な式となると一旦計算させた列を単独で作っておいて、それを別の列で式に利用した方がいいと思うので。
グラフ表示のON/OFF機能
一時的に計算項目としてのみ使いたい列も出てくる場合、グラフ化しなくてもよいものもあると思う。逆にしても意味がないものもあるという意味で。だから「公開/非公開」の他に「非表示」があってもいいかも。
タグ別編集
今後、どんどん増えていくだろうから。表示のフィルタという感じで。

まとまった「あいぽん」がないのと、難しそうなのでとりあえずアイデアとしては保留。って、コレを全部要望するのは流石に気が引ける。

でも、LAGはマヂで欲しいから提案しておくか。コレがあれば「対前日比」とか「単純な移動平均」なんかも作る基盤になる訳だし。かなり汎用性が高い関数だし。

追記(08/10)

という訳で、はてなアイデアに出してみた。といってもちょっとやっぱり難しいのかな〜という気持ちがあったりする。現在の編集画面の表示順が「未来→過去」になっているという事を考えると、私のやりたいことと逆順だよな〜という感じがあるからで。やっぱり1行1行処理しているんじゃなかろうか。

でもまぁ、ポイントが20ポイントも(!)戻ってきたので、10ポイントだけ出してみることにした。お願いします。>誰となく

*1:出来ればこれで計算したBMIもLAG([BMI])とかで指定できて「前日のBMI」とかも参照できればベスト!