お世話になっております。
前回投稿したものから若干条件が変更したので改めて投稿致します。
私なりにNETでも調べてみたのですが
近似線の傾きの値を算出する方法で目にしたのは以下の数式でした。
a=(ΣXiYi-nX'Y')/(ΣXi^2-nX'^2)
これを当てはめれば良いのでしょうか。
行いたいのは添付したワークシートで売上の上昇度、傾きの値を算出する方法です。
DATEDIFFの期間単位はdayとしています。
解り難いかもしれませんがどうぞ宜しくお願い致します。
ご不明な点はお知らせ願います。
やはり、様々な条件によって数式の変更が必要でした。
この場合は、月か日かではなくて、Null 値がどう計算されるかによって生じる差が大きかったように思います。
(途中経過は全部掌握できないので詳細は分かりません)
それと、ソートは難しそうです。代わりに、傾きの大きいものを緑でというように色分けなら可能かと思います。
それと、LODを使用しているので、「DIFF_OF_DAY」や、「STORE_ID」でフィルタする場合、Context にしてください。
参考 Tableauの処理の順番を知る(Query Pipeline) | Tableau Padawan's Tips & Tricks
計算式に関しては、
a=(ΣXiYi-nX'Y')/(ΣXi^2-nX'^2)
と
は同じものだと思います。参考 _: ŏ 搄 ʂ̓ o (式の7,8)
下の方が使いやすいかと思ったので、下のを使ってます。
今ケースの最終的な計算式は ↓ こうなりました。
Null の関係だと思いますが、一部のカテゴリに関して、傾向線との数値に差が見られますが、一覧した限り、問題になるほどのものではありませんでした。
試行錯誤でやってるので、最終的にはもう少しきれいにできるかも知れませんが、とりあえず動いたところでやめてます。
カテゴリ以外のFieldを用いて同様のことをする場合、「カテゴリ」のところをそのFieldに置き換えればできると思いますが、実際のところはやってみないとわかりません。
[Trend _ Slope 2]
window_sum
(
(MAX([DIFF_OF_DAY])-(attr({fixed[カテゴリ]: min([DIFF_OF_DAY])})+attr({fixed[カテゴリ]: max([DIFF_OF_DAY])}))/2)
*(SUM([売上])-attr({fixed[カテゴリ] : sum([売上])})/attr({fixed[カテゴリ] : countd([DIFF_OF_DAY])}))
)
/
window_sum
(
(MAX([DIFF_OF_DAY])-(attr({fixed[カテゴリ]: min([DIFF_OF_DAY])})+attr({fixed[カテゴリ]: max([DIFF_OF_DAY])}))/2)
^2
)
グラフのシートはおまけです。詳細は紙面の影響(笑)で割愛しますが、「Slope Label」の計算式がややこしくなってます。
Nullの兼ね合いで、 いちばん左端/(右端)に[Trend _ Slope 2] を表示させたかったのですが、出来なかったので、最大値の横に表示させるようにした結果です。
[Slope Label]
if sum([売上])
= attr({fixed [カテゴリ]:max({fixed[カテゴリ],[DIFF_OF_DAY]:sum([売上])})})
then "["+str(round([Trend _ Slope 2],2))+"]"
end
村上