Yarakawa.com ”Panel Chartを作る” からの学び① 関数の動き知ってerror対応方法を理解^^
師匠から「業務で活用できるのでパネルチャート勉強してみては?作り方はArakawaさんのnote(Yarakawa.com)で詳しい説明があるよ」と紹介いただいてから1ヶ月近くが経過。。。
年末の時間を使ってやっとチャレンジする事ができました^^
師匠がお話されていた通りYarakawa.comではとても分かりやすく説明されていたのですが、関数と触れる機会があまりない私には少しレベルが高すぎたので、自分なりにかみ砕いてまとめてみました。あくまで、個人メモレベルなので詳しい説明はYarakawa.comを参照ください^^;
では早速、パネルチャートを作成手順から。。。
※サンプルスーパーストアでサブカテゴリごとにパネルを作成し売上推移(年月)を表示。
1、パネルを格納するためのディメンションを作成(ROW,Column)
2、オーダー日(年月)を"列"へ、売上を"行"へ
3、パネル分けするディメンション(サブカテゴリ)をマーク詳細に入れる。
4、作成したディメンション(ROW,Column)を列・行へ
上手くパネルが作成できない場合は「次を使用して計算」でサブカテゴリを選択。
もとデータに欠落がなければこういったVIZになります。
※ わかりやすいようにサブカテゴリを色に設定。
※ また別の関数を用い、パネル内にサブカテゴリ名を表示させています。
上記を作成にあたり、一番頭を悩ませた
パネルを格納するためのディメンション作成について考え方をメモメモ。。。
【関数】
(列)INT((INDEX()-1)%(ROUND(SQRT(SIZE()))))
(行)INT((INDEX()-1)/(ROUND(SQRT(SIZE()))))
【考え方】
列は余りを、行は商を返しパネル位置を設定。 詳細はYarakawa.comを参照
まず分母から。
SIZEでパーティション内の行数(INDEXの最大値)を取得。取得した行数の平方根をSQRTで計算。計算結果をROUNDで丸めて
SIZEでパーティション内の行数(INDEXの最大値)を取得。取得した行数の平方根をSQRTで計算。計算結果をROUNDで丸めて
例)INDEX最大値=25 → 平方根=5
そして分子。
見ての通りINDEX-1。そのままです^^; −1の理由はYarakawa.comを参照
この数値を用いる事で、分母の数値が一辺あたりのパネル数となる正方形を目指したパネルチャートが作成できます^^
ですが。。。
データに欠損値(※)があった場合INDEXが意図した通り機能せず、こういったパネルチャートになります。。。
(※)欠損値とは:売上がない(NULL)columnがある事。
例)オーダー日が。。。
「年」の場合 :2019年のSUM(売上)がNULL
「年月」の場合:2014年11月のSUM(売上)がNULL
対処方法としてYarakawa.comで下記関数を共有いただいていますが、どうしても欠落値が理解できなくて、自分なりに調べてみました。
(共有いただいている解決方法)
1、オーダー日の「欠損値を表示する」を選択
2、SUM(売上)の代わりにZN(SUM(売上))+INDEX()-INDEX()を使い、欠損値に0を入れる。
(共有いただいている解決方法)
1、オーダー日の「欠損値を表示する」を選択
2、SUM(売上)の代わりにZN(SUM(売上))+INDEX()-INDEX()を使い、欠損値に0を入れる。
上記を適用すればパネルチャートは修正されますが、どのデータが欠損していて、なぜこの方法で解決できるのか理解できず。。。
この謎を解かない限りスキルアップはない!との思いで上手く表示されていないパネルチャートを見ていると、特定の年月だけズレていることを発見!!
でも、なぜ特定の年月だけズレているかわからなかったので、こんなVIZ作ってみました^^
すると。。。
そのズレと連動し、他カテゴリのINDEXがずれている(T . T)
なるほど!
なので、この欠損を埋めるために。。。
1、欠損している年月を表示
2、NULLの売上を「0」に変更
これが解決策である事が理解できました!!
謎がとけたので、あとは解決方法を理解するために「SUM(売上)」と「ZN(SUM(売上))+INDEX()-INDEX()」に加え、単純にNULLに0を入れる「ZN(SUM(売上))」の3つを比較するVIZを作成。
ZN(SUM(売上))も使えそうだけど、実際にパネルチャートに入れてみると上手く動きませんでした。。。サブカテゴリ名をパネル内に表示させる関数(INDEX()含む)と2重軸で表示させている時は上手くいったので、どこかにINDEX()が入っているといいのかな?と勝手な想像をふくらませては見たものの、これ以上は理解できそうにないので「ZN(SUM売上))+INDEX()-INDEX()」をフルに活用してみます^^
ここに至るまで結構時間がかかりましたが、苦手?な関数にチャレンジしたことで「??」を「!!」に変えることができ、それに加え「どんなに長い関数もパーツに分けて実際に動かす事で理解を深める事ができる!」を体感できて本当によかった^^
こんな貴重な経験を後押ししてくれた師匠。そして未知の世界であったパネルチャートをわかりやすくまとめてくださったArakawaさんに本当に感謝です!
2020年
WoW全クリアに加えYarakawa.comのテクニックも全クリアできるように引続きがんばるぞ〜!
※勉強用で作成したVIZはこちら→ Tableau Public
コメント
コメントを投稿