【Tableau】(Ord8)8. HandsOn - Advanced I解説

Q1.売上推移・製品別売上・カテゴリ別累積売上を見たいのですが、それぞれのチャートをなるべく広いスペースを使って1画面内で切り替えながら表示したいです。

パラメータ・垂直コンテナ

 

Q2.データ内の最も新しい日付を基準日としたとき、最終購入日から基準日までの日数が60日未満の顧客は何名いるでしょうか?

LOD計算(Level of Detail) 
FIXED関数 顧客ごとの最終購入日・最も新しい日付(基準日)
DATEDIFF関数  顧客ごとの最終購入日と最も新しい日付(基準日)の差

 

Q3.顧客の購入回数別で、最も顧客数が多い購入回数はどれですか?
購入回数はオーダーIdの個別カウントで算出することができます。

(OP問題)1回のオーダーにおける金額の平均が高いのは何回購入している顧客ですか?

FIXED関数 顧客ごとの購入回数
WINDOW_MAX関数 最大値を色付けする
INCLUDE関数 顧客ごとの1回のオーダーあたりの売上を出す(細かい粒度を取り出す時に使用) 

 

Q4.顧客ごとの合計売上を見たとき、どの金額レンジ(10万円単位)の顧客が多いでしょうか?

FIXED関数 顧客ごとの合計売上
顧客ごとの合計売上の10万円単位のビン

 

Q5.各顧客を初回購入年毎にまとめて、オーダー年毎の売上を割合で表現してください。2016年の売上の何%が2013年からの継続顧客で占められているでしょうか?
またその結果を見て、スーパーストアに潜む課題について言及してください。
なお、割合は1年分を100%として計算してください。

FIXED関数 顧客ごとの初回購入日
100%割合表示 簡易計算”合計に対する割合”

 

Q6.初めて購入した顧客が、2回目に購入してくれるまでに何四半期空いていることが多いですか?顧客ごとの初回購入四半期ごとに見せてください。

FIXED関数 顧客ごとの初回購入日
IIF関数 2回目以降の購入日
FIXED関数 2回目の購入日 ※2回目以降の購入日をMINでとる
DATEDIFF関数 初回購入日と2回目購入日の差(四半期表示)

 

(OP問題)同じ分類で顧客1名あたりの売上が大きいのはどのグループでしょうか。
結果を元に、最低でも2回目の購入をどのくらいまでの期間中に行ってもらうべきか教えてください。

FIXED関数 顧客ごとの合計売上←これをメジャーに変換して反映

 

Q7.購入月(年は除く)と曜日の組み合わせで、1日あたりの売上平均が高い組み合わせを教えてください。

INCLUDE関数 1日あたりの売上

(OP問題)LOD表現を使わないで出す方法も考えてみましょう。

SUM([売上])/COUNTD([オーダー日])

 

Q8.年 四半期ごとに、「カテゴリ」で「売上」の差を表示しています。 
この差の大きさにより年 四半期をソートしたいです。ソートは選択した「カテゴリ」に応じて変わりますが、3つのカテゴリは同時に表示しておいてください。
(選択していないカテゴリのものは選択したカテゴリの降順で並んでいればよいです)
ヒント: ディメンションのソートでは表計算を使用できません。  

ソート用のパラメータを作成

EXCLUDE関数 ソート用パラメータを選択したら、その売上が表示されるようにする。
       それ以外の売上は除外。
      それ以外のカテゴリは選択されたカテゴリの降順になるように並ぶ。

 

Q9.顧客別の購入間隔の平均(初回購入~最終購入の月数÷購入回数)ごとの顧客数と
売上を見てください。売上がもっとも高い購入間隔を目標の購入間隔としたとき、現在最も人数の多い購入間隔のメンバーに対し、何か月間隔を縮めるような施策を打てばよいですか?

FIXED関数 顧客ごとの初回購入日
FIXED関数 顧客ごとの最終購入日
DATEDIFF関数 初回購入日と最終購入日の差(月表示)
ROUND関数 端数をまとめる計算式

 

Q10.スーパーストアでは新規顧客獲得に苦戦しているという問題を発見しました。
新規顧客獲得が比較的進んでいる地域※を見つけ出し、その施策を全国に展開したいと考えています。
年月ごとの新規獲得顧客の累計推移を見たとき、最終月に第1位で着地している地域はどこでしょうか?
また、その地域はいつから第1位でしょうか?
その頃に始めたマーケティングの内容を確認したいと思っています。

※地域のとりかた
顧客の住所が誤っていたため「Customer_Master.csv」に
以下リンクの「地方の情報付き都道府県リスト」を結合してください。

コピペ可能な都道府県リスト(地方区分付き) #Tableau - Qiita

Customer_Master.csvをクロスデータ結合
テキストデータ(都道府県リスト)のクロスデータ結合

FIXED関数 新規顧客

 

 

Q11.スーパーストアでは利益確保の観点から、サブカテゴリごとに平均割引率が基準値15%以上にならないように指導されています。
しかしながらこの4年を通して平均割引率を算出したとき、いくつかのサブカテゴリが15%以上になってしまっているようです。
割引率がオーバーした原因として、基準値以上割引をしているメーカーはいくつあるでしょうか?
たくさんのメーカーが基準値以上割引しているために起こっているのか、どこかひとつのメーカーが大きく割引しているために全体的に割引率が上がってしまっているのか一目で確認できるようにしてください。

なお、サブカテゴリごとの平均割引率で見たときには15%以上ではないけれども、平均割引率15%以上のメーカーが同等程度存在しているサブカテゴリがあれば、そのサブカテゴリと対処すべきメーカーを教えてください。

※メーカーの情報はExcelに入っていないので、「サンプル - スーパーストア - メーカー情報.tdsx」を使用してください。

メーカーデータのプライマリグループの作成

FIXED関数 サブカテゴリ単位の各メーカーの平均割引率
IIF関数 サブカテゴリ単位の各メーカーの平均割引率が15%を超えていたらメーカー名表示
メーカーの表現の仕方

 

ーーーーーーーーーーーーーーーーーーーー

Q1

売上推移・製品別売上・カテゴリ別累積売上を見たいのですが、それぞれのチャートをなるべく広いスペースを使って1画面内で切り替えながら表示したいです。

〇完成イメージ

ダッシュボード上でパラメーターで切り替えられるようにする。



①パラメーター作成



②同時にパラメーターの計算式も作成

 

③パラメーターをワークシート上に表示させる。今開いているワークシートの名称にパラメーターを合わせる。

 

④計算フィールドで作成した「グラフの切り替え」をフィルター内に入れる。すべての値を選択する

 

1-1のままOKを押す


不連続にして、

1をクリックしてOK

 

この状態にする。パラメーター「1」に売上推移のワークシートが紐づく。

 

⑤残り2つのワークシートも同様にパラメータを紐づける

「3」にカテゴリ別累積売上

 

「2」に製品別売上

 

ダッシュボード上でパラメーターを表示

パラメーターで切替わるようになる。

 

⑦新たなダッシュボードを作成し、垂直コンテナーを入れてから3枚のワークシートを入れてパラメーターで切り替えると、1枚ずつ表示される

 

ーーーーーーーーーーーーーーーーーーーー

Q2.データ内の最も新しい日付を基準日としたとき、最終購入日から基準日までの日数が60日未満の顧客は何名いるでしょうか?

〇完成イメージ

 

①顧客ごとの最終購入日(オーダー日のMAX関数使用)を計算フィールドで作成

FIXED関数を使用する。ディメンションに表示されるようにする。

{ FIXED [顧客 Id]:MAX([オーダー日])}

 

ディメンションに作成される。

 

②データ内の最も新しい日付(基準日)をディメンションに表示されるようにする。

FIXED関数を使用する。

{ FIXED:MAX([オーダー日])}

ディメンションに作成される。

 

③顧客ごとの最終購入日と基準日との差を出す。

DATEDIFF関数を使用する

DATEDIFF('day',[顧客ごとの最終購入日],[最も新しい日付(基準日)])

 

④作成した差の計算フィールドでビンを作成。60日間で区切る

 

⑤顧客IDと並べて完成

ーーーーーーーーーーーーーーーーーーーー

 

Q3.顧客の購入回数別で、最も顧客数が多い購入回数はどれですか?
購入回数はオーダーIdの個別カウントで算出することができます。

〇完成イメージ

 

①顧客ごとの購入回数を出す

{ FIXED [顧客 Id]:COUNTD([オーダー Id])}

 

②顧客IDと並べる

WINDOW_MAX(COUNTD([顧客 Id]))=COUNTD([顧客 Id])

色付けする

 

ーーーーーーーー

(OP問題)1回のオーダーにおける金額の平均が高いのは何回購入している顧客ですか?

〇完成イメージ



前提としてオーダーIDと顧客IDを比べたときに、1つのオーダーIDには複数の顧客IDが存在する。

つまり1つのオーダーIDに対して平均売上を出しても、複数の顧客の平均売上となってしまう。

①その時はINCLUDE関数を使用する。INCLUDE関数は顧客IDを考慮してオーダーIDごとの合計売上を表示できる。(粒度を細かく区分して売上合計を表示する)

1オーダーあたりの売上(INCLUDE)

{ INCLUDE [オーダー Id]:SUM([売上])}

 

INCLUDE関数でも作成できるが、 FIXED関数でも表示できる。

顧客IDとオーダーIDと売上の組み合わせでFIXED関数を使用する

1オーダーあたりの顧客別売上(FIXED)

{ FIXED [顧客 Id],([オーダー Id]):SUM([売上])}

 

INCLUDE関数で作成した1オーダーあたりの顧客別売上と

FIXED関数で作成した1オーダーあたりの顧客別売上が同額になっているのがわかる

 

②先ほど作成したダッシュボードに移り、1オーダーあたりの顧客別売上を平均表示にしていれる。この時、INCLUDE関数で作成したものとFIXED関数で作成したものとどちらでもよい


③色付けして終了

WINDOW_MAX(AVG([1オーダーあたりの売上(INCLUDE)]))=AVG([1オーダーあたりの売上(INCLUDE)])

 

ーーーーーーーー

Q4.顧客ごとの合計売上を見たとき、どの金額レンジ(10万円単位)の顧客が多いでしょうか?

〇完成イメージ

 

①顧客ことの売上の組み合わせなのでFIXED関数を使用する

{ FIXED [顧客 Id]:SUM([売上])}

 

②作成した顧客ことの売上合計の計算フィールドのビンを作成。

10万ごとで区切る

 

並べて完成。

 

ーーーーーーーー

Q5.各顧客を初回購入年毎にまとめて、オーダー年毎の売上を割合で表現してください。2016年の売上の何%が2013年からの継続顧客で占められているでしょうか?
またその結果を見て、スーパーストアに潜む課題について言及してください。
なお、割合は1年分を100%として計算してください。

〇完成イメージ

 

①初回購入日をFIXED関数で作成

{ FIXED [顧客 Id]:MIN([オーダー日])}

 

②初回購入日と売上とオーダー日を配置

 

③100%割合表示にする

合計に対する割合

 

表(横)に表示する

 

ーーーーーーーー

Q6.初めて購入した顧客が、2回目に購入してくれるまでに何四半期空いていることが多いですか?顧客ごとの初回購入四半期ごとに見せてください。

 

〇完成イメージ

①初回購入日をFIXED関数で作成

{ FIXED [顧客 Id]:MIN([オーダー日])}

 

②2回目以降の購入日を以下のように出す

IIF関数を使用する。オーダー日が初回購入日より大きいとき、オーダー日を表示させるという計算式

IIF([オーダー日]>[顧客ごとの初回購入日],[オーダー日],NULL)

 

③2回目の購入日を以下のように出す

2回目以降の購入日のグループの中の最小値が2回目購入日なので、FIXED関数で2回目以降の購入日のMINを使う

{ FIXED [顧客 Id]:MIN([顧客ごとの2回目以降の購入日])}

 

④初回購入日から2回目購入日までの日数、且つ、その日数を四半期表記にする計算式はDATEDIFF関数を使用する。四半期はquaterを使用する

DATEDIFF('quarter',[顧客ごとの初回購入日],[顧客ごとの2回目購入日])

 

⑤縦軸に顧客ごとの初回購入日の四半期表示と
 横軸に初回購入日から2回目購入日までの差(四半期)をディメンション形式で並べる顧客IDで色付け・グラフの形を四角にして、ラベルもつける

 

これをみると初回購入日から0四半期で購入しているのがわかる。

 

(OP問題)同じ分類で顧客1名あたりの売上が大きいのはどのグループでしょうか。
結果を元に、最低でも2回目の購入をどのくらいまでの期間中に行ってもらうべきか教えてください。

〇完成イメージ

①先ほど作成した顧客ごとの売上合計をメジャー側に変換する

 

②メジャーに変えたらそのままドラックする

③顧客ごとの売上と初回購入日と2回目購入日の差で、それぞれラベルが出るようにする。

 

④メジャーバリューごとに色を変える。別々の凡例を使用

 

ーーーーーーーー

Q7.購入月(年は除く)と曜日の組み合わせで、1日あたりの売上平均が高い組み合わせを教えてください。(LOD表現使うパターン)

〇完成イメージ

①1日あたりの売上をINCLUDE関数で計算する

オーダー日ごとの売上

{ INCLUDE[オーダー日]:SUM([売上])}

 

②月と曜日を並べる

 オーダー日ごとの売上を平均にしていれる

(OP問題)LOD表現を使わないで出す方法も考えてみましょう。

〇完成イメージ

 

①オーダー日ごとの売上をLOD表現を使用しないで作成する

すでに平均になっている

SUM([売上])/COUNTD([オーダー日])

 

②Q7と同様にならべる

 

ーーーーーーーー

Q8.年 四半期ごとに、「カテゴリ」で「売上」の差を表示しています。 
この差の大きさにより年 四半期をソートしたいです。ソートは選択した「カテゴリ」に応じて変わりますが、3つのカテゴリは同時に表示しておいてください。
(選択していないカテゴリのものは選択したカテゴリの降順で並んでいればよいです)
ヒント: ディメンションのソートでは表計算を使用できません。  

 

〇完成イメージ

ソート用カテゴリのパラメータを作成して、パラメータをいじると対象のカテゴリが降順になり、その他のカテゴリは選択されたカテゴリの降順になるように並ぶ。

 

①スターターからステップドカラーを4つに分ける状態にする。

 

②ソート用のパラメータを作成する

 

③EXCLUDE関数を使用して、ソート用パラメータを選択したら、その売上が表示されるようにする。それ以外は除外という計算式を使用する。

{ EXCLUDE[カテゴリ1]:SUM(IF [カテゴリ1]=[ソート用パラメータ] THEN [売上] END)}

 

④作成したソート用売上パラメータを表示し、ソート用売上の計算式を行に挿入し,

簡易計算で差にして、ディメンションにする。

 

ーーーーーーーー

Q9.顧客別の購入間隔の平均(初回購入~最終購入の月数÷購入回数)ごとの顧客数と
売上を見てください。売上がもっとも高い購入間隔を目標の購入間隔としたとき、現在最も人数の多い購入間隔のメンバーに対し、何か月間隔を縮めるような施策を打てばよいですか?
 

〇完成イメージ

1か月縮める施策を打てばよい

 

①顧客ごとの初回購入日をFIXED関数で作成

{ FIXED [顧客 Id]:MIN([オーダー日])}

 

②顧客ごとの最終購入日(オーダー日のMAX関数使用)をFIXED関数で作成

{ FIXED [顧客 Id]:MAX([オーダー日])}

 

③初回購入日と最終購入日の差を月で出す

 DATEDIFF('month',[顧客ごとの初回購入日],[顧客ごとの最終購入日])

 

④顧客別の購入間隔の平均(初回購入~最終購入の月数÷購入回数)を

ROUND関数で出す。(ROUNDは端数をまとめる計算式)

ROUND([初回購入日と最終購入日の差(月) ]/[顧客ごとの購入回数])

 

⑤顧客IDと売上を並べる。各顧客の購入間隔平均も並べる

 

Q10.スーパーストアでは新規顧客獲得に苦戦しているという問題を発見しました。
新規顧客獲得が比較的進んでいる地域※を見つけ出し、その施策を全国に展開したいと考えています。
年月ごとの新規獲得顧客の累計推移を見たとき、最終月に第1位で着地している地域はどこでしょうか?
また、その地域はいつから第1位でしょうか?
その頃に始めたマーケティングの内容を確認したいと思っています。

※地域のとりかた
顧客の住所が誤っていたため「Customer_Master.csv」に
以下リンクの「地方の情報付き都道府県リスト」を結合してください。

コピペ可能な都道府県リスト(地方区分付き) #Tableau - Qiita

〇完成イメージ

 

Customer_Master.csvをクロスデータ結合で繋げる

 

②顧客IDが文字列にどちらのファイルもなっていることを確認し、共通キーを設定



 

③地方区分付き都道府県リストをコピー

コピペ可能な都道府県リスト(地方区分付き) #Tableau - Qiita

 

④データソース上に貼り付け

 

⑤フィールド名を自動生成するにチェック

⑥新しいワークシートに同じデータリストを貼り付け

 

⑦列タイトルが北海道/北海道になってしまっているので、右クリックしてフィールド名を自動生成にする

 

⑧カスタム分割をクリック

 

 /スラッシュを入力し分割を最後にし、スラッシュ以降の都道府県が表示されるようにする。

 

都道府県が生成されたら、編集をクリックし、都道府県を生成するために計算された計算式をコピーする

 

⑪Customer_Master.csvクリップボード都道府県を紐づける

 

⑫下記のようになったら、

注文とCustomer_Masterは顧客IDで紐づけられている状態
Customer_Masterとクリップボードリストは都道府県で紐づけられている状態

 

クリップボードリスト側で出てきたリストをカスタム分割にして、地方を取り出す

 

⑮新規顧客をFIXED関数で出す。

{ FIXED [顧客 Id]:MIN([オーダー日])}=[オーダー日]

初回購入日をオーダー日とイコールになったら真を返すという計算式。

真だったら新規顧客で、偽だったら既存顧客となる

 

⑯オーダー月・顧客ID・新規顧客で並べる

 

⑰フィルターに新規顧客を入れ、真(新規顧客)のみを表示

 

⑱地方で色分けして完成

 

Q11.スーパーストアでは利益確保の観点から、サブカテゴリごとに平均割引率が基準値15%以上にならないように指導されています。
しかしながらこの4年を通して平均割引率を算出したとき、いくつかのサブカテゴリが15%以上になってしまっているようです。
割引率がオーバーした原因として、基準値以上割引をしているメーカーはいくつあるでしょうか?
たくさんのメーカーが基準値以上割引しているために起こっているのか、どこかひとつのメーカーが大きく割引しているために全体的に割引率が上がってしまっているのか一目で確認できるようにしてください。

なお、サブカテゴリごとの平均割引率で見たときには15%以上ではないけれども、平均割引率15%以上のメーカーが同等程度存在しているサブカテゴリがあれば、そのサブカテゴリと対処すべきメーカーを教えてください。

※メーカーの情報はExcelに入っていないので、「サンプル - スーパーストア - メーカー情報.tdsx」を使用してください。

 

〇完成イメージ

 

①メーカーをデータソース内に入れる

 

②サンプルスーパーストアのワークシート上で製品IDをいれプライマリデータソースにし、

メーカーのワークシート上で、製品IDの紐づけが完了しているか確認し、メーカーをいれる。(これでメーカーの抽出は完了)

 

③プライマリデータソース上でメーカーを使用したいのでプライマリグループの作成をクリックする

フィールド名をメーカーにして・・・

 

プライマリデータソース側にメーカーが出てくる

 

④平均割引率とサブカテゴリを並べて、15%でリファレンスラインを引き、15%以上になっているサブカテゴリを見てみる

 

⑤サブカテゴリ単位の各メーカーの平均割引率をFIXED関数で出す

サブカテゴリ単位の各メーカーの平均割引率

{ FIXED [メーカー],[サブカテゴリ1]:AVG([割引率])}

 

⑥サブカテゴリ単位の各メーカーの平均割引率が15%を超えていたら、メーカー名を表示する計算式をIIF関数作成。

メーカーごと平均割引率が15%を超えていたらメーカー名表示

IIF([サブカテゴリ単位の各メーカーの平均割引率]>=0.15,[メーカー],NULL)

 

⑦INDEXを列に追加。サブカテゴリは17個あるので、17段表示される

 

⑧メーカーごと平均割引率が15%を超えていたらメーカー名表示をINDEX側のマークに色で入れ、形を円にする。

 

⑨二重軸にして重ねる

割引率を棒にする

 

⑩INDEXの頭に「-」つけて、位置を入れ替える

 

⑪INDEXの幅を0.005の掛け算にして調整する

〇幅調整のため

 

⑫次を使用して計算で、「メーカーごと平均割引率が15%を超えていたらメーカー名表示」を選択

 

⑬軸の同期を選択

 

⑭割引率が15%以上のサブカテゴリに色付けして完了

AVG([割引率])>0.15