Subscribed unsubscribe Subscribe Subscribe

ウォーターフォールチャートの一例 - 2

前回の投稿の別アプローチです。

こっちの方が簡単だとは思いますが、環境面の制約があります。

https://cdn-ak.f.st-hatena.com/images/fotolife/s/skn_0410/20170210/20170210004453.png

 

 

こちらのアプローチだと、ダッシュボードが不要で、ひとつのワークシート上にグラフを作成できます。

このメリットは非常に大きいです。

しかしながら、この方法は、データを複製するのに Unionを使用するため、以下のような制約があります。

  • Unionはバージョン9.3かそれより新しいバージョンでしか使えません。
  • いくつかのデータ接続タイプでは、Unionが使えません。
  • Unionを使うことにより、この場合データ構造の複雑さが増すので、反応速度に影響が出る可能性があります。

 

上記の制約に引っかからないなら、こちらのアプローチでより手軽にウォーターフォールチャートを作成できます。

 

では、Unionから始めましょう。

 

https://cdn-ak.f.st-hatena.com/images/fotolife/s/skn_0410/20170210/20170210015926.png

 

 

 

 

https://cdn-ak.f.st-hatena.com/images/fotolife/s/skn_0410/20170210/20170210020001.png

 

 

https://cdn-ak.f.st-hatena.com/images/fotolife/s/skn_0410/20170210/20170210020057.png

 

新たに、「Table Name」というフィールドが追加されました。

 

https://cdn-ak.f.st-hatena.com/images/fotolife/s/skn_0410/20170210/20170210020213.png

このフィールドは、追加のディメンションとして使用でき、これを用いてヘッダーや、メジャーを新たに作成することで、いろんな応用ができます。

ウォーターフォールチャートの難しい点は、「昨年度」「今年度」は合計で表示し、

「差分」に関してだけ、「Province」のディメンションを追加することです。

Unionで新たに作成された「Table Name」を使用して、この点を解決していきます。

 

[Header 2]
if [Table Name]="Clipboard_20170209T095719.txt" then "Last Year"
elseif [Table Name]="Clipboard_20170209T095719.txt1" then "This Year"
else [Province] end

 

Unionを用いたときの注意点ですが、データが3重になっているので、普通にメジャーを合計すると、元の数字の3倍になってしまいます。ですので、重複を避けるため、「Table Name」をうまく使って、メジャーフィールドの計算式を構築する必要があります。

以下のLODの例の場合、「Table Name」をFix しておかないと、3倍の数字が出てくることになります。

 

[Sales Last year]
{fixed [Table Name]:sum(if [Header Time Range] ="Last Year 3 months" then [Sales] else 0 end)}

 

[Sales This year]
{fixed[Table Name]:sum(if [Header Time Range] ="Curent 3 months" then [Sales] else 0 end)}

 

[Sales Delta]
sum(if [Header Time Range] ="Curent 3 months" then [Sales] else 0 end)

-
sum(if [Header Time Range] ="Last Year 3 months" then [Sales] else 0 end)

 

 

// データは、個別のデータでなく、集計されたものとなるので、 "attr" を [Table Name] の前につけてあげる必要があります。

 [Delta Height]

 if attr([Table Name])="Clipboard_20170209T095719.txt"
then min([Sales Last year])
elseif attr([Table Name])="Clipboard_20170209T095719.txt1"
then min([Sales This year])
else [Sales Delta] end

 

これらの計算フィールド配置して、以下のようなガントチャートが作成できます。

 

https://cdn-ak.f.st-hatena.com/images/fotolife/s/skn_0410/20170210/20170210023914.png

 

まずは、シート名の順番に並んでいるペインを「差分」が真ん中に来るように、ダウッラッグ&ドロップで移動します。

https://cdn-ak.f.st-hatena.com/images/fotolife/s/skn_0410/20170210/20170210024251.png

 

次に、数字は累計にした上で、「差分」の小さい方からソートしてあげる必要があります。

 

https://cdn-ak.f.st-hatena.com/images/fotolife/s/skn_0410/20170210/20170210024108.png

 

https://cdn-ak.f.st-hatena.com/images/fotolife/s/skn_0410/20170210/20170210024353.png

 

そのまま累計にすると、「今年分」のプロット位置が、異常に高いところになります。

これは、「今年分」は、「昨年分」+「差分」なので、さらに「今年分」を累計に足すと、ダブルカウントしてしまうからです。

 

https://cdn-ak.f.st-hatena.com/images/fotolife/s/skn_0410/20170210/20170210024455.png

 

計算式を少し変更します。

[Delta Height 1]

if attr([Table Name])="Clipboard_20170209T095719.txt"
then min([Sales Last year])

elseif attr([Table Name])="Clipboard_20170209T095719.txt1"
then 0
else [Sales Delta] end

 

https://cdn-ak.f.st-hatena.com/images/fotolife/s/skn_0410/20170210/20170210025003.png

 

 

https://cdn-ak.f.st-hatena.com/images/fotolife/s/skn_0410/20170210/20170210025053.png

 これで、「高さ」の位置は合いました。

次は、ガントチャートのもうひとつの要素、「サイズ」を考えます。

「サイズ」は、負の数で考える必要があります。なぜなら、ひとつ前の数字とのギャップを埋めたいので、今ある「高さ」の位置からは戻ることになるからです。

 

さらに、「昨年分」と「今年分」は、高さが丸ごと「サイズ」ということにして、グラフの底まで色づけしてあげないといけません。

 

[Delta Size]

if attr([Table Name])="Clipboard_20170209T095719.txt"
then - min([Sales Last year])
elseif attr([Table Name])="Clipboard_20170209T095719.txt1"
then - min([Sales This year])
else -([Sales Delta])
end

 

https://cdn-ak.f.st-hatena.com/images/fotolife/s/skn_0410/20170210/20170210025520.png

 

できました~。

次に、ラベルです。

 

[Delta Text]

- [Delta Size]

 

 

サイズを負の方向にしたので、ラベルに戻すのに、マイナスをかけます。

同じフィールドを「色」に持っていってみましょう。

 

https://cdn-ak.f.st-hatena.com/images/fotolife/s/skn_0410/20170210/20170210025940.png

 

「昨年分」「今年分」と「差分」のスケールが違いすぎて、「差分」の色の違いがわかりません。

 

そこで、色を示すために別のフィールドを作成します。

ここでも、「Table Name」を使います。

 

[Delta Color]
if attr([Table Name])="Clipboard_20170209T095719.txt2" then [Delta Text]
else 0 end

 

「昨年分」「今年分」を「0」に固定して対応しました。

 

https://cdn-ak.f.st-hatena.com/images/fotolife/s/skn_0410/20170210/20170210030319.png

 

だいぶマシになりました。

 

このアプローチの大きなアドバンテージのひとつは、Y 軸の高さが非常にフレキシブルに調整できることです。

 

ここでは、「差分」の「Province」ごとの違いを明確にするため、Y軸のスタートをゼロより大きい値にしてみます。

通常、棒グラフでは、誤解を避けるためゼロ点を省くことはお勧めできませんが、この場合は、誤解を招く恐れも少ないので、「ゼロ点を除く」を設定します。

 

https://cdn-ak.f.st-hatena.com/images/fotolife/s/skn_0410/20170210/20170210032352.png

 

何も起こりません。

 

https://cdn-ak.f.st-hatena.com/images/fotolife/s/skn_0410/20170210/20170210032436.png

 

このガントチャートの場合、「昨年分」「今年分」の「サイズ」要素がグラフの底まで達しているため、特別に設定してあげない限り、ゼロが最小値になっています。

そこで、まずは、最小の高さをどこにするか適当に決めます。

出てくる最小値の90%にして、適当に四捨五入してみます。

 

[Minimum]

round(window_min(running_sum([Delta Height 1]))*0.9,-4)

 

そして、「サイズ」要素そのものを、決定した最小値までだけ届くように変更します。

 

[Delta Size 2]

if attr([Table Name])="Clipboard_20170209T095719.txt"
then - (min([Sales Last year])-[Minimum])
elseif attr([Table Name])="Clipboard_20170209T095719.txt1"
then - (min([Sales This year])-[Minimum])
else -([Sales Delta])
end

そして、 最小値をレファレンスラインに挿入します。

 

https://cdn-ak.f.st-hatena.com/images/fotolife/s/skn_0410/20170210/20170210032902.png

 

フォーマットも整えます。

 

https://cdn-ak.f.st-hatena.com/images/fotolife/s/skn_0410/20170210/20170210032957.png

 

Only Showing Greater Than <Value>

 

https://cdn-ak.f.st-hatena.com/images/fotolife/s/skn_0410/20170210/20170210033138.png

 

ヘッダーを非表示にします。

 

https://cdn-ak.f.st-hatena.com/images/fotolife/s/skn_0410/20170210/20170210033620.png

 

これが、出来上がりです。

 

https://cdn-ak.f.st-hatena.com/images/fotolife/s/skn_0410/20170210/20170210033719.png

 

 

結局、またまた長くなってしまいましたが、前回よりは簡単かつ美しく仕上がりますし、融通も利きます。

 

それでは、

Enjoy Tableau!!

 

 

ウォーターフォールチャートの一例 - 1

しばらくQ&Aに注力していたので、全然更新してませんでした。

ウォーターフォールチャートに関して、ちょっと解説を依頼されたので、ここにでも書いてみようかと思います。

最終形はこのようなものを想定しています。

https://cdn-ak.f.st-hatena.com/images/fotolife/s/skn_0410/20170209/20170209085406.png

 

まずは、ゴールの確認。依頼の内容に合わせるため、期間設定に関してちょっと特殊要件が入っています。

直前の3ヶ月(今月は含まない)と同期間の昨年分を比較し、差に関してブレイクダウンして表示する。というものです。

今日は2/8なので、「今年分=2016/11/1~2017/1/31」、

「 昨年分=2015/11/1~2016/1/31」 となります。

まずは、計算式

 

[Header Time Range]
if [Custom Order Date] <= datetrunc('month',today())-1
and
[Custom Order Date] >=dateadd('month',-3,(datetrunc('month',today())))
then "Curent 3 months"
elseif [Custom Order Date] <= dateadd('month',-12,datetrunc('month',today())-1))
and
[Custom Order Date] >=dateadd('month',-15,(datetrunc('month',today())) )
then "Last Year 3 months"
end

 

Datetrunc は 各月の「ついたち」を返してきます。ですので、 "datetrunc('month',[date])-1 " は、先月の最終日を返してきます。
"dateadd('month',#,[date])" は、# ヶ月分、日付をずらします。

ひとつの注意事項は、1年ずらす時、"1 year"  を使用するのではなく、"12 months" を使用したほうがよいという点です。理由は、「年」を使用すると、うるう年の時に、2/29 の1年前が3/1 になってしまうためです。

以下のとおり、正確に分類できていました。

https://cdn-ak.f.st-hatena.com/images/fotolife/s/skn_0410/20170209/20170209090308.png

 

 

 

https://cdn-ak.f.st-hatena.com/images/fotolife/s/skn_0410/20170209/20170209090340.png

 

 

ここからは、グラフを作成するのですが、基本コンセプトは、3つのワークシートを作成し、ダッシュボード上で結合するというものです。

このやり方は、ひとつひとつのグラフは簡単に作成できるのですが、範囲とかヘッダーのあわせ込みが非常に厄介です。そのあわせ込みに関してがノウハウになります。

まず、今年度のシート。

 "Sales" を 行に持っていき、"Header Tiemn Range" をフィルタに設置します。フィルタで  "Curent 3 months" を選択すればこのシートはいったん OKです。

 

https://cdn-ak.f.st-hatena.com/images/fotolife/s/skn_0410/20170209/20170209093226.png

 

 

 

次に昨年度のシート

同様に、"Sales" を行に、"Header Tiemn Range" をフィルタに設置し、"Last Year 3 months" をフィルタから選択します。

 

さて、厄介な「差分」シートです。

っこでは、ガントチャートを作成します。

ガントは、「高さ」と「サイズ」から成り立ちます。

「高さ」のポイントから「サイズ」分に色づけするイメージです。

 

まずは、いくつか計算式のフィールドを準備します。

 

[Sales Delta]

sum(if [Header Time Range] ="Curent 3 months" then [Sales] else 0 end)
-
sum(if [Header Time Range] ="Last Year 3 months" then [Sales] else 0 end)

 

[Sales Last year]

{fixed:sum(if [Header Time Range] ="Last Year 3 months" then [Sales] else 0 end)}

 

これが「高さ」にあたる数値です。↓

[Delta Height]

attr([Sales Last year]) + running_sum([Sales Delta])

 

各 "Provinve" (in this case) の差を 昨年のグラフに累積で加算していきます。

LODを使って昨年分のグラフの値を固定し、running_sum で累計を算出します。

 

次に「サイズ」です。

[Delta Size]
-[Sales Delta]

サイズは、マイナスで扱ってあげる必要があります。なぜなら、「高さ」を累計にしているため、ひとつ前の「高さ」とのギャップを示すためには、「差分」の量だけ、戻ってあげる必要があるためです。

 

https://cdn-ak.f.st-hatena.com/images/fotolife/s/skn_0410/20170209/20170209094619.png

 

 

"Province" を昇順にソートします。昇順の理由は、累積降下分を先に持ってきて、お碗のようにすることにより、「差分」のガントチャートの高さが、余計なスペースを使うことを避けるためです。逆だと、アーチ上になって、最大値が大きくなってしまいます。

 

https://cdn-ak.f.st-hatena.com/images/fotolife/s/skn_0410/20170209/20170209094707.png

 

いよいよ、ダッシュボード上で結合します。

 

 

https://cdn-ak.f.st-hatena.com/images/fotolife/s/skn_0410/20170209/20170209095241.png

 

最初に述べたとおり、いくつか問題があります。

高さが合っていない事と、Y軸のゼロ点がずれていることです。

 

https://cdn-ak.f.st-hatena.com/images/fotolife/s/skn_0410/20170209/20170209095751.png

 

 

まず、高さの調整ですが、「Reference Line」を使います。

すべての場合において、高さを合わせる=高い方に揃える ことになります。

既に、「差分」グラフをお碗型にしたので、最大値は

「昨年」「今年」の両グラフの高いほうになります。

 

[Sales Last year] //  既に作成したフィールド
{fixed:sum(if [Header Time Range] ="Last Year 3 months" then [Sales] else 0 end)}

 

[Sales This year]
{fixed:sum(if [Header Time Range] ="Curent 3 months" then [Sales] else 0 end)}

 

[Max Height for Ref Line]
max([Sales Last year],[Sales This year])

 

 

[Max Height for Ref Line] をリファレンスラインに追加します。

https://cdn-ak.f.st-hatena.com/images/fotolife/s/skn_0410/20170209/20170209100407.png

 

https://cdn-ak.f.st-hatena.com/images/fotolife/s/skn_0410/20170209/20170209100928.png

 

 

https://cdn-ak.f.st-hatena.com/images/fotolife/s/skn_0410/20170209/20170209101042.png

 

同様のことを、「昨年」「差分」のグラフでも行います。

 

 

https://cdn-ak.f.st-hatena.com/images/fotolife/s/skn_0410/20170209/20170209101259.png

 

まだ、ずれています。

これは、数値をあらわすテキストが、上部に表示されているため、自動調整でずれが生じているためです。テキストは必要だとして、表示位置を変更します。

 

https://cdn-ak.f.st-hatena.com/images/fotolife/s/skn_0410/20170209/20170209101449.png

 

 

ようやく、「昨年」と「今年」のグラフの高さは合いました。

「差分」グラフとは、ゼロ点を合わせ込んでいないので、まだ合っていません。

https://cdn-ak.f.st-hatena.com/images/fotolife/s/skn_0410/20170209/20170209101609.png

 

”BLANK” のタイルを使って、ゼロ点を合わせる方法もあるのですが、ディスプレイのサイズが変わったときにずれる可能性が高いので、もう少し手の込んだ方法を使います。

 

まずは、Provinceの表示を固定するため、「差分」のFormatを変更します。

 

 

https://cdn-ak.f.st-hatena.com/images/fotolife/s/skn_0410/20170209/20170209101947.png

 

 

https://cdn-ak.f.st-hatena.com/images/fotolife/s/skn_0410/20170209/20170209102113.png

 

 

次に、「昨年」「今年」のグラフにヘッダーを追加するため、一工夫します。

「差分」に表示されている Province の中から、最も長い名前をピックアップします。

 

[Header Year]
{fixed:max(if len([Province])={fixed:max(len([Province]))} then [Province] end)}

 

これを、それぞれのシートのヘッダーに追加します。

 

https://cdn-ak.f.st-hatena.com/images/fotolife/s/skn_0410/20170209/20170209102504.png

 

 

さらに、追加したヘッダー名のフォント色を「白」にします。

 

https://cdn-ak.f.st-hatena.com/images/fotolife/s/skn_0410/20170209/20170209102922.png

 

 

https://cdn-ak.f.st-hatena.com/images/fotolife/s/skn_0410/20170209/20170209102959.png

 

 

で、↓こうなります。

 

https://cdn-ak.f.st-hatena.com/images/fotolife/s/skn_0410/20170209/20170209103205.png

 

さらに、その上からText オブジェクトを追加します。

 

https://cdn-ak.f.st-hatena.com/images/fotolife/s/skn_0410/20170209/20170209103357.png

 

 

 

 

https://cdn-ak.f.st-hatena.com/images/fotolife/s/skn_0410/20170209/20170209103553.png

 

 

 

https://cdn-ak.f.st-hatena.com/images/fotolife/s/skn_0410/20170209/20170209103518.png

 

 

https://cdn-ak.f.st-hatena.com/images/fotolife/s/skn_0410/20170209/20170209103657.png

 

 

https://cdn-ak.f.st-hatena.com/images/fotolife/s/skn_0410/20170209/20170209103734.png

 

 

同様のことを、「今年」のシートでも行います。

その後、ヘッダを非表示にします。

 

https://cdn-ak.f.st-hatena.com/images/fotolife/s/skn_0410/20170209/20170209103920.png

 

いちおう、これで完成です。

https://cdn-ak.f.st-hatena.com/images/fotolife/s/skn_0410/20170209/20170209104030.png

 

長かったですね。。

 

別のやり方を、後日投稿します。

もうちょっと簡単かなとは思いますが、書いてみないとわからないですね。

 

では、Enjoy Tableau!

 

 

 

案外知らない?-オートカルク-

『エクセル使い』の方は間違いなく使う機能ですが、下のステータスバーに、選択した範囲のセルの合計値などが表示される「オートカルク」という機能があります。

f:id:skn_0410:20160928053900p:plain

非常に便利です。

Tableau にも欲しいです。それに、そんなに難しくないんじゃないの?という感じでもあります。

まあ、実は当然その程度の機能はありまして。

このようなテーブルで、、、

f:id:skn_0410:20160928055352p:plain

CTRLキーを使って、複数セルを選択します。

f:id:skn_0410:20160928055440p:plain

このままだと、何も起こらないのですが、マウスを選択したエリアの上に持っていきます。

すると~、少しタイミングが遅れて赤で囲った箇所がポップアップします。

f:id:skn_0410:20160928055611p:plain

ここに、カウント数と合計数が表示されます。

エクセルだと、シフトキーを使えば連続するセルを選択可能ですが、タブローのテーブルビューでは、シフトキーでは連続セルの選択はできません。実は私、しばらくの間、いちいちCTRLキーで選択してました。

複数セル選択の正しい方法は、

f:id:skn_0410:20160928055939p:plain

該当セルを含んだエリアを、マウスでドラッグしながら選択します。

f:id:skn_0410:20160928060036p:plain

直後には、ポップアップ部分は表示されませんが、一旦マウスのカーソルを別のところに移動して、再び選択部分の上にカーソルを持ってくると、、、

f:id:skn_0410:20160928060155p:plain

ポップアップが現れました。

選択したいセルが長方形でない場合は、はみ出たセルだけを、Ctrl+Clickで追加すれば可能です。

f:id:skn_0410:20160928060315p:plain

 

ちなみに、このオートカルクは表の上だけでなくグラフの上でも同様に機能します。

f:id:skn_0410:20160928060558p:plain

以上簡単ですが、エンジンかかるまではこれくらいで。。

それでは、Enjoy TABLEAU !!

 

 

 

日本人はどこにいる?-在留邦人の滞在先の推移-

f:id:skn_0410:20160927080348p:plain

 

1ヶ月とか、すぐに経ってしまいますね。こんなに穴を開けてしまうとは。。

気を取り直して。。。

 

シンゴジラに続いて、「君の名は」の評判の高さに我慢ができず、少しでも望みを満たすため、小説版を読みました。なかなか良いですね!!

f:id:skn_0410:20160927093538p:plain

www.amazon.co.jp

もちろん、「小説」としてだけで見ると、ちょっと軽すぎる感じもしましたが、映像を想像しながら読むと、すごく素敵な映画になりそうだなと思いながら読み終えました。

 

さて、本日の御題は、VIZの紹介になりますが、

「海外に住む日本人は、どこにいるのか」

というものです。私自身がアメリカに滞在していることもあり、ちょっと興味がありました。

こういったデータを取り扱うことに関しては何をするにしてもそうですが、データそのものの入手が最も手間がかかります。

最近のものなら、外務省版があるのですが、

海外在留邦人数調査統計 統計表一覧 | 外務省

少し長期のものが欲しかったので、別のソースも使用しました。

2-12   国籍別,在留資格(永住・非永住)別外国人登録者数(エクセル:48KB)

さて、

いくつかグラフを見てみます。

まずは、地域別、昔と今の比較です。最初は、永住者と長期滞在者を合計したものです。

f:id:skn_0410:20160927075058p:plain

 

およそ50年前との比較です。圧倒的に多かった南米への移住者。

今では、北アメリカ、西ヨーロッパ、そして、アジア、オセアニアの次にランクされています。

永住者のみに絞ってみます。

 

f:id:skn_0410:20160927075510p:plain

 

50年前の南米への移民と、現在の北アメリカへの移民の数が同程度となっています。

下のグラフは、スライダーを左右に動かすことで、各年の内訳をアニメーション的に表示できます。

 次に、長期の地域ごとの年次推移を見てみましょう。

 

f:id:skn_0410:20160927080348p:plain

 

アジア(黄色)の伸びが著しいですね。対前年で傾向を確認してみましょう。

f:id:skn_0410:20160927080523p:plain

黄色のアジアがやはりよく伸びていますが、ピンクの北アメリカも毎年増えていっています。

ここで、永住者と長期滞在者に分けてみましょう。

f:id:skn_0410:20160927080653p:plain

 

このグラフがいちばん驚きだったのですが、私の予測と比べると、アジアへの永住者(下段の黄色)ってすごく少なくないですか。

まあ、近いから行ったり来たりしてるのかも知れませんが、西ヨーロッパや、オセアニアよりかなり少ないです。それに、北アメリカへの永住者のコンスタントな増加も目に付きます。翻って、南米の永住者は自然減の流れです。

永住者に絞って、対前年を見ると、前述の傾向が明らかです。

 

f:id:skn_0410:20160927081149p:plain

 

ここで、北アメリカのうち、カナダとアメリカの内訳を見てみましょう。

やはり、アメリカの方が4倍以上の永住者がいつようです。2001年の落ち込みは、9.11によるものだと思われますが、すごい落ち込みだったんですね。とはいえ、一旦離れた方もほぼ戻ったようで、長期トレンドには影響を与えていません。

f:id:skn_0410:20160927083941p:plain

 

ということで、日本の人口おおよそ1億2千万に対して、その1%にあたる130万人程度が海外で生活しており、そのうち、50万人弱が北アメリカ大陸在住。私は、そのうちの一人ということになります。

 

 

それでは、Enjoy Tableau !!

 

 

リオデジャネイロオリンピック終了-県別メダル数の結果は?-

リオデジャネイロオリンピック、すごく楽しかったです。感動しました。

忘れないうちに県別データを更新です。

 

通産メダル数(リオ含む)

f:id:skn_0410:20160823120755p:plain

通産メダル数(リオ前)

f:id:skn_0410:20160823120712p:plain

リオデジャネイロ大会のみ

f:id:skn_0410:20160823120231p:plain

県別にどれほどの意味があるかは別として、

長野県出身者では初のメダル獲得者(個人戦のみ)が生まれました。

富山県勢では、初の金メダリスト、それも2人です。

f:id:skn_0410:20160823121255p:plain

そして、今大会もっとも活躍したのは。。。

栃木県勢でした。  

荻野選手の金銀が効きましたね。

 

f:id:skn_0410:20160823122222p:plain

 

こちらからは、以上です。

それでは、 Enjoy Tableau !

 

 

閑話休題/エクセル ねたです:邪魔だよーgetpivotdata-

オリンピック終わりましたね。

閉会式の TOKYO のプレゼン、良かったと思います!

多くの方が書かれていますが、アレを議論する会議の場面って、想像すると面白いですよね。

 

さて、今回は「閑話休題」。←これを使ってみたかったんですよ。

 

「チェック/アンチェックひとつで」みたいなことをいくつか書いてるうちに、そういえば、これもみんなあんまり知らないな~と思ってたエクセルねたをあげておきます。

ググレば、すぐに出てくるので、あえてここで書く必要もないことではありますが、実際、大勢の「知らない」人を見てきたので、あえて「閑話休題」として。。

 

それは、タイトルにある通り、「getpivotdata」関数についてです。

Pivot Tableを作成した後、そのままちょっとした計算を加えたいとき、こういうことになるわけです

f:id:skn_0410:20160823110024p:plain

 

個人的には、今まで、「getpivotdata」関数が必要だったことは、一度もありません。

もちろん、ケースによっては必要な場合もあるかもしれないですが、「邪魔」です。

俗に言う、これですね。

f:id:skn_0410:20160823110258p:plain

同僚は、自分で「d5-c5」って毎回手打ちしてました。それはちょっと「アホ」かと。(関西ではとくにキツい意味ではありませんので悪しからず。。)

 

さて、消し方です。

 

f:id:skn_0410:20160823110814p:plain

 

f:id:skn_0410:20160823110851p:plain

 

f:id:skn_0410:20160823111104p:plain

 

以上で、こうなってくれます。

f:id:skn_0410:20160823111154p:plain

 

それでは、Enjoy Excel

 

 

 

 

 

神は細部に宿る?ーヘッダーを上側に表示する-

レスリングは日本のお家芸と言えるメダルラッシュですが、驚くべきことに(!)吉田選手が決勝で負けてしまいました。Alsokの宣伝とか、「霊長類最強」とか、「男だったら人を殺してた」とかで、いつの間にか私の中で「彼女は負けるはずがないだろう」と思ってたので、やけに驚きました。

自分の勝手な思い込みに過ぎないのですが、物事に「絶対」というのはないのだなぁと、改めて心しておこうと思いました。

 

さて、話は変わって、「神は細部に宿る」って言葉があります。もともとは建築や装飾品とかのケースに使われてたようです。

傘置きやコピー機を見れば、会社が分かる」とまで言っちゃうと、「いやいや、それはない」、「木を見て森を見ず、って言葉もあるでしょうが」とかいろいろ思ってしまいますが、今回紹介したいのは、そんな言葉をつい思いついてしまうような、Tableauの機能の中で、「必要不可欠」とまでは言えない機能、「ぶっちゃけこんなの知らんでも本質には全く問題ない」機能です。

がしかし、「Tableau」なんてエラい人、全然知らないんですよ。みんなエクセルとパワーポイントでやってます。んで、誰も今のやり方をなかなか変えたがりません。

そのような状況に、Tableauで殴りこみをかける(笑)わけですから、あるVIZを見せた時に、『このヘッダー、下じゃなくて上に表示させて欲しいんやけど』などと言われた時には、『できません』とか『やり方わかりません』とか、言いたくないじゃないですか。『はいはい~』ってすぐに対応できれば、導入拡大への道も開けようというものです。

なんと長い前置き。。。

 

最初は簡単なビューから。

f:id:skn_0410:20160819064221p:plain

行に、[Product Category]を追加してみます。

f:id:skn_0410:20160819064616p:plain

3段に分かれました。

ただ、最上段の棒グラフと、ヘッダーの距離が遠すぎるので、ヘッダーを上側に移したいです。

f:id:skn_0410:20160819064840p:plain

ためしに、同じ[Customer Segment]を「Column」にもうひとつ配置してみましょう。

f:id:skn_0410:20160819065518p:plain

こうなります。

f:id:skn_0410:20160819065624p:plain

 

いいですね。でも、2つヘッダーがあるのも邪魔なので、下を消したいです。

f:id:skn_0410:20160819065815p:plain

 

f:id:skn_0410:20160819065856p:plain

 

よしっ消えたと思ったら、アレッ、上も消えてるじゃないですか。。。

 

何か、別のアイデアはないでしょうか。

 

ありました。さっきは、同じFieldを持っていってからダメだったのであって、違うFieldを持っていってみましょう。

ただし、Field内の値が複数あると、その値で、また区切りができてしまうので、ひとつの値のみを持つField を配置する必要があります。

まあ、それがあるかないかを考えるのも面倒なので、自分で作ります。

[Dummy_Header]

"A"

 

この場合、数字(例えば ”1”)を使うよりも、文字列を使用したほうが取り扱いが簡単です。

 

では、これを列、[Customer Segment]の右側に持っていきましょう。

f:id:skn_0410:20160819071032p:plain

 

以下のように、見た目は良いようです。[Dummy_Header]の表示を隠してみましょう。

f:id:skn_0410:20160819072618p:plain

 

f:id:skn_0410:20160819071204p:plain

できましたっ!!。

 

さて、折角なので、機能の中身をより詳しくスタディをしておきます。

f:id:skn_0410:20160819071811p:plain

 

f:id:skn_0410:20160819072024p:plain

Columnのいちばん右端のFieldの値(この場合④)が、下側にやってきます。下側に配置できるのは ひとつ限定のようです。

残りのField値は、左端がいちばん上、その後はひとつ右のFieldがひとつ下という順番で表示されます。

もちろん、Show Header のCheck/Uncheckで表示させたいField値のみを残すことが可能です。

 

細かい話でしたが、割とニーズがありますし、何より覚えれば簡単に対応できます。

まあ、最近見た記事にタイトルの表現があったんで、使ってみたかっただけなんですけどね。

 

では、Enjoy Tableau !!

 

 

よくある誤解-Tableauって積み上げ折れ線グラフが描けないよね?-

愛ちゃんの涙にも感動ですが、進撃の巨人(最新20巻)も再び動きが出てきて涙が出ますね。アルミ~ン。。。

映画は見れないけど、書籍は読めます。電子書籍バンザイ!

 

今回は、簡単なネタなのですが、よく聞かされる誤解。

「Tableauって積み上げ折れ線グラフが描けないよね?-」

実際、誤解されても仕方ないかも。。。

私もしばらく前までそう思っておりました。2年ほど前にTableauのエンジニアと直接話した時に、「それはできない」って言われたので、できないものだと思っていました。

簡単に、順を追っていきましょう。

まず、以下のような3つのピルをドラッグすると、自動でグラフが作成されます。

f:id:skn_0410:20160817223720p:plain

初心者(誰でも最初は初心者です)が戸惑うのは、折れ線グラフと、棒グラフを描いたときに、振る舞いが違うことではないかと思います。

試しに、上記のグラフのグラフタイプを「Bar」に変更すると、グラフは下記のように「自動」で変更されます。

f:id:skn_0410:20160817223055p:plain

積み上げ棒グラフになりました。

いやいやありがたいんですよ、実際。想定されるグラフタイプの使い道に応じて「自動」でデフォオルト設定を変えてくれるのは。

でも、最初は戸惑うよね。。って話です。

タイプを「Area」に変更すると、やはり、積み上げになります。

f:id:skn_0410:20160817223216p:plain

これらの結果から、「棒グラフは積み上げにできるけど、折れ線はできないんだ」という判断になりがちです。

が もちろん、それは正しくありません。

 

まあ、ご存知の方は「何をいまさら」な話ですが、実際聞かれることも多いし、やる前から「ないもの」と判断されてるケースも見ました。

そして、これは、またまた チェック/アンチェックの問題でもあります。

折れ線グラフに戻して、メニューバーの「Analysis」から、「Stack Marks」を On にします。

f:id:skn_0410:20160817225114p:plain

すると~。。。

f:id:skn_0410:20160817225251p:plain

エリアチャートになるんですよ。

 

「折れ線積み上げはできない」って過去の私が判断したのも無理からぬことかも。。

そんでもってそれは、初めて使う人全員にあてはまります。

改めて、グラフタイプを「折れ線」にして、ようやく積み上げの折れ線グラフが得られます。

 

f:id:skn_0410:20160817225508p:plain

 

一方、棒グラフの、積み上げじゃないグラフも同様に、Stack Markを Off にすることによって作成できます。

f:id:skn_0410:20160817225702p:plain

 

こちらですね。

 

f:id:skn_0410:20160817225824p:plain

棒グラフの積み上げじゃないグラフは、色が重なると後ろの棒の高さが分からないので、ColorのShellで、Transparency を変更してあげる必要があります。

f:id:skn_0410:20160817230151p:plain

このケースは、積み上げじゃない棒グラフは、タイプ選択としてはあまり適切ではないですね。

ただ、機能的な説明を続けると、Color Legend 内で、各カテゴリの順番を変えてあげることで。どの色が一番前にくるか、設定することができます。いちばん上がいちばん前、いちばん下がいちばん後ろとなります。

f:id:skn_0410:20160817230849p:plain

ピンクをいちばん前に持ってくる変更を行った後は、こんな感じです。

f:id:skn_0410:20160817230919p:plain

簡単ですが、今回はこの辺で。

それでは、Enjoy Tableau !!

 

 

また、チェック・オア・アンチェックひとつで。。-空白セルを表示する-

オリンピックも話題ですが、シンゴジラも流行ってますね~。

すご~く見たいのですが、海外にいる間は、どうしようもありません。こういうときは、もどかしいです。

こらえ性がないので、ついついネタバレ含めて情報をチラ見してしまうのですが、ますます気分が落ち着かなくなってしまいます。尾頭ヒロミ課長補佐、気になって仕方ないです。ツイッター、罪です。。。

 

さてさてTableau ですが、時には簡単なビューを作成するのに100 ステップも必要だったり、

 

tableautableau.hatenablog.com

 

逆に、ひとつのチェック/アンチェックがVIZのキーを握ることもあります。

tableautableau.hatenablog.com

 

今回も、後者のお話です。

受けた依頼は、テーブルに空白セルを表示したいというもの。

下にあるようなシンプルなテーブルです。

f:id:skn_0410:20160817052608p:plain

これはこれで問題ないのですが、例えば上から4つ目の、" 6" Cubicle Wall ***" をフィルタから選択した際、下図のようになってしまいます。

f:id:skn_0410:20160817052744p:plain

一見、問題ないように見えますが、このアイテムのデータが存在しない2010年の列が、隠されてしまっています。このように見せたいときは問題ないですが、2010年にはデータがないことを示すためには、2010年の列表示をさせたいです。

また、ダッシュボードの時には、フィルタしたときだけ、フォーマットが変わってしまうことも避けたいです。

以下のように、2010年度の列を表示させたい  というのがリクエストです。

f:id:skn_0410:20160817052947p:plain

最初は、以下の計算式を試してみました。

[Sales (ZN,lookup)]

zn(lookup(sum([Sales]),0))

 過去に挙げたPostでも紹介した方法です。こちらです。

tableautableau.hatenablog.com

 

これだと、確かに、「0」を表示させることはできました。

f:id:skn_0410:20160817053158p:plain

 

しかしながら、フィルタをかけると、

f:id:skn_0410:20160817053415p:plain

やはり 2010年度の列は、表示されていません。

 

答えは非常に簡単です。ただし、いつものことながら、

『解答を知っていれば』です。

"Show Empty Columns" をチェックします。

f:id:skn_0410:20160817053636p:plain

 

ただ、これだけでは、まだ表示されません。

f:id:skn_0410:20160817053822p:plain

さらに、"show missing value" をチェックします。

f:id:skn_0410:20160817053936p:plain

ディメンションが Date 関連でなければ、"show missing value" のチェックなしで、空白セルの表示がなされます。

f:id:skn_0410:20160817054210p:plain

 

これで基本的に完了ですが、ひとつだけちょっとややこしいことが起きます。

それは、フィルタに関してです。

f:id:skn_0410:20160817054600p:plain

今、フィルタは、「Product Name」のみですが、Columnにある「Product Container」の右端をクリックして、フィルタを表示させてみます。

f:id:skn_0410:20160817054804p:plain

以下のWindowが表示されます。

f:id:skn_0410:20160817054835p:plain

何の気なしに、OKをクリックすると、以下のように予期せずフィルタされた状態になります。

f:id:skn_0410:20160817054937p:plain

フィルタシェルから、「Product Container」を取り除くと、元の通り、空白セルが表示された状態になりますし、

f:id:skn_0410:20160817055710p:plain

表示させたいアイテムを選択すれば、それらのみが表示されます。通常のフィルタと同じです。

ということで、チェック・アンチェックひとつでVIZが変わる例を紹介しました。

 

それでは、Enjoy Tableau !! 

 

 

作ってみたかったグラフ-平均寿命、平均余命-

引き続き、オリンピック面白いですね。

まだ気は早いですが、終わったら、こちらのグラフもアップデートする必要がありそうです。

 Tableau Public

 

さて、もうひとつ作ってみたかったグラフがありました。

それは、平均寿命/平均余命のグラフです。

私も大きくなるまでよく分かっていなかったんですよね。「平均寿命」。

平均寿命80歳とか言われると、何となく、自分も80歳位まで生きることになるのかなぁなんて思ってました。そして、それはあながち間違いでもありません。

 

でも、自分自身へのあてはめ方に関して、どうもしっくり来てなかったんです。
数字の意味合いとしては、WIKIにありますが、

平均寿命(へいきんじゅみょう)とは、
0歳時における平均余命

そして、

平均余命(へいきんよめい/へいきんよみょう)とは、ある年齢の人々が、その後何年生きられるかという期待値のことである。

だから毎年発表される「平均寿命」は、その年に生まれた子供たちの平均余命、つまり、何年生きられるかという期待値になります。

 

では、私の残りの人生はあと何年あるのでしょう?

厚生労働省の発表しているデータには、年齢ごとの「平均余命」が出ています。

昨年のデータから、私の該当年齢を見ると、平均余命が38年、つまり82歳まで生存が「期待*1」できることになってます。

ちなみに、昨年度の「平均寿命(男性)」は80.8歳。ですので、既に44歳まで生き残った私は、昨年生まれの子供たちの平均より、1年ちょっと長く生きることが「期待」されます。

前置きが長くなりましたが、作りたかったグラフは、自分が何歳まで生きるのか、20年前の時点と、直近では数字がどれくらい違うのか。ということです。

20年前と比べて、「平均寿命が伸びている」というのは、20年前に生まれた子供たちの20年前の平均余命と、昨年生まれた子供たちの昨年時点での平均余命を比べているので、指標としては意味がありますが、「自分が何歳まで生きるのか。という期待値に変化があったかどうか」は分かりません。

それを比較するグラフを作りたかったのです。

つまり、20年前は私は24歳なので、20年前の24歳での平均余命と、今年の44歳の平均余命を比べたい。というわけです。

 

分かってもらえますかね??

 

で、調べてみました。

 

44歳男性。

f:id:skn_0410:20160812051241p:plain

平均余命だと残りの年数を示すことになるので、自分が何歳まで生きられるかという年齢を「期待寿命」と呼ぶことにします。

 

答えとしては、1996年(入手できた最も古いデータ)の「私」の期待寿命と、昨年時点の「私」の期待寿命とでは、4.1年  延びていました。(TOPのチャート。)

平均寿命の延びとおおよそ歩調を合わせているように見えます。

性別と、2015年時点の年齢を選択すると、各年齢時点での期待寿命が、5ポイントのドットで示されるようにしてみました。

 

次は、子供たち世代を見てみます。

20歳男性。

f:id:skn_0410:20160812072413p:plain

10歳男性。

f:id:skn_0410:20160812072558p:plain

小さいうちは、不慮の事故や病気による影響で、年齢が低いほど期待寿命は下がります。

 

次は、親世代

70歳男性。

f:id:skn_0410:20160812063706p:plain

えらく延びてるように見えます。6.2年。。生き残り(笑)の団塊世代のお世話をするのは、「平均寿命」の80.8歳までではなく、それより5年も長い「期待寿命」の85.6歳ですし、さらに延長傾向です。現役世代のみなさん、一緒にがんばりましょう。。。(震え声)

 

70歳女性。

f:id:skn_0410:20160812064024p:plain

延びは、4.8年。絶対値としては、私が還暦になっても、健在の可能性が高いですね。こちらは、「平均寿命」からのずれは3年程度です。

 

グラフのテクニックとは一切関係ないですが、我々現役世代は認識を新たにする必要があります。団塊の世代は、「平均寿命」よりもかなり長い寿命をお持ちだということを。。。

 

そのほかにもグラフ作成しました

 

加えて、いくつかグラフを並べてみました。

左下は、一般的な「平均寿命」の各調査時点ごとの推移を示したものです。

f:id:skn_0410:20160812060925p:plain

色が調査年度、濃いのが女性、薄いのが男性です。

 

中段は、各年齢時点における男女間の「期待寿命」の差を示しています。

f:id:skn_0410:20160812060947p:plain

 

55歳位までは6年程度の差で、ほとんど変化が見られませんが、70歳まで夫婦健在な場合、差が4年程度に縮まることになります。

 

もうひとつ、ニーズがあるかどうかは分かりませんが、興味があったので。。。

 自分がその年発表された「平均寿命」の年齢だった場合、その年齢の人たちの余命がどれくらいなのかという数字です。平均までたどり着いたけど、残りはどれくらい?という、なさそうでありそうな問いかけに答える試みです。

f:id:skn_0410:20160812062813p:plain

とりあえず、2015年で計算してみると、男性で8.5年、女性で7.2年であることが分かりました。

男性の方が1年以上も長いことをみると、平均よりかなり若くして亡くなる男性が多いことを示しています。乳幼児死亡率の影響なのかも知れません。各年齢のデータを詳しく調べれば答えはあると思いますが、今回は、調査の対象外とします。

 

自分の年齢の数字を調べて、生命保険の検討や老後の計画の参考にでもしてください。

 

それでは、Enjoy Tableau !!

 

*1:ここでいうのは、期待値の「期待」の意味合いに近いです

期待値 - Wikipedia