
Ord8 HandsOn - Advanced I
この設問のpointはLOD表現らしい。ちゃんと理解すれば難しくない!
ちなみに一番クリアに時間がかかったけど、間違えていたのは設問の意図の読み間違いだった、、、
LOD表現
LOD(Level of Detail):『どの単位でデータを集計するか』
とりあえず、前のクエリパイプラインを思い出す。

クエリパイプラインの覚え方
いろいろ所説あると思うが、私が覚えるならこんな感じ。
もっといい覚えかたあるよって人はコメント欄にどうぞ!
「チュウでコンプ、で、家目指しまひょ」

FIXED計算
FIXEDは、ビューの中で使われているディメンションと関係なく、
指定したディメンションでメジャーを集計する。
実際に使用する場合は、クエリパイプラインを見るとわかるように、
FIXED計算の後にディメンションを計算するため、作成した画面内のディメンションに対し、計算するかしないかを判断する必要がある。
FIXEDは便利だが、画面内のディメンションを考慮する必要があるので、
フィルターにディメンションを追加したらFIXEDの計算も変更する必要が
あるなどメンテナンスが不可欠であるため、INCLUDEやEXCLUDEで済むならそちらを推奨する。

INCLUDE計算
上記の関係のように、画面上のディメンションに「+」して計算をしたいディメンションを追加して計算する時に使用する。

EXCLUDE計算
上記の関係のように、画面上のディメンションから「ー」して計算から外したいディメンションを入れて計算する時に使用する。

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

ワークシート名ごとにパラメーターを作って、フィルターとワークシート名が一致しているときだけチェックを入れて、ダッシュボードにレイアウトコンテナーを入れて、ワークシートを入れればいいと解釈
パラメーターを作成する
計算フィールドを作成してパラメーターのみを入れる
各ワークシートにフィルターに入れて1:1の関係を作る
ダッシュボードにレイアウトコンテナー入れて青枠が表示されているときにワークシートを挿入する
タイトルを表示しないようチェックを外す(凡例も)






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

最も新しい日付=何にも影響を受けないMAX(オーダー日)、最終購入日=各顧客IDごとのMAX(オーダー日)とし、2つの日付の差を求める計算フィールドを作成し、その作った計算フィールドのビンを作成して個別のカウント(顧客ID)で集計すると解釈
最も新しい日付 { FIXED :max([オーダー日])}
最終購入日 { FIXED [顧客 Id]:max([オーダー日])}
2つの日付の差 DATEDIFF('day',[最終購入日],[最も新しい日付])
ビンを作成し列に入れる
行に個別のカウント(顧客ID)を入れる


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

購入回数=顧客IDごとの個別のカウント(オーダーID)とし、ビンを作成して顧客IDの個別のカウントで求めると解釈
顧客の購入回数 { FIXED [顧客 Id]:COUNTD([オーダー Id])}
顧客の購入回数でビンを作成し列に入れる
個別のカウント(顧客ID)を行に入れる


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

顧客ごとの合計売上=顧客IDごとのsum(売上)とし、ビンを10万単位で作成し、個別のカウント(顧客ID)で求めると解釈
顧客ごとの合計売上 { FIXED [顧客 Id]:sum([売上])}
ビンを10万円単位で作成し列に入れる
個別のカウント(顧客ID)を行に入れる

A4

ビンの範囲
ビンは画面上で見ると1、5、9と書かれた場合、
1の範囲:1~4
5の範囲:5~8
と見えてる数字は含まない
Q5
各顧客を初回購入年毎にまとめて、オーダー年毎の売上を割合で表現してください。2016年の売上の何%が2013年からの継続顧客で占められているでしょうか?またその結果を見て、スーパーストアに潜む課題について言及してください。なお、割合は1年分を100%として計算してください。

各顧客の最初の購入年を求め、合計(売上)を表計算で全体を100%のときの割合で求めると解釈
各顧客の最初の購入年 { FIXED [顧客 Id]:min([オーダー日])}
年(オーダー日)を列に入れる
各顧客の最初の購入年を色に入れる
合計(売上)を行にいれて表計算で合計に対する割合-特定のディメンション-各顧客の最初の購入年を選択


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

始めて購入した日と2回目購入した日を作成、初めてと2回目の日付の差を四半期'quarter’で求めてビンを作成し個別のカウント(顧客ID)が一番多いを求める(回答を見ると、2013年Q2に初めて購入し、2度目の購入が一番多い0は同一四半期内を示すから、、、)
初めて購入した日 { FIXED [顧客 Id]:min([オーダー日])}
2回目以降の購入日 IIF([オーダー日]>[初めて購入した日],[オーダー日],null)
2回目購入した日 { FIXED [顧客 Id]:min([2回目以降の購入日])}
2回目-初回 DATEDIFF('quarter',[初めて購入した日],[2回目購入した日])
2回目-初回のビンを作成し列に入れる
四半期(始めて購入した日)を行に入れる
個別のカウント(顧客ID)をテキストと色に入れる
マークを四角にかえる


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

購入月と購入曜日を列と行に入れて、1日当たりの売上平均で一番高いものを求めると解釈
1日当たりの平均 { INCLUDE [オーダー日]:sum([売上])}
{ FIXED [オーダー日]:sum(売上)}でも可
曜日(オーダー日)を列に入れる、月(オーダー日)を行に入れる
テキストと色に平均(1日当たりの平均)を入れる

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


ソート用カテゴリとソート用売上を作成し、カテゴリと売上を連携させてソートすると解釈(EXCLUDEとFIXEDでカテゴリを無視した計算にすればいいかな)
ソート用カテゴリのパラメーターを作成する
ソート用売上 { EXCLUDE [カテゴリ]:sum(if [カテゴリ]=[ソート用カテゴリー] then [売上] end)}
{ FIXED DATETRUNC('quarter', [オーダー日]):sum(if [カテゴリ]=[ソート用カテゴリー] then [売上] end)}でも可
ソート用売上を行に入れて表計算-差-表(下)-前ので選択、属性、不連続にする



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

初回購入日と最終購入日の差を求めて列にいれて、合計(売上)と個別のカウント(顧客ID)を行に入れればいいと解釈(回答をみると売上がMAXになった購入頻度月と一番顧客数が多かった購入頻度月では1カ月差があるかな、、、)
初回購入日 { FIXED [顧客 Id]:min([オーダー日])}
最終購入日 { FIXED [顧客 Id]:max([オーダー日])}
2つの日付の差÷購入回数 ROUND(DATEDIFF('month',[初回購入日],[最終購入日]) / /{ FIXED [顧客 Id]:COUNTD([オーダー Id])}))
2つの日付の差÷購入回数=顧客ごとの購入回数頻度とし列に入れて、合計(売上)と個別のカウント(顧客ID)を行に入れる

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

Customer_Master.csvと上記リンクをサンプル-スーパーストアにくっつけて
新規顧客のフィルターを作って年月ごとの表計算-累計を使用すると解釈
Customer_Master.csvをサンプル-スーパーストアと結合する
①サンプル-スーパーストアを選択した状態で画面左下のデータソースタブをクリック
②画面左上の追加ボタンを押してCustomer_Master.csvを選択する
③画面左に表示されたCustomer_Master.csvを注文の横にドラッグアンドドロップ
④それぞれの共通項目である製品IDを入れて結合する
リンクから地域と都道府県をコピペする
⑤リンク先で地域/都道府県のセットをコピーして、戻ったデータソースの空き場所にペースト(Ctrl+V)するとClipboard_〇〇ができる
⑥画面中央のClipboardにカーソルを合わせると出てくる右側の▼を選択して、フィールド名を自動に生成するを選択(これで1行目の北海道/北海道がフィールド名になっていたが、F1というフィールド名に変更される)
新しいワークシートを作成する
⑦新しいワークシートを作成して、同様に中央のどこでもいいのでペーストするとClipboard_〇〇が作成される
⑧北海道/北海道を選択して右の▼をクリックし、変換-カスタム分割を選択
⑨区切り文字:「/」で最後の1列を選択することで都道府県のみにできる
⑩できた項目を選択して右の▼をクリックして編集をクリックし、でてきた計算式をコピーする
注文+(複数のデータ接続)!が出ているものクリックした状態でデータソースタブに戻る
⑪中央のClipboardがサンプル-スーパーストアとくっついているので、右に移動して、Customer_Master.csvとくっつくようにする
⑫下の方で結合エラーになっているので、Customer_Master.csv:都道府県、Clipboardの方は関係の計算式の作成を選択
⑬計算式をペーストするが、[北海道/北海道]を[F1]に修正しておくTRIM( SPLIT( [F1], "/", -1 ) )
新規顧客の判断 { FIXED [顧客 Id]:min([オーダー日])}=[オーダー日]
年月(オーダー日)を列、個別のカウント(顧客ID)を行、フィルターに新規顧客を入れる
個別のカウント(顧客ID)に表計算を追加して、累計-合計-表(横)を選択
項目名:F1を変換-カスタム分割で区切り文字:「/」で最初の1列を選択し地域だとサンプル-スーパーストアと被るので地方という名前にして色に入れる










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

列に平均(割引率)行にサブカテゴリを入れて平均割引率の基準0.15を超えているメーカーを割り出せばいいと解釈
以前と同様メーカー情報のエクセルを追加してサンプル-スーパーストアの製品IDとメーカー情報のメーカーを入れたワークシートを作成し、メーカーの右の▼からプライマリグループを作成する
列に平均(割引率)を入れる
行にサブカテゴリを入れる
列の何もないところをダブルクリックしてindex()を作成
index()を選択して右の▼から二重軸を選択、できた軸をダブルクリックして軸を同期を選択
メーカー、サブカテゴリ単位の平均割引率 { FIXED [メーカー],[サブカテゴリ]:avg([割引率])}
基準割引率を超えてるメーカー IIF([メーカ-、サブカテゴリ単位の平均割引率]>=0.15,[メーカー],null)
マークのところにできたindex()タブを選択、マークを〇にして、平均(メーカー、サブカテゴリ単位の平均割引率)、基準割引率を超えてるメーカーを詳細に入れる
indxe()を選択して右の▼を選択し、次を使用して計算→基準割引率を超えてるメーカーを選択する
indxe()をダブルクリックして-index()*0.005に変更する
基準割引率を超えてるメーカーを色に入れて、色の凡例が出たらNULLを右クリックして非表示にする
平均(メーカー、サブカテゴリ単位の平均割引率)を色に入れて再度見やすく調整する




コロナにかかってしまい2週間ほど空いてしまいましたがなんとかOrd8終了!
そろそろテクニックが追い付いてこない頃??
LOD表現は難しく考えず、計算したい結果に対して、ディメンションがどれだけ必要で、画面上どれだけディメンションを使用していて、そこから差し引きして、FIXEDを使うかINCLUDEが使えるかEXCLUDEが使えるかを考えればOK。