【Tableau】DATASaber:HandsOn-Advanced ll(Ord9)解説
はじめによんでください。
kaodora.hatenablog.com
Q1
Ord9(1) pic.twitter.com/FXdqUJQIB1
— 動画掲載用 (@Kaodoramichan) 2021年1月18日
サブカテゴリごとの売上年推移を作成します。
サブカテゴリをフィルターに入れてテーブルに絞ります。
簡易表計算から前年比成長率(差の割合)の基準の値を2013年、または最初の値に設定します。
Q2
Ord9(2)-1,2 pic.twitter.com/eVlA7nlp2A
— 動画掲載用 (@Kaodoramichan) 2021年1月18日
都道府県の利益累計(簡易表計算)を出します。向きは表(横)です。
サブカテゴリをフィルターに入れて「椅子」のみにします。
利益の降順に並び替えます。
WINDOW_MAX(RUNNING_SUM(SUM([利益])))=RUNNING_SUM(SUM([利益]))
表内の利益累計最大値が利益累計と一致したら、真、それ以外は偽ね
という上の式を色に入れます。
すると最大値に色がつき、利益累計が最大になる都道府県とその利益の値を確認することができます。
Ord9(2)-3 pic.twitter.com/m68P3vRH5Y
— 動画掲載用 (@Kaodoramichan) 2021年1月18日
最大値の色を外します。
地域を色に入れます。すると棒グラフの形が変わってしまいました。
先ほどの利益の降順で都道府県は並んでいます。計算の向きは表(横)です。
ではこのグラフは何を表しているのでしょうか。
色に地域を足すということは、集計粒度をビューに足しているということですよね。
ここでは地域での集計が追加されて、地域ごとに累計がされているのです。
例えば、大阪の利益が次に累計されるのは、次に表に存在する兵庫県の時です。
つまりは関西地方の中だけで累計されていくのです。最終的な結果は三重県の数字になります。
この問題の場合、これでは困りますね。
全体の都道府県の累計の中で地域特性があるのかを見たいのでした。
そのために、地域を属性にします。
属性とは、その値に対して属性が1つであればその値が、複数であれば*が返されるというものでした。
大阪は関西地域という値しか持っていませんね(他の地域には属していない)
そのため、その値(大阪)が返されるというわけです。
(よくわかんないわっていう方は以下の記事を読んでくださいね)
kaodora.hatenablog.com
属性には区切らずに(集計せずに)、ラベルとして持っておきたい時に使うというものもありました。地域では区切りたくないけど、地域で色に分けたい!のでまさに属性を使う時です!!
形が戻りました。地域特性がないことがわかります。
あとは、KTさんが動画で作られていたものえを作ります。
グラフチャートをガントチャートにして、合計(利益)をサイズに入れるとそれぞれの値の上に棒グラフが乗っかります。当たり前ですが、0に近づくにつれ小さくなりますね。下向きの方がいいな〜ということで、サイズの合計(利益)にマイナスをつけます。
すると、グラフが下向きになります。
最後に-合計(利益)の昇順に並び替えもします。
Q3
Ord9(3)-1,2 pic.twitter.com/egY7bDAfdF
— 動画掲載用 (@Kaodoramichan) 2021年1月18日
年四半期ごとの売上をサブカテゴリのランキングにします。(簡易表計算)
オーダー日、合計(売上)をそれぞれ不連続にします。
一つ一つを区切りたいためです。
kaodora.hatenablog.com
この時点でも回答を得られますが、見やすくするためにもう一工夫です。
チャートを棒グラフにします。こぼ棒グラフを広げるために
MIN(1)を列に入れます。
MIN関数は()内の最小値を返す関数です。つまり、MAX(1)でも代用可能。
MIN(1)の軸を固定にして、終了値を1にします。
(Tableauはグラフの先端が見えるように、軸は実際の値よりも大きい値が終了地になっています。)
サブカテゴリを色、とテキストに入れて回答を確認します。
Ord9(3)-3 pic.twitter.com/8jFZsft4wE
— 動画掲載用 (@Kaodoramichan) 2021年1月18日
色にカテゴリを入れます。
すると、カテゴリというディメンションで分けられてしまうので
カテゴリを属性にします。
すると、カテゴリで区切らずにラベルとして色で分けることができます。(Q2と同じ原理)
Q4
Ord9(4)-1 pic.twitter.com/VC1jN1P85A
— 動画掲載用 (@Kaodoramichan) 2021年1月18日
顧客(顧客名)ごとの利益を出します。
顧客名をフィルターに入れて、条件から上位10位を出し、利益TOP10顧客のセットを作成します。同様に利益WORST10顧客のセットも作成し、両者を選択して結合セットを作成します。
結合セットをフィルターに入れて、利益TOP10とWORST10の顧客のみビューに表示させます。
列に売上を入れます。
利益TOP10顧客セットを行に入れます。INはTOP10、OUTはWORST10の顧客と別名の編集から入れます。
Q4-1の回答を確認することができます。
Ord9(4)-2 pic.twitter.com/rSeyX3t75W
— 動画掲載用 (@Kaodoramichan) 2021年1月18日
先ほど列に入れた売上を、簡易表計算から差にして基準を最初の値(利益TOP1の顧客)にします。A4-2の回答を確認することができます。
Ord9(4)-3 pic.twitter.com/mNeiMjuIKe
— 動画掲載用 (@Kaodoramichan) 2021年1月18日
利益のランクを作成します。
簡易表計算からペイン(下)のランクにして、並び順を昇順にします。
降順だと利益の多さ順に並ぶことになりますが、問題にはWORST何位か(下から何番目か)を聞かれているためです。Q4-3の回答を確認することができます。
Q5
Ord9(5) pic.twitter.com/Ga48NZEvk6
— 動画掲載用 (@Kaodoramichan) 2021年1月18日
年四半期の売上推移を棒グラフで出します。
簡易表計算から表(横)の累計・最大値にします。すると最大値を更新した時にその値を返してくれます。
この表計算のかかった売上を行に複製して片方のチャーと円にし、二重軸にします。軸の同期は忘れずにしましょう。
INDEX()>1 AND RUNNING_MAX(RUNNING_MAX(SUM([売上])))=SUM([売上])
行数が1以上で(つまりは最初の値以外)で
表内の売上合計の累積最大値が売上合計と一致したら真、あとは偽ねという式です。
上の式を色に入れると、最大値を更新した時のみに色をつけることができます。
Q6
Ord9(6) pic.twitter.com/XpWPOC3UpG
— 動画掲載用 (@Kaodoramichan) 2021年1月18日
まずは利益率を作成します。もうお馴染みですね。
SUM([利益])/SUM([売上])
改めて確認したいからはこちらをどうぞ!
kaodora.hatenablog.com
そして、データ内の利益率をLOD計算で出します。
{SUM([利益])/SUM([売上])}
これも曖昧な方はこちらをどうぞ!
kaodora.hatenablog.com
利益率と利益率(全体)を複合グラフにします。
メジャーネームを列から取ると、グラフが積み上がりました。
メジャーネームを色とサイズに入れます。
そこでツールバーの分析からスタックマークをオフにすると、2つのグラフを積み上がらずに0から並びます。
テキストを表示させて、書式設定からパーセンテージにします。
違うシートにサブカテゴリごとの利益率を降順に並べます。
ダッシュボードで両シートを並べて、フィルターを除外にし、下位3位のサブカテゴリを選択すると回答を確認することができます。(Ord3Q1でやりましたね)
Q7
Ord9(7) pic.twitter.com/BZG0a3CJfr
— 動画掲載用 (@Kaodoramichan) 2021年1月18日
列にオーダー日(年) を入れて、売上と売上前年比成長率でサブカテゴリの散布図を作成します。
売上前年比成長率を色に入れます。
年を切り替えて表示できるようにしたいのですが、フィルターに入れるとオーダー日による表計算のため前年比成長率が表示されなくなります。
LOOKUP(MIN(DATEPART('year', [オーダー日])),0)
LOOKUP関数を使います。0行前のオーダー年最小値を返してね。
つまり、その年を数字で返してねというような感じです。
これをフィルターに入れると、前年比成長率を失わずにそれぞれの年を切り替えることができます。
2013年はいらないのですが、2013年を除外にしてしまうと2014年の前年比成長率が表示されなくなるので、2013年は非表示にします。
作ったシートをダッシュボードに入れて、画面のサイズをスマートフォンにします。
散布図は正方形になるようにしましょう。
Q8
Ord9(8) pic.twitter.com/PqVWpCJlGv
— 動画掲載用 (@Kaodoramichan) 2021年1月18日
出荷までにかかる日数をお馴染みのDATEDIFF関数で出します。
DATEDIFF('day',[オーダー日],[出荷日])
オーダー日と出荷日の差を日で出してね。
週ごとの出荷までにかかる平均日数を出します。
行の出荷までにかかる平均日数を複製し片方のチャートを円にして二重軸にします。
軸の同期をします。
アナリティクスペインから-3,3の標準偏差を入れます。
AVG([出荷までにかかる日数])>
WINDOW_AVG(AVG([出荷までにかかる日数]))+WINDOW_STDEV(AVG([出荷までにかかる日数]))*3
[出荷までにかかる日数]平均が
表内の[出荷までにかかる日数]平均の平均に、[出荷までにかかる日数]平均の標準偏差3を足したものより大きければ真、それ以外は偽ね。というややこしやな式ですが、
つまりは標準偏差3を超えたら真、それ以外は偽というわけです。
上の式を色に入れます。もう回答がわかりますね!
Ord9(8)-2 pic.twitter.com/vgrDyL8aHr
— 動画掲載用 (@Kaodoramichan) 2021年1月18日
違うシートに市区町村ごとの出荷までにかかる平均日数を出します。
地域特性を見たいので、列と色に地域を追加します。
ダッシュボードにQ8-1で作成したシートとこのシートを並べます。
フィルターをかけて、標準偏差を超えた週を選択して原因となる市区町村、地域を確認します。
Q9
Ord9(9) pic.twitter.com/58jdQvosdN
— 動画掲載用 (@Kaodoramichan) 2021年1月19日
メーカー情報をブレンディングします。
オーダー日(年)をフィルターに入れて2016年に絞り、四半期ごとのメーカー売上推移を出します。
メーカーをフィルターに入れて、ワイルドカードで「s」の後方一致を設定します。
するとメーカー名が「s」で終わるメーカーに絞ることができます。
それぞれのトレンドを見たいので、軸の編集から独立した軸範囲にします。
最後の値を強調するためにこのような式を作ります。
IF LAST()=0 THEN SUM([売上]) END
もし、後ろから一つ目だったら売上合計を出してね。
これを列に追加して、合計([売上])と二重軸にします。
軸の同期をすると折れ線グラフと円がぴったり重なります。円の大きさを少し大きくして、最後の値のみテキストを表示させます。それでは回答を確認しましょう。
Q10
Ord9(10) pic.twitter.com/krMscA1rlU
— 動画掲載用 (@Kaodoramichan) 2021年1月19日
四半期ごとの売上を地域ごとの出して、これをランクチャートにします。
簡易表計算から地域のランクにします。
軸の編集から軸を反転させます。列の合計([売上])を複製して片方を円にします。
これらを二重軸にします。複製した方の軸も反転させましょう。軸の同期も忘れずにします。
地域を円の色に入れて、ランクを円のテキストに入れます。
地域を線のテキストに入れます。
最後に間のオーダー日を選択して除外すれば、売上開始当初(2013/1Q)と最終四半期(2016/4Q)でランキングの変動を見ることができます。
Q11
Ord9(11)ー1 pic.twitter.com/4sSigvQrjd
— 動画掲載用 (@Kaodoramichan) 2021年1月19日
カテゴリをフィルターに入れて、家電に絞ります。
週ごとの売上推移を棒グラフで出します。
基準となる値(今回は問題にあるように500,000)を超えたら色をつけるようにしたいのですが、可変にする必要があるためパラメーターを使います。
「閾値」という名前にします。そして、
SUM([売上])>=[閾値]
売上合計が閾値(今の値は500,000)を超えていたら真、それ以外は偽ね
という式を色に入れます。売上合計が500,000を超えた週に色がつきました。
IF [閾値判定] THEN PREVIOUS_VALUE(0)+1 ELSE 0 END
もし売上合計が閾値(今の値は500,000)を超えていたら、前の行の計算(つまり0)に1を足して返してね、という式です。
PREVIOUS_VALUE計算は最初の行は普通に計算されます。つまり最初の値は0になります。
上の式をテキストに入れると、閾値(500,000)を超える週数を数えることができます。
テキストの表示を最大値のみにすると、回答を得ることができます。
Ord9(11)ー2 pic.twitter.com/yXlTI3gMds
— 動画掲載用 (@Kaodoramichan) 2021年1月19日
IF [閾値判定] THEN PREVIOUS_VALUE(0)+(SUM([売上])-[閾値])
ELSE 0 END
もし売上合計が閾値(今の値は500,000)を超えていたら、前の行の計算に合計売上から閾値(500,000)を引いた数字を足してね。
PREVIOUS_VALUE計算は最初の行は普通に計算されます。つまり最初の値は、売上から閾値(500,000)を引いた値が返されます。
上の式をテキストに入れると回答を確認することができます。