えいきちのデータ分析

えいきちのデータ分析

データ分析の理解を進めるブログ

〜Tableau〜 11-1顧客データの理解→現状把握

f:id:eikichix:20200430121547j:plain
今回も理解しておきたい&つまづいたところをまとめようと思います。
参考書は’11章顧客分析’p.524から。

データ結合

データ結合方法検討

f:id:eikichix:20200426101004p:plain
参考書では上記の結合方法でした。
取引テーブルと商品、顧客テーブルとを内部結合。

内部結合だと両テーブルに存在するのしか抽出しなくなるので違和感。
例えば、取引テーブル内に存在して、商品テーブルや顧客テーブルに存在しないものがあれば見逃すことになる。
左結合にしておけば結合しない=NULLとなるのでレコード存在は確認でき、その時点でメンテナンスが必要ということがわかるのでその方が良いのではないかと思いました。 以下私の設定です。参考までに。
f:id:eikichix:20200426101217p:plain




データ重複

個別のカウント

ディメンションのメジャー設定から'カウント(個別)'を選択すると自動的に'COUNTD(xx)'の計算フィールドを作成することをここで理解。
Tableauっていろんなアプローチがありますね。 自分のやり易い方法を見定めなければ。
f:id:eikichix:20200427080702p:plain

f:id:eikichix:20200427080611p:plain


条件フィルタ

今までフィルタは「全般」しか使用していなかったのでメモ。
フィールド指定できるので1フィルタ設定で実際には2つのフィルタが掛けられ便利と感じました。
f:id:eikichix:20200427080911p:plain

フィルタ結果(顧客名かつ数量=0でのフィルタ)
f:id:eikichix:20200427081215p:plain


上位フィルタ

こちらもメモ。
ディメンションでのフィルタでありながら条件でメジャーフィールド指定することでその数値に応じて順位付けしてフィルタリングしてくれるもの。
顧客分析であればこのフィルタ設定に売上、利益等のKPIで設定すればすぐに優良顧客が分かる。
f:id:eikichix:20200429102911p:plain




その他

INDEX関数

f:id:eikichix:20200427083423p:plain
上記の複合成長率の式の理解のため、計算フィールドをながめ確認していたときにINDEX関数の挙動が分からなかったので試しました。
f:id:eikichix:20200427083717p:plain

f:id:eikichix:20200427083812p:plain

ドリルダウンするとINDEXの値がその数に応じて変動することを確認。
INDEX関数は行や列に動的に連番を振ることができるようです。
これも応用が効きそうだ。

注記の付け方

説明が省略されていたので試してメモ。注釈を追記したいポイントで右クリックし
'注釈をつける'>'マーク'
を選択

f:id:eikichix:20200428074359p:plain


注釈の編集プロパティで'OK'を押下して設定完了です。
f:id:eikichix:20200428074729p:plain

参考書のように注釈背景色を変えたいときは
注釈ブロック内で右クリックして'書式設定...'を選択すれば左側のデータペインが書式設定に変更されます。
ここで'網掛け'設定を変更すればOK。
f:id:eikichix:20200428075015p:plain



数が多くなってきたので一旦ここでストップ。
そろそろ終わりが見えてきたので次の参考書探さないと。
良い参考書があればご教示ただけると助かります!


参考書
〜現在使用中〜
www.amazon.co.jp

〜Tableau〜 10-1商品データ理解

f:id:eikichix:20200425184225j:plain



参考書(p.462〜)に沿って進めていましたが
理解しておきたい&つまづいたところをまとめようと思います

重複レコードの確認

メジャーのでのフィルタ設定

ビューでクロス集計表示し、サマリでレコード数の最大値を確認した上でレコード数をフィルタシェルフへ入れて最小値2で絞り込みしていた。
メジャーをフィルタに使うという発想が今までなかったので新しい気づきだった。 値の範囲の設定もできるようなので応用がききそう。
f:id:eikichix:20200425174242p:plain




ビュー表示しているレコードデータ表示

絞り込み後の重複レコードの中身を確認するために"分析"→"データの表示" を選択。 表示されたプロパティの"すべてのデータ"タブを選択することでレコード単位でのデータが確認できる。 あと詳細をみたいレコードを選択して同様の操作を行えば、選択した箇所のみのデータが見れることも分かった。
f:id:eikichix:20200425174717p:plain
f:id:eikichix:20200425180751p:plain




ビュー表示しているレコードを選択してセット作成

セットの作成は前の章にも出てた記憶があるが、こんな設定の仕方だっけ?となったのでメモ。
重複したレコードを表示させて全選択。 出てくるプロパティからセットの作成を選択。 ここで作ったセットをフィルタに入れることで顧客IDの粒度でフィルタをかけることができる。 この中の本作業目的はレコード数で絞っているフィルタを取らないとレコードがバラけた途端に表示されなくなるための対策と理解。
f:id:eikichix:20200425175706p:plain




つまづいた点

オーダー以外のID関連のピルがない

f:id:eikichix:20200422072200p:plain




要因:既存設定で非表示

そもそも参考書で記載されているディメンション内容と少し異なるので
更新されて削除された?と思いましたが、結果非表示になってました。

ディメンション横の▼から"非表示のフィールド"表示を選択すると出てきます
ちなみにID使わずともIDと紐づいている"顧客名"、"製品名"でもできると思います。 私は途中までそれでやってました。
f:id:eikichix:20200422072523p:plain
f:id:eikichix:20200422072653p:plain




集計対象表示の不整合

最後に池蓮さんのレコードをバラけさせる際、集計対象の計算フィールドを切り口に行うのですが、参考書と表示が合わない。
本来重複削除で"偽"であるはずの吉直さんと川一さんが"真"となってしまっている。
f:id:eikichix:20200425182025p:plain




要因:"オーダ/製品/顧客の最大行ID"計算フィールドに[集計対象]が含まれていない

"オーダ/製品/顧客の最大数量"計算フィールドを複製して、[数量]と[行ID]を入れ替えただけにしていたためでした。能動的に取り組んでなかった証拠。反省。

before

f:id:eikichix:20200425182539p:plain

after

f:id:eikichix:20200425182643p:plain

before

f:id:eikichix:20200425182025p:plain

after

f:id:eikichix:20200425182751p:plain



現場でも重複レコードは珍しくなくて、この対応方法は勉強になりました。
データ分析は分析する前の作業が非常に重要(作業の60−70%と言われています)なのでもっと勉強していかないとだなー。


参考書
www.amazon.co.jp

〜Tableau〜 LOD EXCLUDE関数の理解

f:id:eikichix:20200418153212j:plain

INCLUDE関数に引き続きEXCLUDE関数につまづきました
今回も中々参考書の目的が理解できず、今回は丸っぽ参考サイトの過程をお借りして
自分なりに作成してみました

目的:カテゴリに対する売上割合を表示する

とします


サブカテゴリを切り口に売上を表示します
f:id:eikichix:20200418153845p:plain

表示をシンプルにするため、フィルタにカテゴリを入れて家具で絞っています
割合を出したいので分母は「カテゴリの合計金額」なのですが
すでに切り口としてサブカテゴリを置いてしまっているので、SUM[売上]を置いて割合を出してもサブカテゴリ毎の金額となるので100%となってしまいます

ここで使用できるのがEXCLUDE関数のようで
ディメンションを指定することでそのディメンションを除外することができ、一つ上の粒度で算出できるようです
なので以下のように計算フィールドを作成しました
じゃあエラーが。。。

f:id:eikichix:20200418154734p:plain


集計:SUM([売上]) なのでEXCLUDEは非集計になるようです
分からなかったので参考サイトで調べてみると

EXCLUDEを集計関数として扱いたいのであれば、
AGG({ EXCLUDE [ビュー上の除外したいディメンション1](,[ビュー上の除外したいディメンション2]…) : [集計式] })
と集計関数でEXCLUDE式を囲ってください。
AGGには(MIN/MAX/SUM/ATTR)のいずれかを入れてください。

とあったので囲ってみたらOKになりました
集計になったんだろうなと理解
f:id:eikichix:20200418155233p:plain

参考サイトにはこうも書いてあって

どの集計関数であっても結果は変わらない

確かにSUM[売上]で出力されるのは集計された1値だと理解しているのでそうなるとは思うんだけど
そもそもEXCLUDE関数を使用した時になぜ非集計扱いとなるのかが理解できないなー

ここはTableau仕様なのだと踏ん切りつけて先に進みます


そしてピルをラベルに配置すると
f:id:eikichix:20200418160223p:plain

正解っぽいのが出たぞ

ただ合ってるか分からないので、ここにカテゴリ毎の売上金額を出力したいと
欲が出たのでFIXED関数使えば良いと思い以下の計算フィールドを作成・配置
f:id:eikichix:20200418160426p:plain
f:id:eikichix:20200418160532p:plain


表示もできた
テーブルで計算すると
13919786/81166998=0.17149...

なので合ってそうです
これで目的達成だし、理解できたかなと


ただ2つ気になったのでこれを試して終わろうと思い

1. FIXED関数でどうにかなりそう

カテゴリ売上の表示を作成した時にあれ?と思い、やってみることに
f:id:eikichix:20200418161017p:plain
f:id:eikichix:20200418161117p:plain

やっぱりできた

ここでの気づきはFIXED関数もEXCLUDE関数同様に非集計となってしまうのでAGGを使用しなければならないこと
参考書ではここに引っ掛からなかったのでなんでだろうと再度読み直したら有無を言わさずにATTRを計算フィールドに記載していた もっと能動的に読書しないとと反省

2. 表計算でどうにかなりそう

f:id:eikichix:20200418161942p:plain
f:id:eikichix:20200418162021p:plain

これもできた

ここでの気づきは表計算の理解がまだ乏しいこと
計算タイプも次を使用して計算もたくさん選択肢があるがぼやっとしか理解できないしそもそも深く理解しようとしたことがなかった

ここ理解すれば関数使わずともいろんなことができそうだなと
関数使用も良いのだけどできる限りシンプルにすることを考えるとTableauの標準機能を使いこなしたほうが良いかなと思うのでここも勉強しようと思いました

また、別でまとめようと思います

今日はここまでー

参考書
www.amazon.co.jp


参考サイト
ex-ture.com

〜Tableau〜 LOD INCLUDE関数の理解

f:id:eikichix:20200126222756j:plain

BIツールを勉強しようとTableauを始めました。
その中で理解しにくいなーと思うものをまとめていこうと思います
今後余裕が出てきたらPowerBIやOracleBIなどにも手を出していこうと模索中

基本的には参考書を読んでつまづいたところを調べてここに載せようかなと思ってます

現在使用参考書はこちら
www.amazon.co.jp



皆さんの理解の援助にもなれば幸いです


今回の内容はLOD計算のINCLUDE関数についてまとめようと思います

LODとは Level of Detail の略で日本語では詳細レベルと訳されます
Tableauでそれに属するのは3つで

  1. FIXED
  2. INCLUDE
  3. EXCLUDE

とあります

FIXEDは参考書の中でこの関数は目的が明確だったので理解できたのですが
INCLUDEは使用する目的が理解できず(私のおつむの問題もありますが)
まとめようと思いました

INCLUDE関数の記述としては
f:id:eikichix:20200418090238p:plain

となっていて これを使って作成したグラフが
f:id:eikichix:20200418090409p:plain

こうなりますよ
とのことです


で?何が嬉しいのだろう?


となりました

そもそも全体売上平均との違いはどうなるのだろうと思い
列に売上ピルを追加して比較しました(平均にすることを忘れずに)

f:id:eikichix:20200418090915p:plain

うん。違う

いやいや、そもそも平均(売上)って何の平均?

ドツボにハマってきたので、一度スケールを小さく自分でデータを作成してTableauに食わせることにしました

f:id:eikichix:20200418102344p:plain

顧客Aさんと顧客Bさんがいて、それぞれ5回ずつ椅子、もしくは机を購入したとしました

全体平均と顧客売上平均の違いがこちら
f:id:eikichix:20200418102758p:plain

上記よりまとめると

全体平均: 売上合計/レコード数(行数なので今回は10)

顧客売上平均:売上合計/顧客ユニーク数(AとBなので今回は2)

というロジックであることを理解
さらに購入品切り口でグラフ表示にて比較
f:id:eikichix:20200418103556p:plain

上記より椅子に焦点を絞ってまとめると

全体平均: 椅子売上合計/椅子レコード数(行数なので今回は5)

顧客売上平均:椅子売上合計/顧客ユニーク数(AとBなので今回は2)

であることを理解

ここでやっと
INCLUDE関数を使用することで指定したディメンションをビューに存在していなくても使用して算出できるということは理解できた


Tableau標準のサンプルデータに戻り
一番最初に作成したグラフに行き着く前のグラフはこれなんだろうなと作ってみた
f:id:eikichix:20200418105146p:plain

平均(売上)メジャーを使用して、カテゴリ、サブカテゴリ、顧客名を切り口に表現したもの、現在の粒度が顧客名なので
今回は篠原明美さん(誰)に焦点を絞ってまとめると

全体平均: 篠原明美さん椅子売上合計/篠原明美さんレコード数

を篠原明美さんの項目に棒グラフで出しているものになるというもの

これでは分かりづらいし、そもそも表現しているものに意味がないので
顧客平均で表現しようとなったのが一番最初のグラフになる

これで繋がったし、ロジックもわかったのでここまでにしたいと思います



ただ、

サブカテゴリ別の顧客売上平均を出すことで何が嬉しいの?

については顧客売上平均が高い=商品価値がある
ということなのだろうと表面的理解はできたけど
本質理解できていないので、これは誰かに助言をいただきたい所存です

今回理解するにあたり、以下の内容も参考になりました
INCLUDEは中間テーブルを作成するイメージなのかと認識した後、理解が加速しました ご参考まで

ex-ture.com