データ可視化のアイデア帳

データ可視化にまつわるあれこれ

Tableau Desktop Certified Professional 受験と合格は戦略が重要!

Tableau Certified Professional (以下 CP) 受験して早 3 か月、もはや記憶が曖昧な部分もあるので参考程度にしかならないのですが誰かの役に立てばという趣旨の記事です。受験の方法などは他にも記事を出されてる方がいらっしゃるので端折ります。試験の内容もサンプルがあるので見ておいてください。ちなみに合格の連絡が来るまでは結構待ちます。最短で 1 か月、私はおよそ 8 週間待ちました。

全体概要

Tableau CP は 試験時間が 3 時間プラス準備時間という非常に長い試験です。
セクションはざっくり 3 つで、それぞれに戦略があります。戦略そのものは後述するとして、とにかく気をつけたいのが配点比重と時間配分です。気がついたら時間がなくなっていたということを防ぐために、自分で 1 枚あたりにかける時間をある程度決めておくことをお勧めします。試験問題にも時間の目安が書いてあるのですが、試験中はそれどころじゃないのでざっくりでも頭に入れておくのがおすすめです。

セクション構成

  • セクション 1 - チャートの修正数問と LOD 関連 1 問
  • セクション 2 - ダッシュボードを作成するための Viz 作成とダッシュボード作成
  • セクション 3 - ストーリーの作成

配点比重は、セクション 2 と 3 で 65% だったか 70% なので極論するとセクション 1 を捨てても合格できます。ところが、セクション 1 もやろうと思えばいくらでも時間をかけられてしまうので気がついたらセクション 3 のストーリー作成が全然できなかった。。という話を何回か耳にしました。ストーリー作成が全く未着手で合格したという話は聞かないので、とにかくセクション 2 と 3 は確実にやり切るというのを目標にしましょう。

従って、最も時間を割くべきは実はセクション 2 です。セクション 3 はセクション 2 さえできていればそんなに時間をかけずにやり切ることができます。特にセクション 1 にそんなに時間をかけないのが肝心です。特に 30 分以上かかってるなと思ったら一旦やめて セクション 2 以降に進むべきです。

問題を始める前に

試験が始まる前に気をつける、というか私がハマった失敗を書いておきます。。。インストラクションにはちゃんと書いてあるのですが、緊張と英語のフォントが小さいせいで見落としました。
試験では データとワークブックが格納された色の名前のフォルダーを指定されます。*1そのフォルダーにある Zip ファイルをパスワードで解凍して問題に挑みますが、*2問題始める前に (仮想デスクトップの) デスクトップ にフォルダーの中身を必ずコピーしましょう。私はコピーしないまま試験を始めて途中でデータに接続できなくなり、敢えなく再受験の運びとなりました。*3

各セクションの戦略について

セクション 1 - チャートの修正数問と LOD 関連 1 問

セクション 1 は既にある Viz をビジュアル アナリティクスのベスト プラクティスに従って修正するというものと LOD のちょっと複雑な計算式を書いて Viz を作成するというものです。前述の通りここに時間をかけるわけにはいかないので、悩まなくて済むよう基本方針を決めておきます。繰り返しになりますが、時間はトータルで 30 分以内が目標です。

Viz の修正について。

1. まず問題の内容を読んでどのチャートに変更するか決める
どのチャートが適切かはこのブログにまとまってるので、参考にするといいかと思います。
都合 2 回分このセクションの試験を受けた感触からすると、2 つの指標を 1 つの Viz で表示する (=散布図) や 時間の経過をまとめる (=線グラフ) は頻出のようです。*4

2. 色、形状の変更を行う
問題を読むと、特定の指標やディメンションがわかるようにせよ、と書いてあるのでそれらが強調されるようにします。色は悩むのが馬鹿馬鹿しいので、強調する色と強調しない色を予め決めておきます。私は強調する色強調しない色で決め打ちしてました。量の多寡を色で示す場合はデフォルトの青とオレンジの分化で良いです。
形状の変更は線グラフの場合は強調する線を太くします。散布図の場合はサイズの変更または形状を強調したいところだけ変えるなどです。そんなに凝らなくて大丈夫だと思われます。

3. ラベル、ツールヒント、タイトルまたはキャプションの修正を行う
地味に重要なのがこのステップです。過去受験した人の話を総合すると、これをやっているかどうかで合否が変わったりするという説も。*5フォントはお好みのもので。*6

  • ラベル

強調するディメンション、値などにだけラベル入れましょう。余分な箇所にラベル入ってるとそもそも見づらいです。リファレンス ラインのラベルも調整しましょう。*7

  • ツールヒント

ツールヒントは必ず編集しましょう。とはいえ色に凝ったりする必要はありません。マークが何かわかる情報 (ディメンション名や年など) をタイトルっぽく入れるのと、必要なメジャーを残す、不要な情報は削除する位で大丈夫かと思います。

  • タイトルまたはキャプション

その Viz が「何を説明しているのか」「どこを見るべきか」という情報を含める形でタイトルまたはキャプションをつけます。問題によってキャプションを表示しろなど書いてあるのでその指示に従います。*8

  • 軸の編集

自動の軸範囲だと目盛りが細かすぎて見づらい、見切れるなどが発生している際には編集します。気になるのであれば軸のタイトルなども編集してもいいと思います。マストかと言われると微妙な気が。

LOD 関連問題

だいたい 1 問程度入っているみたいです。私が見た 2 回分の問題はそれぞれネスト LOD と INCLUDE を使用するものでした。*9業務で使用しない人が LOD を習熟するのは経験上非常に難しいと思います。一応勉強しておくとすれば、公式ブログの表現が理解できる、自分で計算フィールドを書けるくらいで充分じゃないかと思います。というのも、ぶっちゃけ配点が低いので捨てるというのも戦略ではないかと思うからです。*10

とにかく、セクション 1 は時間をかけない、悩んだら後に回すというのが肝です。*11

セクション 2 - ダッシュボードを作成するための Viz 作成とダッシュボード作成

ここでは、4,5 枚の Viz を問題の指示に従って作成します。ひとつひとつの Viz はそれほど難しいものはないのですが、仮想デスクトップのカクカク感でなかなか進まない、データソースの接続から作っていく必要があるので時間を取られがちです。
まずは問題をよく読んで適切な Viz を作成すること、ダッシュボードとして統一感があるものを目指すというのが方針です。

Viz 作成

セクション 1 と似ていますが、データへの接続等イチから Viz を作成します。地図は必ず出るみたいなので、地図の作成とグループ化、階層化の操作は押さえておきましょう。*12シェープ ファイルを使用した問題もあったので、どうしても心配な場合はオープンデータなどで配布されているシェープ ファイルを触ってみることをおすすめします。*13
それ以外のチャートは棒グラフ、線グラフ、散布図、クロス集計あたりだったかと思います。セクション 1 と同じ 3 ステップで Viz を作成していきます。色だけ、後続のダッシュボード作成で指定されるロゴの色を使うなど適宜調整します。Viz 間で全然違う色合いにならないように注意します。極論全部同じカラーパレットでいいんじゃないかと。

ダッシュボード作成

これまで使用した Viz を使用して、ダッシュボードを作成します。サイズ等は指示があったような気がします。

  • ロゴ画像

ロゴ画像を使うように指示されている場合は適当に配置します。私は大体タイトルの左側 (つまりダッシュボードの左上) に配置することが多いです。これは機能を知っている、使用できることを問うていると思うので、どこかに配置されてればいいと思います。

ダッシュボードの機能を使用せよ的な指示が入っています。具体的にこれを使用しなさいといった指示はないので自分で決めていくことになります。普通にダッシュボード アクション (フィルター) が第一選択になると思います。他に使用できそうなものがあれば適宜どうぞ。

  • 体裁

体裁を整えます。Viz の配置は 4 枚なら田の字配置でいいと思います。各Viz が見切れないようにする、グラフの縦横の配置を調整する (グラフラベルが見切れないようにする)、タイトル、各 Viz のタイトル、凡例がターゲットです。

おそらく重要視されているのはタイトルと凡例の設定ではないかと思います。
ダッシュボードのタイトル (太字、濃色、大きめフォント サイズ) とその下にアクションやフィルターの説明など (デフォルト フォント サイズ) を入れます。凡例が言葉で説明できる場合 (濃色が数値が高い、淡色が数値が低いなど) はそれも追加し、Viz 内の凡例は必要に応じて削除します。*14
各 Viz についても同様に設定します。

全体を見て破綻がないかチェックします。色味、文字、アクションなど。ここまでやってあと 10 分は残っていて欲しいところです。

セクション 3 ストーリーを作成する

ストーリーの作成はやってるかやってないかが最重要です。とにかく何でもいいから作ること!簡単に作るテクニックを残しておきます。これであれば、10 分で間に合います。セクション 2 が終わった時点で数分残っていればとにかく絶対諦めないでください。

1. セクション 2 で作成した Viz とダッシュボードを複製する
インストラクションにも書いてありますが、Viz と ダッシュボードをストーリー用に複製しておきます。通常必要のない動作ですが、試験上セクション 2 の評価対象の Viz が壊れないように複製します。

2. Viz 1 枚ずつとダッシュボードの都合 5 ページのストーリーを作る
Viz や ダッシュボードは何も変更しなくて良いです。1 枚のストーリー ポイントに 1 枚の Viz を貼り、その Viz を要約したひと言をタイトルにします。(xx は yy で値が高い、zzzz 年に aaa はピークを迎えた、など) 時間がないなら Viz そのもののタイトルを貼り付けておく位でもいいんじゃないかと。ダッシュボードは結論的なタイトルが良いと思います。

3. 時間があれば注釈をつける
Viz 側の注釈ではなくて、ストーリーで用意されている機能の方です。機能ちゃんと知ってますよってアピールです。

最後に

時間が来たらファイルを保存してアップロードします。この辺は試験管が指示してくれます。あとは結果を待つのみ。
ここまで書いておいて気が付きましたが、事前の水分/糖分補給、トイレは確実に。どれが欠けても途中で辛くなります。


普段日常的に Tableau を使用している、使用するグラフを適当に決めていないという人であればほんの少しのポイントを押さえるだけで Tableau CP は合格できるようになると思います。試験の価格も高ければ、時間も長く、ある程度はビジュアル アナリティクスの概要を知っている必要はありますが、全く対策できないものではないのでぜひチャレンジしてください。Viz 作成のスキルとしては Desktop II までの内容が迷いなく操作できれば良く、知っておいた方がいい tips は多いけれども、*15技術的に難しいものはそれほどないという印象です。

*1:Purple とか Golden Orange とか 6 つか 7 つしかない

*2:パスワードはコピペできない

*3:試験の続行問題があっても試験管に伝えればトラブルシュートと再スケジュールは可能

*4:ぶっちゃけそんなに種類が出てくるわけではなさそう

*5:全く未編集だったら落ちたという話は聞いた

*6:Tableau フォントでいいんじゃないか。重要なのは編集した痕跡が見えることかなと

*7:線グラフの右端だけにラベルを入れる方法、特定の箇所だけラベルを表示する方法は知っていて損はない

*8:日本人は「xxについて」というタイトル書きがちですが、結論をひと言でまとめた内容の方がわかりやすい

*9:そもそも初見で似通ったディメンション名を判別するのが非常に辛かった

*10:私は確実にできていなかったという自信があります。それでも合格しました

*11:時間があったら戻ってくれば OK

*12:Golden Orange では郵便番号で表示できる区画群をざっくり 4 つに分割しろ、定義はない。というのがあったのですが、1 つ 1 つの区画が小さくて 4 つにグループ化するのが非常にしんどかった

*13:ジオメトリの扱いと詳細レベルの関係くらいは知っておいてもいいと思う

*14:重複した情報は消しても構わない

*15:古いけどまとめて Tips がわかる動画

Tableau で政令指定都市

皆さんこんにちは。Tableau で地図を利用していると、「あれ?」って現象よく起きませんか。最も聞かれるのは「名古屋市 (神戸市、広島市 etc) が表示できないんです」という声。実はこれ、政令指定都市に起因する問題なんです。今回は Tableau で政令指定都市を扱う際の具体的な方法と注意事項を確認していきましょう。

そもそも政令指定都市とは

政令指定都市は現在 20 市が該当し、市でありながら行政区を持つちょっと特別な区です。詳細は ja.wikipedia.org を確認してください。

とりあえず政令指定都市を表示する

Tableau で地図を利用するとき、データに対して地理的役割を設定する、というのはご存知だと思います。
基本的な考え方として、地理的役割の「市区町村」は点で表記するとき、「郡」はポリゴン表記をしたいときに設定します。ここでは埼玉県を例にしてみていきます。

こんなデータがあったとします。数字は図書館の数です。埼玉県はさいたま市のみが政令指定都市です。
f:id:zkn360:20210128161309p:plain

市区町村のデータに対して、地理的役割「市区町村」を付与すると地図上の点として表現できます。

f:id:zkn360:20210128161450p:plain

市区町村のデータに対して、地理的役割「郡」を付与すると、ポリゴン地図として表現できるはずなのですが、さいたま市が消えてしまいます。

f:id:zkn360:20210128161602p:plain

消えたさいたま市を復活させるにはどうしたらいいかというと、まずは行政区を含むデータを用意する必要があります。

f:id:zkn360:20210128162103p:plain

この行政区を含むデータに対して、地理的役割「郡」を付与します。すると、消えたはずのさいたま市が復活します笑

f:id:zkn360:20210128162505p:plain

政令指定都市をひと固まりで表示する

政令指定都市をポリゴンで表示する方法はお分かり頂けたと思いますが、データの集計上、市単位で表示したいということはよくあると思います。ここでは政令指定都市をポリゴンかつひと固まりで表示する方法について記載します。

基本方針はデータのグループ化

Tableau では、地図上の領域をまとめて表示する機能があります。具体的な方法は下記のオンライン ヘルプにあります。
help.tableau.com

このオンライン ヘルプでは 3 つの方法が紹介されてまして、政令指定都市の表示でも同じ方法を使用することができます。ところが、明確な理由は不明なんですが*1、オプション 1 はうまくいくのですが、オプション 2 と 3 は表示には成功するのですが、都道府県でフィルターをかけると想定外の動作になります。*2
そのため、オプション 1 について見ていきます。

最初に地図上でグループ化することが重要

オプション 1 ってどんな方法かというと、地図上で領域を複数選択してグループ化するというやり方です。
さいたま市の場合、さいたま市xx区を全部選択して、クリップマークのグループ化を選択するだけなのですが、グループ化する詳細レベルを選択できます。*3ここで、都道府県と市区町村の両方のレベルが含まれている方を選ぶことが重要です。*4

f:id:zkn360:20210128180042p:plain

そのあとグループの編集が必須

グループ化したら OK のような気もしますが、残りの政令指定都市どうすんの、ということでグループの編集をします。ここで重要なのは「’その他’を含める」オプションを外すこと。やらないと正しく表示できません。残りの政令指定都市はぽちぽちグループ化していってください。*5名前は編集しちゃって大丈夫です。

f:id:zkn360:20210128181657p:plain

完成!!

これで、Viz 上の詳細レベルをグループ化した方のデータに置き換えれば完成です。お疲れ様でした。

f:id:zkn360:20210128182041p:plain

参考 Viz

せっかく政令指定都市を表示する Viz を作成したので貼り付けておきます。ご参考まで!

*1:多分詳細レベルの情報の問題と思われるけど、真偽は不明

*2:この理由について調査を依頼したけど、日本語ワカンネって理由で調査進まず

*3:地理的役割の「次から作成」と同じイメージ

*4:理由は上述の通り、フィルターが正常に作動しなくなるからです。

*5:20 個なので、気合いで乗り切ってください

Tableau でネットワーク図を書いてみる

Tableau あるある
A 「Tableau でネットワーク図書けますか」
B 「(頑張れば、あるいは、技術的には) 可能です 」
A 「(察し)」

Tableau Desktop はあくまで既にあるデータを可視化するためのツールです。ネットワークの要素を描画することはできても、「いい感じに」「バランスよく」ネットワークを書いてくれるわけではないので上記のようなやり取りになってしまいます。固定的な配置のネットワークならいざ知らず、ネットワークの要素がどのような近さなのか、どういった関係性かわからない場合では正直 Tableau だけでは解決できない問題になります。それでもネットワーク図書きたいんです、必要なんです、という場合には Tableau 以外のツールの力を借りる必要があります。

この記事では、レ・ミゼラブルの登場人物*1のデータを利用して、Tableau でネットワーク図を書く方法をまとめます。
f:id:zkn360:20200811154817p:plain
本記事は下記を参考にしました。直接元記事参照される方はどうぞ。
https://ladataviz.com/2019/12/15/build-a-network-graph-in-tableau-in-three-steps/


Tableau でネットワーク図を書く流れ

1.データ準備

データ準備が一番大変かもしれません。形式は JSON ファイルで用意します。この際必ず必要なフィールドが node と links になります。これらのフィールドの要件は下記になります。

  • node には id が必要。これがネットワーク図で言うところの「〇」の部分に相当します。
  • links には source と target が必要。どの id 同士につながりがあるのか、ネットワーク図で言うところの線の部分に相当します。

下記はサンプルです。

{ 
 "nodes": [
    { "id": A },
    { "id": B }
  ],
  "links": [
    { "source": A, "target": B }
  ]
}

こればっかりは Tableau ではどうしようもないので、サンプル データを見繕うなり、R や Python 利用してどうにか作ってください。
ネットワーク図の作成を試してみたいだけであれば、レ・ミゼラブルのデータは下記から取得できます。*2

レ・ミゼラブルの人物相関図とデータ D3.js v4 Force Directed Graph with Labels - bl.ocks.org

2.ネットワーク ジェネレーターにデータを投入する

ネットワーク ジェネレーターに用意した JSON ファイルを投入すると生成される nodes.csv と links.csv を取得します。

ネットワーク ジェネレーター Network data generator for Tableau / Tristan Guillevin / Observable

data = FileAttachment("mary@1.json").json()
という行の後ろにあるクリップのマークをクリックすると [Replace] というボタンが出てきます。クリックするとファイルのアップロード メニューが出てきますので用意した JSON ファイルを投入します。

f:id:zkn360:20200811162009p:plain

データを投入すると、ただちに CSV が生成されますので、ダウンロード ボタンから CSV を取得します。*3忘れずに 2 種類とも取得してください。
ついでにこの時点でネットワーク ジェネレーター側でもネットワーク図描画してくれるので、形をチェックしたり、ネットワーク同士の距離を調整したりもできます。*4

3.Tableau で Viz を作成する

データができたので、Viz を作成します。基本は Spider チャートと散布図を二重軸で重ねたものを作成すれば OK です。…って面倒ですよね? 参考元のブログではなんと Tableau のサンプルまで用意してくださってます。

ネットワーク図 テンプレート https://public.tableau.com/profile/guillevin#!/vizhome/Template-NetworkGraph/SimpleNetworkGraph

テンプレートのワークブックをダウンロードしたら、先ほど作成、ダウンロードしたデータに差し替えます。差し替える方法は何でもいい*5と思いますが、最終的に nodes.csv と links.csv を id で結合したものがデータソースになります。
f:id:zkn360:20200811163858p:plain

データを差し替えた時点でネットワーク図自体は出来上がっていますが、さらに Tableau で見た目を調整します。例えばレ・ミゼラブルのデータには人物のクラスター (group) のデータがあるので色付けしてみたり、登場人物名 (id) をラベルにしてみたり、value (おそらく登場した回数?) でネットワークの線の太さを変えてみたり。こういった調整ができるのが Tableau のいい所です。

実際に作成したネットワーク図はこちらからどうぞ。https://public.tableau.com/profile/naoko.ozaki#!/vizhome/LesMiserablescharacternetworkgragh/Characterco-occurenceinLesMisrables


データ準備さえどうにかなれば、意外と簡単にネットワーク図書けちゃいました。とはいえ、オリジナルの記事を書いていただいた Tristan Guillevin さんに感謝です。ぜひ皆さんも試してみてください。*6

*1:レ・ミゼラブル1巻半ばで挫折したので、人物相関が正しいかは皆様の判断にお任せします

*2:私はコピペして拡張子 .json で保存しました。ダサい方法ですみません。。

*3:なぜかダウンロードしたら CSV として認識されなかったので拡張子を編集して CSV ファイルにしました。

*4:円の大きさも調整できるけど、それこそ Tableau でやればいいので、特に気にならないなら全部デフォルト設定で良いと思います。

*5:ファイルの接続の編集でも、データソースの置換でもお好きな方法でどうぞ。

*6:Tableau Public にパブリッシュする際は、ぜひ Tristan Guillevin さんにメンションを!

非エンジニアのための Tableau パラメーター

こんにちは。突然ですが、Tableau のパラメーターを取り上げたいと思います。今回はパラメーター アクションはちょっと触れるだけなので、パラメーター アクションについて知りたい方は別の記事をご参照ください。

Tableau を始めて少し経った人たちが口々に言うのが「パラメーター」って何に使えばわからない、ということ。かく言う私もプログラミングなんて、新卒で入った会社で [show text "Hello World!"] って習った程度でどういう場面で使用すべきか正直良くわかっていませんでした。それで思い立ってユーザー会向けに勉強用コンテンツを作成していたのですが、昨今の状況で公開の目途が立たなくなってしまったため今回の記事にしようとした次第です。

そもそもパラメーターとは

もしかして信じられない人もいるかもしれませんが、私を含め日常的にコーディングをしない人はパラメーターが何か、ということ自体わかりません。ということで、なるべく平易な言葉でまとめてみました。

パラメーターとは
1.外から渡す
2.何らかの値で
3.結果に影響するもの

各項目についてみてみましょう

パラメーターを「外から渡す」とは

  • Tableau の viz 内ではユーザーが選択する

・パラメーター コントロールから入力する
いわゆるパラメーター (今回の記事の対象)
・Viz から動的に選択する
パラメーター アクション (今回の記事の対象外)

  • システム的に渡す (今回の記事の対象外)

・URL の一部に含める
・カスタム SQL の変数
JavaScript の変数
などなど

パラメーターは「何らかの値」

細かい解説は省いて、Tableau でパラメーターを作ってみるのが理解の早道だと思います。
Tableau でパラメーターを作成する際に決める項目は下記です。パラメーター コントロールはユーザーが値を選択するためのインターフェースということを考慮すると決めやすいと思います。

  • パラメーター名

ユーザーのアクションを促す名前が望ましい。(xx を選択、xx を入力 など)

  • データ型

ユーザーに入力して欲しいデータの形式を選択する。(浮動小数点、整数、文字列、ブール、日付、日付と時刻)

  • 現在の値
  • ワークブックを開いたときの値

2020.1 で追加された設定。日付などで最新の値を指定したい場合などに使用する。

  • 表示形式

書式設定

  • 許容値

選択肢から選ぶのか、値を直接入力するのか等を設定する

パラメーターを「結果に影響させる」

パラメーターを作成しただけでは、何も起きません。パラメーターと Tableau のそのほかの機能を組み合わせることによってはじめてパラメーターは作用します。つまり何のためにどんな機能と組み合わせるのかが重要で、また、どのようなシナリオのときに使うべきかが本質なわけです。

パラメーターのメリットは、ユーザーが値をコントロールできるのはもちろんのこと、1か所の入力で複数個所をコントロールできること、機能同士の掛け合わせができることなどがあります。これを踏まえて、Tableau でパラメーターを使用する方法についてみていきましょう。


Tableau でパラメーターを利用する

今回は利用方法をいろんなパターンで示すことを目標とします。ひとつひとつの手順を解説すると大変長くなってしまうため、詳細についてはワークブックをダウンロードして内容を確認してください。公式の KB などがざっと検索した範囲で見つかったものはリンクも付記してあります。

ワークブックはこちら Tableau Public


基本の使い方

1.Top N

① 整数型のパラメーターを作成
f:id:zkn360:20200306132712p:plain
② フィルターにディメンションを追加、条件を上位>パラメーターで指定
f:id:zkn360:20200306132726p:plain
③ パラメーター コントロールを表示する
f:id:zkn360:20200306132741p:plain
KB https://kb.tableau.com/articles/howto/using-a-top-n-parameter-to-filter-a-table?lang=ja-jp


2.タイトルなど文字列へ値を挿入する

① 任意のパラメーターをタイトルやテキスト項目に追加
f:id:zkn360:20200306132758p:plain
KB https://kb.tableau.com/articles/howto/adding-dynamic-descriptions-based-on-selection?lang=ja-jp


3.リファレンス ライン

① 整数型のパラメーターを作成
f:id:zkn360:20200306133020p:plain
② リファレンス ラインを追加
f:id:zkn360:20200306150034p:plain
③ パラメーター コントロールを表示
KB https://kb.tableau.com/articles/howto/creating-adjustable-reference-lines?lang=ja-jp

4.セットのメンバー

セットの条件に、パラメーターを使用した式を利用します
f:id:zkn360:20200306150143p:plain

※ これはセットを利用しなくても計算フィールドでも同じことはできます。結合セットを利用したいとかその他の機能と組み合わせる場合はセットが便利です。

5.Top N とそれに近いメンバーを表示する

ちょっと面白い例です。上位 N 位までを表示して (1.Top N と同じ) それに加えて、N+n 位まで表示する方法で、ランク外ではあるもののもう少しでランクインできそうなメンバーを示します。これは計算フィールドを利用します。
f:id:zkn360:20200306150908p:plain

4. セットのメンバー の手順から続けて
① 目標判定のための計算フィールドを作成
f:id:zkn360:20200306150723p:plain
念のため、この計算フィールドはリファレンス ラインを超えた項目からカウント アップ、リファレンス ラインを下回った項目からマイナスでカウント ダウンしています。リファレンス ラインから数えて n 番目を数えています。

② 上記の計算フィールドをフィルターへ
表示させたい範囲をマイナス n で指定する

6.ビンのサイズを指定する

これはオーソドックスな利用方法です。ビンの作成時にビンのサイズをパラメーターで指定すると、パラメーターコントロールを利用してビンのサイズを変更することができます。
f:id:zkn360:20200306151229p:plain

7.結合セット

セットの便利な点は、セットを 2 つ組み合わせて結合セットを作成できることです。セットを 2 つ選択して右クリックで結合セットを作ることができます。
f:id:zkn360:20200306151606p:plain
結合セットを使用する場合は結合条件に注意する必要があります。言葉だとわかりにくいので、図にしてみました。
f:id:zkn360:20200306151757p:plain

結合セットを利用すると、下記のような表現ができます。もちろんパラメーターと組み合わせて範囲を変更することもできます。
f:id:zkn360:20200306151913p:plain

手順はこれまでの手順とほぼ同様のため省略します。詳細はワークブックをご確認ください。

8.パラメーター アクション

パラメーター アクションはパラメーター コントロールを利用するのではなく、Viz の任意のマークを選択し、その値をパラメーターとして利用する方法です。これだけで相当数のブログ記事を検索して見つけることができると思います。ので、今回の記事では扱いません。

Online help パラメーター アクション - Tableau

ちょっと応用

基礎編では 1 つの項目を変化させるためのパラメーターを扱ってきましたが、応用編では複数の項目、シートにまたがる利用方法をご紹介します。

9.表示するメジャーを変更する

同一のシート内で別のメジャーを表示させたい場合に利用します。例えば「サンプル - スーパーストア.xlsx」で売上と利益と数量をパラメーターで切り替えて表示したいとします。
① リスト形式のパラメーターを作成
f:id:zkn360:20200306152748p:plain
② 計算フィールドを作成
f:id:zkn360:20200306152816p:plain
③ 上記の計算フィールドを使用して通常の Viz を作成する
④ パラメーター コントロールを表示

Online Help 例 – パラメーターを使用したメジャーのスワップ - Tableau

10.詳細レベルの変更

9. では表示するメジャーを変更しましたが、ここでは詳細レベルに利用するディメンションを切り替えます。とはいえ手順はほぼ同じです。
① リスト形式のパラメーターを作成
f:id:zkn360:20200306153139p:plain
② 計算フィールドを作成
f:id:zkn360:20200306153145p:plain
③ 上記の計算フィールドを [詳細] として使用する通常の Viz を作成する
④ パラメーター コントロールを表示

11.集計レベルの変更

10. では詳細レベルとして使用するディメンションそのものを切り替えましたが、ここでは単一の日付のディメンションで日付の粒度を切り替えます。
① 日付の粒度を指定するパラメーターを作成
② 日付の粒度を変更する計算フィールドを作成
f:id:zkn360:20200306154017p:plain

以下はオプションです。
日付の粒度を変更すると、棒グラフの幅が単一だと見栄えが悪くなります。それを避けるために棒グラフの幅を調整する計算フィールドを作成します。
f:id:zkn360:20200306154158p:plain
この計算フィールドを棒グラフの幅とする Viz を作成します。
f:id:zkn360:20200306154306p:plain

12.日付ずらし

昨年と比較して今年のトレンドは早いのか遅いのか、どのくらい違うのかを比較するために日付をずらします。
f:id:zkn360:20200306162957p:plain
① 日付をずらすためのパラメーターを作成
ここでは週をずらす想定です。
② 特定の期間のメジャーをずらすための計算フィールド作成
「サンプル - スーパーストア.xlsx」を利用しているため、特定の 2 年分のデータをあらかじめ別の計算フィールドで取り出してあります。
f:id:zkn360:20200306163250p:plain
③ 不連続の年/月/日/週数を連続に変更した軸を利用して Viz 作成
連続の日付を選択すると図が重ならないので注意

13.表示するシートの変更 (シート スワップ)

ダッシュボード上で表示するシートを切り替える (スワップ) する方法。
① 表示したいシートをそれぞれ作成 (a と b)
② 表示するシートを選択するパラメーターを作成
f:id:zkn360:20200306163639p:plain
③ フィルターに利用するための計算フィールドを作成
f:id:zkn360:20200306163709p:plain
④ それぞれのシートで ③ の計算フィールドをフィルターへ、パラメーター コントロールで表示したいシートが表示されているときにフィルターをチェックする
f:id:zkn360:20200306163830p:plain
ダッシュボードを作成
片側のシートは浮動でもう一方のシートに重ねる。シートのタイトルは非表示にしておく。

Online Help ダッシュボード用のシート セレクタを作成する - Tableau

14.背景イメージの変更

あまり知られていないのですが、背景イメージをパラメーターで制御することができます。
f:id:zkn360:20200306164136p:plain
マップ メニューの背景イメージの編集で「次の場合にのみ表示」を利用します。
f:id:zkn360:20200306164053p:plain
※ こちらはワークブック内にサンプルありませんので、ご興味のある方は自力でどうぞ。

Online Help ビューで背景イメージを使用する - Tableau



いかがだったでしょうか。結構パラメーターって使い道ありますよね。これにパラメーター アクションまで加わったら可能性は無限大です。ぜひぜひ活用してください。


ちなみに今回の記事のネタ元は Tableau Conference 19 の下記セッションです。もしご興味があればご参考ください。(ワークブックも計算式も手順もありませんが、何をしたいのかはわかりやすいです。)
Parameters: Oh, the Places You'll Go | Tableau Conference 2019

Google のデータ ビジュアライゼーションに関するマテリアルデザインの記事を Tableau 視点で読む

先日話題になった、Google のデータ ビジュアライゼーションの記事が気になったので読んでみました。

material.io

この記事はデータを可視化する際の基本的なセオリーから、個々のケースでの DO と DON'T が紹介しています。非常にまとまっている反面、英語であること、それなりの前提知識を必要とするなと感じたので*1 Tableau 的な視点から読んでみた感想をまとめていきます。

なお Tableau 視点ですので、Tableau にない思想やない機能については言及しません。訳してるように見える箇所も意訳ですので、正確性を求める方は元記事を読んでください。

Principle

データ可視化の目的。データ可視化は意思決定のために必要なコミュニケーション手段であり、可視化されたデータは比較が容易になったり、ストーリーを伝えるために使われる。

重要なポイントは 3 点

  • 正確性

データの可視化ではデータの正確性、明確さ、完全性を優先する。データを歪めない。

  • 使いやすさ

文脈や目印を使ってデータ探索や比較を容易にする。

  • 拡張性

ユーザーのニーズに合わせて、画面を構成できること

Type

いわゆるどんなチャートを選ぶべきかという話。Tableau ではおなじみの 「表示形式」の話なので割愛。日本語で詳細を見たい方は Visual Vocabulary がお勧め。

github.com

Selecting Charts

例えば同じ「比較」にしても何種類もチャートが選択肢としてある中、どれを最終的に選ぶべきかという話。本来は Visual Vocabulary 見れば済むのですが、シンプルにまとまっています。

時系列変化を示す場合

チャートの種類 利用目的 ベースラインの値 系列の数 データ型
線グラフ データのわずかな変化を示す 任意の値 任意 (8 以上の時に有効) 連続
棒グラフ データの大きな変化を示す。個々のデータが全体に影響しているのか、比較やランキングなど ゼロ 4 以下 不連続またはカテゴリー
エリア グラフ データセット間の関係を簡潔に示す。個々のデータが全体に影響しているか示す。 ゼロ (1 系列以上の場合) 8 以下 連続

棒グラフと円グラフ

棒グラフも円グラフも全体における個々のデータの割合を占める場合に使うと解説されてます。円グラフは使うな、と言いたいところですがここでは元記事に従います。

棒グラフは異なるカテゴリーの時間による変化を示すのに使う

f:id:zkn360:20190708160723p:plain

ちなみに「Google 流資料作成術」によると、カテゴリーとカテゴリー間はすき間をあけることでそれぞれをグループ化して見やすくしようとあるのですが、Tableau ではそれはできないので、線を入れることで表現します。*2
f:id:zkn360:20190708160944p:plain

円グラフは時系列変化に使わない

そもそも角度を並べて比べるのは不可能。
f:id:zkn360:20190708161424p:plain

せめて帯グラフ使うとか工夫しましょう。
f:id:zkn360:20190708162055p:plain

エリア チャート

エリア チャートは積み重ねたタイプとオーバーレイ (レイヤーを重ねた) タイプの 2 種類。

積み重ねたタイプのエリア チャートは系列が増えても見やすい

f:id:zkn360:20190708163230p:plain

オーバーレイ タイプのエリア チャートは読みにくい上にデータをあいまいにする

Tableau だと、[分析] メニューの [スタック マーク] を [オフ] にするってことですね。系列が 2 つまでならアリなんですけど、3 つ以上だと…そもそも凡例と合ってるかさえわからない状態に。
f:id:zkn360:20190708163715p:plain

Style

形や色、テキストを上手に使うとユーザーへの認知的負荷を下げることができるため、いわゆる「ぱっと見てわかる」につながる。

Styling different types of data

データをどのような見た目にするか決めていくにあたりどのような視覚属性があるかというと下記の通り。

  • 形状
  • サイズ
  • エリア
  • 大きさ
  • 長さ
  • 角度
  • 位置
  • 方向
  • 密度

複数の属性を使用する場合もある。
f:id:zkn360:20190708165208p:plain
ちなみに Tableau だと色と形の両方を一度に表現する凡例は作れないので、凡例用のシートを別に作成します。

形状

いろんな形状でチャートは表現できるし、どれを選ぶかは迷いどころ。

Level of shape detail

一瞬新手の LOD かと思いました。見る人にとってわかりやすい、操作しやすい形状を選択し、あまり詳細にする (細かすぎる) のは避けるべき。

f:id:zkn360:20190709165857p:plain
棒グラフは本来棒の先端の位置 (長さ) で数値の大小を比較するものだが(左)、無意味に先端を丸くした棒グラフは数値が読み取りにくい。(右)

色の利用方法について。Tabloid*3 であればそんなに違和感ないと思われる箇所です。

  • カテゴリーを区別する
  • 量の多寡を示す
  • 特定のデータをハイライトする
  • 意味を伝える

色の使用例:
f:id:zkn360:20190710100817p:plain

Area of Focus

色の使いすぎは良くないよ、という話。色はデータを注目するのにも使える一方、色の使いすぎはデータのどこに注目すればいいのかわからなくなる。
f:id:zkn360:20190710101736p:plain
Tableau のイベント等でよく出る例ですね。

その色がどういう意味か示そう

色には付随するイメージがあります。警告安全や、熱い冷たい等がわかりやすい例だと思います。ただ、このイメージも文化が違えば意味が違うため、色がどういう意味かを示しておく必要があります。

Accrssibility

有名なのは赤緑色盲ですが、人によっては異なる色の組み合わせでも見えづらいということがあります。そういう状況も考慮しましょう。詳細な説明とどういう色に注意すべきかはこのサイトがわかりやすいです。

tsutawarudesign.com

線グラフとして使うだけではなく、様々な使い方ができる。

  • 注釈
  • 予測要素
  • 比較材料
  • 信頼区間
  • 異常
線のテクスチャーを工夫してわかりやすいチャートに

Tableau では元記事のように点線でグラフを作成することができないので、色にカテゴライズされる話でもあるのですが、要は色や形の種類数も人間が画面を見て理解するまでの時間を遅くする要素になるのでなるべく減らしましょうということです。

f:id:zkn360:20190710104222p:plain
左は最新の年を濃色、その前の年を薄色で示し、なおかつカテゴリーごとに色を付けた例で、右は年とカテゴリーの組み合わせ一つ一つに違う色を付けた例。

Typography

どうもタイポって言うとキーボードの打ち間違いと思ってしまうのですが、このセクションは文字の体裁の話です。対象となる部分はタイトル、データラベル、軸ラベル、凡例です。ざっくりまとめると読みやすいフォントとそこそこ大きい pt サイズ使いましょうということ。日本語だと私はメイリオか Meiryo UI 使うことが多いです。あと何でもかんでもボールドにすると読みにくいので注意しましょう。

Iconography

ここら辺りから Web UI 的な要素が強くなってきます。*4ユニバーサルな意味合いのアイコンを使うというのが最も注意すべき点といったところです。アイコンの使用用途は下記が代表的なものだそう。*5

  • カテゴリーのデータで、他のグループやほかのカテゴリーと違うことを示す
  • フィルターやズーム、保存やダウンロードといった UI コントロールとアクションを提示する
  • エラーやデータの欠損、完了、危険といったような状態を示す

アイコンを凡例として使うというのも一手ですね。

軸ラベル

まさに「Google流資料作成術」でも触れられている点になります。軸ラベルを付ける場合にはほどほどの目盛り幅にするというのも気を付ける点。
f:id:zkn360:20190712101420p:plain

軸はゼロから始めるべき

たまにグラフの開始位置がゼロから始まっていないものを見かけますが、誤解を与えるのでやめましょう。研究成果を良く見せたいとか世論の印象を操作したい目的でゼロから始まっていないグラフを見かけますね。詐欺チャートとかとも言われます。
f:id:zkn360:20190712101721p:plain

目盛りの幅も気を付けよう

f:id:zkn360:20190712102607p:plain

グラフの縦横はラベルの読みやすさで決めてもいい

商品名など軸ラベルが長くて読みづらいときなどはグラフの縦横変えてもいい。ちなみに Tableau には文字を斜めに表示する機能はないので、名前が長い時は横向き一択です。
f:id:zkn360:20190712103331p:plain

凡例と注釈

チャートに必要な情報を付加するのが凡例と注釈。注釈は特定のデータをハイライトする目的で使う。

凡例とチャートを分けると理解しにくくなるので、チャートに直接ラベルとして凡例を表示してもいい。
f:id:zkn360:20190712103825p:plain

Small Display

小さなディスプレイ (アプリとかなんとかウォッチとか) にデータを表示するときの注意事項。Tableau をそこまで小さいディスプレイに表示することはないので割愛。

動作

ユーザーが操作するためのコントロールをイチから作成する場合はどうしましょうかというセクション。Tableau にはもともと複数の種類の動作が用意されており、結果どういったアクションが発生するのか作成者が制御できるので、ここでは割愛。

ダッシュボード

特定の目的に沿ったチャートの集まりをダッシュボードと言います。*6

ダッシュボード デザイン

ダッシュボードのデザインは目的に応じて変わります。…ってこのセクション、以前私が会社のイベントで講演した内容でして、良ければそちらの資料をご覧ください。*7講演内容のダッシュボードの型のセクションが一番近いです。

https://www.tableau.com/sites/default/files/ddo_tokyo_2019_techsession_e7.pdf

元記事では目的別のセクションの前にある、デザインガイドがわかりやすいです。
上から情報をどのように並べるべきか、どの程度の情報を並べるかというのが完結に説明されています。

  1. 最も注意すべき問題は何か (ダッシュボードのタイトル)
  2. その問題が発生したタイミング
  3. 問題が発生した箇所
  4. その問題で影響を受けるほかの問題など
ダッシュボードのタイプは 3 種類
  • Analytical
  • Operational
  • Presentation

これも講演内容に(以下略


さて、長い記事にお付き合いいただきありがとうございました。データの可視化には一定のセオリーがあるということがわかりやすくまとまってましたね。ツールによってできる/できないはありますが、共通のセオリーは覚えておいて損はありません。

*1:この記事を理解する前提知識としては間違いなく「Google 流資料作成術」の書籍です。お時間の許す方は先にそちらを一読されることをお勧めします。

*2:そもそも Viz の線を全部消す方がよっぽどしんどい

*3:Tableau 使う人のこと

*4:したがって、端折る度合いが大きくなってきます

*5:アイコンの使い方なんで改めて考えたことなかった。

*6:知ってた

*7:いつまでリンクが生きているかは不明です。悪しからず

何かと便利な Tableau での日付ずらしテクニック

Excel で 2 つの日付の差を計算するのが上級テクニックという記事を先日 Facebook で見かけて目をむきました。Tableau だと初級ハンズオンの次くらいに日付計算を扱ったりするので特に難しいという印象はなかったのですが、関数そのものの使い方ではなく利用シナリオをもっと知っていたら適用できる場面がもっと増えるかもしれません。ということで今回は最近私が使って便利だなと思った日付計算のシナリオをご紹介します。と言ってもタイトル通り日付をずらすシナリオです。


そもそも何がやりたかったかというと、これ。今度沖縄に行くことになったので、そのタイミングで梅雨が明けているかどうかを調べてみようと思ったわけです。気象庁では 1951 年以降の梅雨入りと梅雨明けのデータを公開しており、*1これを利用して今年の梅雨明けを予測できる Viz を作成したかったんです。

f:id:zkn360:20190613151809p:plain

前処理は置いておいて、*2単純に梅雨の日数を比較するだけなら日付の比較で解決します。計算式はこんな感じ。


梅雨の日数
DATEDIFF("day", [梅雨入り], [梅雨明け])


ところが、私は梅雨入りの日付と梅雨明けの日を結んで線の長さで梅雨の日数を表示したかったんです。*3この場合、Tableau で使用するチャートはガントチャートです。ガントチャートの場合は軸の値が連続である必要があります。日付を日の連続にすると 「2019 年 6 月 13 日」といったように年月日まで考慮されます。通常の連続日付を使用するとこんな感じになります。

f:id:zkn360:20190613151307p:plain


これだと軸の範囲もさることながら比較したいのは月日の部分だけなのに年まで考慮されてしまっているがために、ずれた形での表示になります。これをずらさずに月日だけで比較したい。そんな時は日付をずらす (新たに作る) テクニックが有効です。例えば、今回はすべてを同じ年とみなしてしまえばいいので年を強制的に作ってしまいます。計算式はこちら。


軸用日付
MAKEDATE(1900, MONTH([年月日]), DAY([年月日]))


※年を 1900 に設定しているのは、元データに干渉しない適当な値を入れているだけです。
この軸用の日付を利用すれば、年が同じですので、月日だけを並べることができます。実際の Viz は ↓ を参照ください。


この日付をずらす (作る) テクニック、以外と役に立ちます。例えば前年同期間比較。

前年と今年 (だけに限った話ではないですが) の同日あるいは同週などを比較したいときに使うパターンです。同週比較の場合、日付の週数を使えばいいのではと思いきや週の始まりが日曜日に設定されているため同週と言っても日付にかなりずれが出ます。

ちなみに週や会計年度の始まりは変更することができます。*4データソース名を右クリックして「日付のプロパティ」を確認ください。


f:id:zkn360:20190613153409p:plain


さて、前年と今年の同日もしくは同期間を比較したいときには日付 (年) を強制的に揃えます。梅雨 Viz で解説したのと同じ方法ですね。ただ梅雨 Viz と違うのは相対日付が使えるよう最新の日付に揃える必要があるということ。この場合、計算式はこんなものが使えます。


① 今年と日付の年差
DATEDIFF("year", [日付], TODAY())

② 日付を今年に揃える
DATEADD("year", , [日付])


※もちろん ① と ② をまとめて記述しても大丈夫です。

複雑そうに見えますが、元データの日付と今日の日付の年数の差を元データの日付の年部分に足して、日付をすべて今年に揃えているだけです。これで相対日付フィルターを使って、特定の期間だけを年をまたいで分析できるようになります。

具体的なサンプルは Tableau Public に置いておきましたので、適宜ご利用ください。
public.tableau.com

*1:気象庁|過去の梅雨入りと梅雨明け

*2:もちろん Tableau Prep Builder でやりました。

*3:雨っぽい表現にしたかった

*4:データソースによって異なります。

Tableau 2019.2 新機能 パラメーター アクションで簡易分析を強化する

Tableau Desktop 2019.2 には様々な新機能が追加されました。*1その中で気になったのがパラメーター アクション。2018.3 で追加されたセット アクションに続く強力な機能です。強力な機能ですが、何にどうやって使えばいいの? ってことで思いつくままやってみました。

この記事で説明するサンプルはこちら。



Tableau のアナリティクス機能はとても便利で、簡単に平均や中央値を教えてくれます。
f:id:zkn360:20190527164857p:plain


アナリティクスのスコープ (計算対象) 全体の値だけでなく、選択した箇所の値も再計算して教えてくれる優れもの。これを Tableau では簡易分析なんて呼んでたりします。
f:id:zkn360:20190527164952p:plain


ただ問題は、全体の値と選択した箇所が (ざっくりではなく) 具体的にどの程度差があるかを知るには計算を都度しないといけないという点でした。選択と同時に値まで確認できたらいいですよね。それをかなえるのがパラメーター アクションです。
f:id:zkn360:20190527165000p:plain

パラメーター アクションとは

これまでリストや数値の入力でパラメーターの値をセットしていたのに対し、パラメーター アクションは Viz を直接選択するなどの動作によりパラメーターをセットできる機能です。
Parameter Actions - Tableau *2

使い方

1.パラメーターの作成
タイトルを入力するくらいでしょうか。
f:id:zkn360:20190527165349p:plain


2.パラメーターを反映させるための計算フィールドを作成
とりあえず選択した値を確認するため、シートに表示するためのフィールドを作成しました。*3
f:id:zkn360:20190527165639p:plain


3.パラメーター アクションの設定
ダッシュボードにアクション元のシートとアクション先のシートを配置します。[ダッシュボード] メニューのアクション>アクションの追加>パラメーターの変更を選択します。
f:id:zkn360:20190527170306p:plain


名前とソースシート、アクションの実行対象を設定します。この辺は他のアクションと同じです。パラメーター アクションに固有なのはその下のターゲット パラメーターと値の箇所。ターゲット パラメーターはその名の通り、どのパラメーターに値を反映させるかを決めます。値は何の値をパラメーターに受け渡すかを設定します。今回は選択した箇所の [売上] の平均を求めたかったので設定は図のようになります。
f:id:zkn360:20190527170820p:plain


これで設定は出来上がり!
念のため検算します。この図では左側がソース シート、右側がターゲット パラメーターを数値で表示したものです。
f:id:zkn360:20190527171759p:plain


あとは計算フィールドなどの組み合わせで冒頭のようなダッシュボードを作成していきます。
使い道はベータ時代のこのブログが詳しいです。
Parameter actions (now in beta) extend Tableau interactivity: Here’s how and when to use them | Tableau Software


まだまだ使い道の模索が必要ですが、複雑な計算式を書かなくても済むようになる、複数選択が可能といった点がパラメーター アクションのメリットだと思います。
ちなみにダッシュボードを作成していて、選択のクリア (パラメーター値のリセット) が課題だなと思いました。なぜそう思ったかはダッシュボードを操作して確かめてみてください。

*1:DataDayOut のアレコレに伴い、ようやく触れるようになってきました。

*2:2019 年 5 月時点ではまだ日本語のオンライン ヘルプがないようです。

*3:よく勘違いされている方がいるのですが、パラメーターは作成しただけでは Viz に反映しません。Viz に反映できるよう計算フィールドを作成して、Viz に配置してください。