😊

Tableau DATASaber チャレンジ振り返り(Ord8 編)

に公開

Tableau DATASaber チャレンジ振り返り(Ord8 編)

はじめに

今回は Ord8 を復習しました。
Ord8 では、LOD 表現がめちゃ難しく、理解に苦しんでいます。笑
まずは、 LOD 表現について整理するところからです。

Tableau の LOD 表現

Tableau では、通常、ディメンションに応じた集計を行っていますが、LOD 表現(Level of Detail Expressions) を利用すれば、データの集計レベルを異なる粒度で柔軟に集計することが可能となります。

LOD 表現が必要とされるケースは以下のような場合が考えられます。

  • 表示されているディメンションとは異なる粒度での計算が必要な場合
  • カスタム集計が複雑である場合
  • データフィルターの影響を避けたい場合

ちなみに、集計レベルには以下の 3 種類があります。

  1. FIXED ・・ 固定した粒度で集計(フィルターの影響を受けない)
  2. INCLUDE ・・ ビューに含まれるディメンションにさらに粒度を追加
  3. EXCLUDE ・・ ビュー内のディメンションを取り除き粒度を粗くする

1. FIXED

ビューのディメンションに依存せず、指定したディメンションに基づいて一定の粒度で集計を行います。
ビュー(グラフや表)のコンテキストには依存しません。

  • 構文

    {FIXED [ディメンション]: 集計関数([メジャー])}
    
  • {FIXED [都道府県]: SUM([売上])}
    
    • 「国ごとの売上合計」が計算
    • ビューのフィルターに左右されない

2. INCLUDE

既存のビューのコンテキストに新しいディメンションを含める形で、粒度を詳細化した集計を行います。
ビューのレベルに追加のディメンションを含める形で集計されます。

  • 構文

    {INCLUDE [ディメンション]: 集計関数([メジャー])}
    
  • {INCLUDE [製品名]: SUM([売上])}
    
    • ビューの粒度に「製品名」というディメンションを追加して、「製品名単位で売上集計」を計算
    • ビューのフィルターに影響を受ける

3. EXCLUDE

ビューのコンテキストから指定したディメンションを取り除き、その粒度を粗くして集計を行います。
ビューのディメンションから特定の粒度を取り除く形で集計されます。

  • 構文

    {EXCLUDE [ディメンション]: 集計関数([メジャー])}
    
  • {EXCLUDE [製品名]: SUM([売上])}
    
    • ビューのコンテキストから「商品」を除き、「商品単位ではない売上合計」を計算
    • ビューのフィルターに影響を受ける

Q1

売上推移・製品別売上・カテゴリ別累積売上を見たいのですが、それぞれのチャートをなるべく広いスペースを使って表示したいです。
1画面内で切り替えながら表示できませんか?
使用したテクニックを選択してください

回答選択肢
  • 二重軸、パラメーター
  • 二重軸、書式設定
  • レイアウトコンテナー、パラメーター
  • レイアウトコンテナー、書式設定

手順-1(売上推移)

  1. 列:「オーダー日(年)」「オーダー日(月)」
  2. 行:「カテゴリ」「利益」「売上」
  3. 色:「利益」「売上」
  4. 二重軸:「利益」(棒グラフ)「売上」(線グラフ)

手順-2(製品別売上)

  1. グラフ:「棒」
  2. 列:「カテゴリ」「サブカテゴリ」
  3. 行:「売上」
  4. 色:「売上」

手順-3(カテゴリ別累積売上)

  1. グラフ:「エリア」
  2. 列:「オーダー日(月)」
  3. 行:「売上」
  4. 色:「カテゴリ」

手順-4(ダッシュボード)

  1. パラメーター:「グラフ切替」(1:製品別売上・2:カテゴリ別累積売上・3:売上推移)
  2. 計算フィールド:「グラフ切替」
  3. フィルター:「製品別売上」(「グラフ切替(1)」)
  4. フィルター:「カテゴリ別累積売上」(「グラフ切替(2)」)
  5. フィルター:「売上推移」(「グラフ切替(3)」)
  6. ダッシュボード配置(レイアウトコンテナ内に各シートをタイトル非表示で配置)
  7. パラメータ表示

グラフ切替:売上推移 を選択

グラフ切替:製品別売上 を選択

グラフ切替:カテゴリ別累積売上 を選択

Q2

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

回答選択肢
  • 186人
  • 286人
  • 291人
  • 304人

手順

  1. 計算フィールド:「顧客の最終購入日」
    {FIXED [顧客 Id] : MAX([オーダー日])}
    
  2. 計算フィールド:「基準日」
    {MAX([オーダー日])}
    
  3. 計算フィールド:「顧客の最終購入日から基準日までの日数」
    DATEDIFF('day', [顧客の最終購入日], [基準日])
    
  4. ビン作成:「顧客の最終購入日から基準日までの日数」(ビンのサイズ 60)
  5. 列:「顧客の最終購入日から基準日までの日数」
  6. 行:「顧客Id」(個別のカウント)

Q3

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

回答選択肢
  • 1回
  • 2回
  • 5回
  • 6回

手順

  1. 計算フィールド:「顧客ごとの購入回数」
    {FIXED [顧客 Id]: COUNTD([オーダー Id])}
    
  2. ビン作成:「顧客ごとの購入回数」(ビンのサイズ:1)
  3. 列:「顧客ごとの購入回数」
  4. 行:「顧客Id」(個別のカウント)

【オプション問題】
1回のオーダーにおける金額の平均が高いのは何回購入している顧客ですか?

手順

  1. 計算フィールド:「1オーダーあたりの売上」
    {INCLUDE [オーダー Id]: SUM([売上])}
    
  2. 列:「顧客ごとの購入回数」
  3. 行:「1オーダーあたりの売上」

Q4

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

回答選択肢
  • 0~100,000
  • 100,000~200,000
  • 0~99,999
  • 100,000~199,999

手順

  1. 計算フィールド:「顧客ごとの購入金額」
    {FIXED [顧客 Id] : SUM([売上])}
    
  2. ビン作成:「顧客ごとの購入金額」(ビンのサイズ:10 万円)
  3. 列:「顧客ごとの購入金額」
  4. 行:「顧客Id」(個別のカウント)

Q5

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

回答選択肢
  • 65.30%
  • 27.37%
  • 5.75%
  • 1.58%

手順

  1. 計算フィールド:「顧客別初回オーダー日」
    {FIXED [顧客 Id]: MIN([オーダー日])}
    
  2. 列:「オーダー日(年)」
  3. 行:「売上」(表計算:合計に対する割合・セル)
  4. 色:「顧客別初回オーダー日」

Q6

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

回答選択肢
  • 2013年Q1に初めて購入し、同一四半期内に2度目の購入している顧客が最も多い
  • 2013年Q2に初めて購入し、同一四半期内に2度目の購入している顧客が最も多い
  • 2013年Q3に初めて購入し、1四半期後に2度目の購入している顧客が最も多い
  • 2013年Q2に初めて購入し、3四半期後に2度目の購入している顧客が最も多い

手順

  1. 計算フィールド:「顧客別2回目以降のオーダー日」
    IIF([オーダー日] > [顧客別初回オーダー日], [オーダー日], NULL)
    
  2. 計算フィールド:「顧客別2回目オーダー日」
    { FIXED [顧客 Id]: MIN([顧客別2回目以降のオーダー日])}
    
  3. 計算フィールド:「1回目と2回目の購入Qの差」
    DATEDIFF('quarter', [顧客別初回オーダー日], [顧客別2回目オーダー日])
    
  4. 列:「1回目と2回目の購入Qの差」(ディメンション・不連続)
  5. 行:「顧客別初回オーダー日(四半期)」(不連続)
  6. 色:「顧客Id」(個別のカウント)
  7. 別名編集:「NULL」→「2回目未購入」

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

手順

  1. ヒートマップへドラッグ&ドロップ:「C-顧客ごとの購入金額」
  2. 色:「メジャーバリュー」(別の凡例を使用)
  3. 凡例:色の編集(どちらかの凡例の色を変更)

Q7

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

回答選択肢
  • 5月、月曜日
  • 5月、土曜日
  • 12月、月曜日
  • 12月、木曜日

手順

  1. 計算フィールド:「日あたりの売上」
    {INCLUDE [オーダー日]: SUM([売上])}
    
  2. 列:「オーダー日(曜日)」
  3. 行:「オーダー日(月)
  4. 色:「日あたりの売上」

【オプション問題】
LOD表現を使わないで出す方法も考えてみましょう。

手順

  1. 計算フィールド:「日あたりの売上」
    SUM([売上]) / COUNTD([オーダー日])
    
  2. 列:「オーダー日(曜日)」
  3. 行:「オーダー日(月)
  4. 色:「日あたりの売上」

Q8

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

回答選択肢
  • INCLUDE
  • EXCLUDE
  • FIXED
  • LOD計算は使用しない

手順

  1. パラメータ:「カテゴリ(ソート用)」(文字列|家具・家電・事務用品)
  2. 計算フィールド:「売上(ソート用)」
    {EXCLUDE [カテゴリ]: SUM(IF [カテゴリ] = [カテゴリ(ソート用)] THEN [売上] END)}
    
  3. 列:「カテゴリ」「売上」
  4. 行:「オーダー日(四半期)」(不連続)「売上(ソート用)」(不連続)
  5. 表計算:「売上」(次との差|表(下)|前の)
  6. 表計算:「売上(ソート用)」(次との差|表(下)|前の)
  7. パラメータ表示

Q9

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

回答選択肢
  • 1か月
  • 2か月
  • 5か月
  • 6か月

手順

  1. 計算フィールド:「顧客別購入期間(月)」
    { FIXED [顧客 Id]: DATEDIFF('month', MIN([オーダー日]), MAX([オーダー日]))}
    
  2. 計算フィールド:「平均顧客別購入期間(月)」
    ROUND([顧客別購入期間(月)] / [C-顧客ごとの購入回数])
    
  3. 列:「平均顧客別購入期間(月)」(不連続)
  4. 行:「顧客Id」(個別のカウント)「売上」

Q10

スーパーストアでは新規顧客獲得に苦戦しているという問題を発見しました。
新規顧客獲得が比較的進んでいる地域※を見つけ出し、その施策を全国に展開したいと考えています。
年月ごとの新規獲得顧客の累計推移を見たとき、最終月に第1位で着地している地域はどこでしょうか?
また、その地域はいつから第1位でしょうか?
その頃に始めたマーケティングの内容を確認したいと思っています。
※地域のとりかた
顧客の住所が誤っていたため
「Customer_Master.csv」に以下リンクの「地方の情報付き都道府県リスト」を結合してください。
地方の情報付き都道府県リスト

回答選択肢
  • 2013年1月から関東が1位
  • 2014年6月から関東が1位
  • 2013年2月から近畿が1位
  • 2014年8月から近畿が1位

手順

  1. データ読み込み:「Customer_Mster.csv」
  2. データ接続:「注文」(顧客Id) - 「Customer_Master.csv」(顧客Id)
  3. サイトアクセス:地方の情報付き都道府県リスト
  4. コピー:「地方区分付き都道府県リスト」をクリップボードにコピー
  5. データソース:「データを接続として貼り付け」(フィールド名を自動に生成)
  6. データ接続:「Customer_Master.csv」(都道府県) - 「Clipborad_yyyymmddTxxxxxx.txt」(計算の編集)
    TRIM(SPLIT([F1], "/", -1))
    
  7. カスタム分割:「地域」「都道府県」に分割
  8. 列:「オーダー日(月)
  9. 行:「顧客Id」(個別のカウント|簡易表計算:累計カウント)
  10. 計算フィールド:「新規/既存」(別名 真:新規 偽:既存)
    {FIXED [顧客 Id]: MIN([オーダー日])} = [オーダー日]
    
  11. フィルター:「新規/既存」(新規)

Q11

[Bonus Question]
スーパーストアでは利益確保の観点から、サブカテゴリごとに平均割引率が基準値15%以上にならないように指導されています。
しかしながらこの4年を通して平均割引率を算出したとき、いくつかのサブカテゴリが15%以上になってしまっているようです。
割引率がオーバーした原因として、基準値以上割引をしているメーカーはいくつあるでしょうか?
たくさんのメーカーが基準値以上割引しているために起こっているのか、どこかひとつのメーカーが大きく割引しているために全体的に割引率が上がってしまっているのか一目で確認できるようにしてください。
なお、サブカテゴリごとの平均割引率で見たときには15%以上ではないけれども、平均割引率15%以上のメーカーが同等程度存在しているサブカテゴリがあれば、そのサブカテゴリと対処すべきメーカーを教えてください。
※メーカーの情報はExcelに入っていないので、「サンプル - スーパーストア - メーカー情報.tdsx」を使用してください。
サブカテゴリごとの平均割引率で見たときには15%以上ではないけれども、平均割引率15%以上のメーカーが同等程度存在しているサブカテゴリと対処すべきメーカーをそれぞれ当てはまるものすべて選んでください。(複数回答)

回答選択肢
  • 事務機器
  • 保管箱
  • 家具
  • 画材
  • コニカ
  • パナソニック
  • エプソン
  • Eldon
  • Rogers
  • Smead
  • Stanley
  • StarTech
  • そのようなサブカテゴリは存在しない

手順

  1. 計算フィールド:「割引率(平均)が15%以上」
    AVG([割引率]) >= 0.15
    
  2. 計算フィールド:「割引率が基準値を超えているメーカー」
    IIF({FIXED [サブカテゴリ],[メーカー]: AVG([割引率])} >= 0.15, [メーカー], NULL)
    
  3. 列:「割引率」(平均)
  4. 列:「-INDEX()*0.005」(「割引率が基準値を超えているメーカー」)
  5. 行:サブカテゴリ
  6. 二重軸:「-INDEX()*0.005」
  7. 平均線:テーブル|15%
  8. 色:「割引率(平均)が15%以上」
  9. 色:「割引率が基準値を超えているメーカー」

おわりに

まずは、Ord8 を改めてなぞってみましたが、まだまだ腹に落ちていないのがわかります。
Ord9 も含めて、しっかり復習しないとです。
ひとまず。。。

Tableau Public Viz Link: Ord8復習_maa16062025

Discussion