その他お問い合わせ先

lodestar@truestar.co.jp

運営会社

株式会社truestar
truestar activation株式会社

マリメッコチャート(Marimekko chart)を作成してみる

Tableau10.0で実装された「連続軸マークのサイズ変更」の機能を使って、マリメッコチャートと呼ばれる図を作ってみました。

マリメッコチャートを使うと、全体の量と内訳を視覚的に捉えることができます。

2軸を1つのグラフでまとめて見られる点が積上げ棒グラフとの違いです。

今回はスーパーストアのデータを使用しました。

横軸がセグメント(地域ごとの売上の大きさに合わせた幅を持つ)、縦軸が地域内のカテゴリシェアを表しています。  

var divElement = document.getElementById(‘viz1491279699115’); var vizElement = divElement.getElementsByTagName(‘object’)[0]; vizElement.style.width=’804px’;vizElement.style.height=’669px’; var scriptElement = document.createElement(‘script’); scriptElement.src = ‘https://public.tableau.com/javascripts/api/viz_v1.js’; vizElement.parentNode.insertBefore(scriptElement, vizElement);

  作成方法を順を追って説明します。

 

1.「売上」を行に配置し、地域、カテゴリで色分け

2.計算フィールドの作成

3.列に作成した「積上売上」を配置し、以下の設定で計算

 

4.「売上」の計算を合計に対する割合に変更、「カテゴリ」を使用して計算に変更

5.「列ごとの売上」をサイズに指定、サイズを固定、軸の単位の幅を「列ごとの売上」、配置を右に変更

6.ラベルなど細部を整えて完成

 

連続軸マークのサイズ変更ができるようになることで何ができるようになるのかな、

と調べてみてたところ、マリメッコチャートが作れそうとのことだったので作ってみました。

使いどころは難しそうですがこんなこともできるようになりましたよ、ということで。

 

Tableau_id執筆者:林 周作(Shuusaku Hayashi)

続きを読む マリメッコチャート(Marimekko chart)を作成してみる

Alteryxで調査データをTableau用データに加工してみた-Part 2 #Alteryx #16 | Alteryx Advent Calendar 2016

『Alteryx Advent Calendar 2016』スポット参戦シリーズ第五弾です。

Alteryx Advent Calendar 2016 | シリーズ | Developers.IO

Alteryx Advent Calendar 2016 – Qiita

16日目のエントリとして14日目のエントリのPart 2として、大量の調査データをAlteryxでTableau用データに加工してみたいと思います。

ちなみに14日目のPart 1エントリは以下です。

 

様々な国の調査データを比較したかったり、調査データをトラッキングしたいとなると大量の調査データを取り扱うことになります。

Part 1の形のデータベースとなると、データ粒度が回答者IDごとであり、尚且つTableau上では、表計算で回答率を算出するため、データが大きいとTableauのスピードが著しく悪くなります。

そのため、以下のAlteryxワークフローで大量の調査データにも対応できるTableau用データベースを作成してみました。

 

以下でPart 2で追加したツールの詳細を説明します。

 

このSummarizeを入れるだけで、25003行だったデータが、9008行まで収縮できました。約40%の収縮です。

完成したデータはこれです。

 

明日17日目はクラスメソッドさんの『Communityの使い方 』です。乞うご期待!

Kazuki Koebisawa

続きを読む Alteryxで調査データをTableau用データに加工してみた-Part 2 #Alteryx #16 | Alteryx Advent Calendar 2016

Alteryxで調査データをTableau用データに加工してみた-Part 1 #Alteryx #14 | Alteryx Advent Calendar 2016

『Alteryx Advent Calendar 2016』スポット参戦シリーズ第四弾です。

Alteryx Advent Calendar 2016 | シリーズ | Developers.IO

Alteryx Advent Calendar 2016 – Qiita

 

14日目のエントリとしてクラスメソッドの川崎さんが以下のエントリでもご説明してくださっていますが、調査データをAlteryxで実際に加工してみようかと思います。

Tableau Conference 2016 at Austin [レポート]調査データを可視化する 2.0 – Data Revelations #data16

 

活用するデータは以下になります。

まずは、数値形式で格納されているデータです。

 

次に、文字形式で格納されているデータです。

上記、データがない場合もあるかもしれません。

その場合は、以下のようなマスターを作成することをおすすめします。

 

最後に、質問の補足情報が格納されたデータです。

Tableauで加工する際に、必要になる情報です。

「Wording」は、Tableauで、質問の内容を表示するために使い、また、「Question grouping」は、TableauのView毎の単位となります。

このデータは、ほとんどの場合、手元にないと思いますので、同じようなものを作成することをおすすめします。

ただし、「Question Type」については、必須ではありません。

 

これらのデータを活用し、以下AlteryxワークフローでTableau用データを作成しました。

非常に簡単なロジックとなっています。

 

続きを読む Alteryxで調査データをTableau用データに加工してみた-Part 1 #Alteryx #14 | Alteryx Advent Calendar 2016

時系列を付与した散布図の作り方

稀に使用される「時間を軸においていない散布図に折れ線で時系列を追加したグラフ」を作成してみます。

一見して判りにくいグラフとなる為汎用性は低いですが、2軸の指標に対して年を追った傾向を見る際に役立ちます。

 

サンプルデータソースの「世界指標」を使用して生産人口割合とGDPの関係をあらわしたダッシュボードを作成して見ました。 ポイントは折れ線のパスに「年」を入れる部分です。 素直に実装すると年の進行方向が判りにくかったため、矢印を入れています。 if last()=0 then “終点” elseif  lookup(AVG([人口(15~64歳)]),1)-AVG([人口(15~64歳)]) > 0  and lookup(AVG([GDP]),1)-AVG([GDP]) > 0 then “右上” elseif lookup(AVG([人口(15~64歳)]),1)-AVG([人口(15~64歳)]) > 0 then “右下” elseif lookup(AVG([GDP]),1)-AVG([GDP]) > 0 then “左上” else “左下” END

非常にシンプルな実装となっていますので興味がある方はダウンロードして確認してみてください。

var divElement = document.getElementById(‘viz1480306039280’); var vizElement = divElement.getElementsByTagName(‘object’)[0]; vizElement.style.width=’1004px’;vizElement.style.height=’869px’; var scriptElement = document.createElement(‘script’); scriptElement.src = ‘https://public.tableau.com/javascripts/api/viz_v1.js’; vizElement.parentNode.insertBefore(scriptElement, vizElement);

続きを読む 時系列を付与した散布図の作り方

フィルタを使用する際のシェアの算出方法について

製品やブランドのシェアを算出するケースは非常に多いと思います。

今回はフィルタを使用する際のシェアの算出方法についてお話します。

使用するデータソースは「スーパーストア」です。

 

シェアを算出する際は「sum([売上])/WINDOW_SUM(sum(売上))」といった形で「対象/全体」を計算しますね。

全ての対象を表示している場合は問題ないですが、表示するメーカーは絞る(or一つにする)際のシェア算出方法が課題となります。

素直にフィルタで絞ってしまうと、絞った中でのシェアを表示してしまいます。

カテゴリごとのシェアを表示するといった際はいいのですが、メーカーを絞る際は問題となります。

これはディメンションフィルタでフィルタされた後に表計算が行われるため発生します。

(Tableau online Helpより)

詳しい内容はTableau online Helpを参照してください。(https://onlinehelp.tableau.com/current/pro/desktop/ja-jp/calculations_calculatedfields_lod_filters.html)

解決策は以下の3種類が考えられます。

・個々のレコードにトータルの値を持たせる

・フィルタを表計算フィルタにする

・トータル計算にFixedを使用する

各々について見ていきましょう

 

・個々のレコードにトータルの値を持たせる

予めデータ側にトータルの値を持たせてしまって、フィルタが掛かっても算出できるようにします。

「sum([売上])/avg(トータル売上)」

メリット

・表計算なしで算出できる為、軽い

デメリット

・フィルタを掛けても一切トータルの値が動かない為、どの単位でトータルを持たせるかが問題となる

・単純にAVGで計算できなくなるケースもあり、データの準備、扱い共に難易度が高い

 

・フィルタを表計算フィルタにする

表計算フィルタは表計算が行われた後に実行されるため、フィルタを表計算を使用したものに変更すれば正しく表示されます。

lookup(min([メーカー]),0)

といった計算式を作成しフィルタに入れます。

メーカーをビューに入れないと動作しない点に注意が必要です。

メリット

・手軽

デメリット

・アクションフィルタには適用できない

・表計算フィルタは実際には非表示にしているだけであるため、重い

・表計算フィルタである為、フィルタを表示する為にも表計算が行われる(重くなる)

・フィルタ対象をビューに使用しなければならない

・複数ワークシートへの適用が出来ない

 

・トータル計算にFixedを使用する

Fixedはディメンションフィルタの前に計算される為、トータル計算にFixedを使用すれば正しく表示されます。

「sum([売上])/sum({fixed:sum(売上)})」

メリット

・Fixedの計算を調整することで要件に柔軟に対応可能

デメリット

・Fixedはビュー表示とは別に計算が行われるため、重い

・Fixedの計算の調整が必要

 

続きを読む フィルタを使用する際のシェアの算出方法について

データの集計、非集計について

Tableauでは既定ではディメンションをビューに入れると非集計として、メジャーを入れると集計として扱います。 集計と非集計とは何なのか、計算式を書く際の注意点について書いてみたいと思います。 使用するデータソースは「サンプルストア」です。

集計とは データの区分となるセルに対して、一つの値になるように集計します。 平均、合計、中央値、最大値、最小値等様々な集計方法があります。 ポイントは、一つの値になるように集計するということです。 文字列を集計として扱わなければならないときに壁となります。

非集計とは データを集計せず、一行ずつ別のものとして扱います。 ビューに追加する場合はデータを区分する単位となります。

 

計算式を作る際の注意点 以下の2点が挙げられます。 いずれも重要となりますので、確認してみてください。

・かけ算と割算 初級者がつまずきやすい点です。 かけ算と割算する際に非集計データを使用するとレコードごとにかけ算、割算し、その結果に対して更に集計を行うことになります。

合計に対してかけ算割算を行う場合は以下のように明示的に行います。

・集計と非集計の比較は出来ない よく計算式がエラーになる原因になるやつです。 等号でつなぐ際や、IF文の内部等に集計データと非集計データは混在できません。 「1対多」、「多対1」ではつなぐことができず、必ず「1対1」の関係になっていないといけない為です。

数値データを非集計扱いにしても問題が無い場合は非集計に揃えます。 数値を集計しなければならない場合は、文字列も集計が必要です。 よく使用する集計はATTRです。 ATTRはデータが一意となる場合にその値を表示し、そうでない場合はNULL(*)を返します。 一意になっていない場合NULLになる点は注意が必要です。

 

Tableau_id執筆者:林 周作(Shuusaku Hayashi)

続きを読む データの集計、非集計について

TotalとWindow_sumの違いについて

今回は表計算のTotalとWindow_sumの違いについて説明します。 使用するデータソースはサンプルストアです。

Total() パーティション内の値を対象に()内の計算を行います。

Window_Sum() 各セルで()内の計算を行いその結果に対してパーティション内の合計を計算します。

total(sum([売上]))とwindow_sum(sum([売上]))は同じ結果となります。

total(avg([売上]))とwindow_sum(avg([売上]))は異なる結果となります。 total(avg([売上]))では都道府県内の売上の平均を計算しているのに対して、 window_sum(avg([売上]))では都道府県内の市区町村ごとの平均を計算しその合計を計算しています。

total(avg([売上]))とwindow_avg(avg([売上]))でも異なる結果となります。 total(avg([売上]))では都道府県内の売上の平均を計算しているのに対して、 window_avg(avg([売上]))では都道府県内の市区町村ごとの平均を計算しさらにその平均を計算しています。

TotalとWindow_Sumは混同しがちですが、性質が異なります。 目的に応じて使い分けていってください。

Tableau_id執筆者:林 周作(Shuusaku Hayashi)

データブレンドを使用して別のデータソースから静的に情報を付与する方法

今回はTableau社のTutorial映像(英語)からの受け売りです。 http://www.tableau.com/ja-jp/learn/tutorials/on-demand/cleaning-data-bulk-re-aliasing

内容はタイトルどおりですが、実際に見てみないと?という感じだと思いますので日本語で読みたい方向けに説明いたします。

今回はサンプルストアの注文シートと関係者シートを使用します。 注文データソースに地域マネージャー情報を付与してみましょう。 通常思いつく方法は ①データソースの結合 ②データブレンド の2点だと思います。 ざっとやってみましょう。

①データソースの結合 図のようにデータソース画面から結合をおこないます。

通常のディメンションと同様に地域マネージャーを使用できます。

メリット ・(データブレンドより)一般的に高速 デメリット ・複数の異なるデータソースから結合できない(10.0で解消)

②データブレンド

先に注文データソースから「売上」を入れ、次に関係者データソースから「地域マネージャー」を入れます。 リンクが適切に設定されていれば結合と同様の結果が得られます。

メリット ・異なるデータソースからブレンド可能 ・手軽 デメリット ・低速

それでは、今回の本題の「データブレンドを使用して別のデータソースから静的に情報を付与する方法」を行います。 データブレンドを使用するところまでは②と同様です。 プライマリデータソースから「地域」をセカンダリデータソースから「地域マネージャー」を行に入れます。 行に追加した地域マネージャーをクリックすると「プライマリグループの作成」「プライマリ別名の編集」が表示されます。 2パターンとも説明します。

まずは「プライマリグループの作成」から。 グループの編集画面が表示されるのでOKを押します。 プライマリデータソースに名前を地域マネージャーでくくったグループディメンションが作成されます。 セカンダリデータソースとの接続を解除しても、そのまま使用できます。

メリット ・異なるデータソースから付与可能 ・手軽 ・高速 ・付与後はセカンダリデータソースを閉じてよい デメリット ・グループ特有の制限がかかる(計算式に挿入できない) ・その時点でのセカンダリ情報を静的に付与するため、セカンダリデータソースが更新されても更新されない

次に「プライマリ別名の編集」です。 別名の編集画面が表示されるのでOKを押します。 「地域」に「地域マネージャー」が別名として登録されます。 先ほどと同様にセカンダリデータソースとの接続を解除しても、そのまま使用できます。 対象ディメンションの別名が直接更新されるので元のディメンションとしての表示は出来なくなります。 その為一旦複製して、複製したディメンションに対して別名の編集を行うのが適切です。

メリット ・異なるデータソースから付与可能

続きを読む データブレンドを使用して別のデータソースから静的に情報を付与する方法

表計算の詳細について:応用編

表計算の詳細シリーズのおそらく最後になります。 一回目 「表計算の詳細について:区分の指定と場所の指定」 二回目 「表計算の詳細について:レベルと再開間隔」 過去二回で簡単にではありますが表計算の詳細について紹介しました。 三回目は今まで紹介していたことを交えて表計算をいろいろと使っていきます。

さすがに表計算だけで全てをまかなうのには限界があるためパラメータやフィルターも使っています。 今回は今までのようなINDEX関数を使った例ではなく「スーパーストア」の売上を使います。 今回やることは以下になります。

『サブカテゴリの最新月時点での売上と前年同月までの累計売上増減比率を増減比率の順位で示す。』 下図が完成形となります。 全データを使用するとサイズが大きくなるのでカテゴリを家具で絞っております。

ステップとしては下の①から⑤の順番で行います。

①年月の累計売上の算出

②前年同月の累計売上の算出

③前年と当年の累計売上増減比率の算出

④最新月のみ表示

⑤売上増減比率の順位で並び替え

お時間が取れる方は回答を見る前に自前でどこまで出来るか挑戦してみるのも良いかと思います。 挑戦する際は上のステップの通りにやる必要はありません。 出来るところからやっていただいて構いません。

ヒント:今回の表計算の詳細画面には下記の図のように計算フィールドが複数の物もあります。

 

今回の内容はかなり長くなってしまいましたのでストーリーにさせていただきました。

<a href=’#’><img alt=’表計算の詳細について:ちょっと複雑にしてみた ‘ src=’https:&#47;&#47;public.tableau.com&#47;static&#47;images&#47;_6&#47;_6381&#47;1&#47;1_rss.png’ style=’border: none’ /></a>

今回のを含めて三回、表計算の詳細について投稿いたしました。 記事を書いている中で筆者にも勉強になることが多くありました。 表計算はTableauの中でもよく使いよく躓く箇所だと思います。 これらの記事がTableauで表計算を使う際の一助になればと思っております。

これにて表計算の詳細シリーズは終了?となります。 次回は完全に未定ですが、ネタが見つかったら書いていこうと思います。

Tableau_id執筆者:鶴岡 鯨魚 (Isana Tsuruoka)

続きを読む 表計算の詳細について:応用編

表計算の詳細について:レベルと再開間隔

表計算の詳細について第二段ということで、レベルと再開間隔についてです。 この二つを理解しているかどうかで表計算の利便性は格段に変わると思います。 ただ再開間隔は字面を見ればどんなものか想像がつきますが、レベルは字面を見ても想像がつき難いです。 本投稿ではレベルと再開間隔を簡単な例とともになるべく分かりやすく紹介していきたいと思います。

今回の投稿は前回の 表計算の詳細について:区分の指定と場所の指定 からの続きになります。 前回は表計算の詳細で指定する区分と場所について簡単な例とともに紹介いたしました。 前回を読まなくても問題無い内容となっていますが、細かいデータの設定等については省略させていただきます。 今回も使用するデータはサンプル「スーパーマーケット」、表計算にはINDEX関数を使用しております。

実際に中身を見る前に、レベルと再開間隔とは何ぞやという問題がありますので簡潔にまとめます。

レベル:指定した場所の水準(Level)以上で計算を実行する。 再開間隔:指定した場所の単位で区切って計算を一から始める。

場所と書いてあるようにレベルと再開間隔では場所の指定で設定したものしか使えません。

実際に中身を見ていきましょう。まずは行に地域と都道府県を列に年 オーダー日とオーダー日の月を配置します。 前回のおさらいもかねて、区分の指定に年 オーダー日とオーダー日の月を、場所の指定に地域と都道府県を入れて、 レベルと再開間隔は初期状態のまま(レベル:最も深い、再開間隔:なし)で適用してみます。

 

年と月の範囲で都道府県、地域方向に計算します。

上の例を使ってレベルと再開間隔を設定すると挙動がどのように変化するかを見ていきます。 先にも書いた通りレベルと再開間隔には場所で指定した内容しか選択できません。 上の例のとき初期状態のままだとレベルの中には、

・最も深い ・地域 ・都道府県

の三つが選択できるようになっています。

同様に初期状態のままだと再開間隔には、

・なし ・地域

の二つが選択できるようになっています。

なぜ再開間隔の選択肢がレベルより一つ少ないのか疑問に思う方もいるかもしれません。 再開間隔はレベルより浅い場所しか選択できないためレベルよりも選択肢が一つ少なくなります。理由は後述してあります。興味のある方は読んでみてください*1。

今回は場所の指定に地域と都道府県を指定したので、レベルも地域と都道府県を選択できます。 デフォルトで選択されている「最も深い」は選択肢の一番下を選択したのと同様です。 まずレベルを一番下にある都道府県で実行してみます。

結果は初期状態のときと変わりません。

上でも書いたとおり初期状態で選択されている「最も深い」は選択肢の一番下を選択したのと同様です。 今回の例ですと一番下は都道府県になっていますので「最も深い」を選択したのと変わりません。

またレベルを地域に設定します。都道府県の水準では計算せず、地域水準で計算を行います。 年と月の範囲で都道府県を考慮せず地域方向にのみ計算していることが分かります。

次に再開間隔を設定してみます。

現在の設定では再開間隔は地域しか選択できません。再開間隔はレベルの設定より浅い場所しか指定できないためです。 今の設定でレベルを地域に指定すると再開間隔は設定できません。 レベルを都道府県、再開間隔を地域に設定します。

年と月の範囲で地域と都道府県方向(下方向)に計算を行い、地域の単位が関西地方から関東地方に切り替わった際に計算が初めから行われているのがわかります。

以上でレベルと再開間隔に関して、例が簡単すぎた気がしますが一通り紹介いたしました。

続きを読む 表計算の詳細について:レベルと再開間隔