ecoslymeです。
BIツールとして非常に優秀なTableau(タブロー)ですが、慣れるに従いエクセルと大きく異なる点に気づいてきました。
エクセル(Excel)では、「右の列や下の行に数式を挿入して計算させることが可能」なのは皆さんご存知かと思います。
これはTableauでも同じように右の列に数式を「計算フィールドの作成」で追加することが可能です。
しかし、Tableauでは下の行に数式を追加したり挿入することが出来ません。
Tableauは、「帳票作成ツール」ではなく「ビジュアル分析ツール」であるため、このようにエクセルでは簡単にできることが出来ないというギャップがあります。
しかし、それではさすがに不便でしょう。
あと少しでいい感じのダッシュボードが出来上がるのに、この行が挿入できないせいでリリースできない。。。
この記事では、そんなTableauで表(ビュー)の下の行に数式を追加・挿入する方法をご紹介します。
汎用性が非常に高い方法なので、是非覚えてみましょう。
この方法で解決しない場合、以下の記事をご覧になると良いです。
ecoslymeです。 BIツールとして非常に優秀なTableau(タブロー)ですが、エクセルの使い方と大きく異なります。 エクセルでできることが、意外とTableauだとできないことがあ[…]
操作前と操作後
⇓
Tableauのビュー(表)で計算行を追加・挿入する方法
Tableauのビュー(表)で計算行を挿入したい主な例として、以下の例を考えていきたいと思います。
- 「売上」と「売上原価」の勘定項目しかないため、「利益」の項目を追加したい
- 「貢献利益」という勘定が無いので追加したい
上の例で、皆さんがお困りの課題の大半を解決できるのではないでしょうか?
計算式は複雑に見えますが規則性があり、コピペして使いまわせるのでそこまで難しくはありません。
上の2つの例は同じテクニックを使用して作成することが出来ます。
汎用性が高い計算式の利用方法なので、最後までしっかり読んでみましょう。
以下が元データとします。
<元データ>
エクセルの元データは以下のような形をしています。
ここでのポイントは、年月が縦持ちのデータである点です。201904、201905…と、右の列ではなく、下の行に並んでいます。
(Tableauは横持ちのデータではなく、縦持ちのデータの方が相性が良いです)
<Tableauでの見え方>
上のエクセルと接続し、Tableauで一般的に作成する表のフォームへと変換します。
横軸に年月、縦軸は勘定としています。部名と課名を一緒に縦軸(ディメンション)に持ってくるパターンも多いと思うので、部名と課名も追加しています。
エクセルで言うところの、「ピボットテーブル」の状態になっています。
ここで問題なのが、Tableauでは気軽に「勘定」の中の項目(メンバー:売上、売上原価、販売費)を指定して集計するということが出来ません。
集計する際に指定できるのは、「勘定」という大きなくくりだけです。
「勘定」の中の「売上」という項目を指定して集計するということが簡単には出来ないことが、非常に不便になっています。
ですが、この記事ではその指定できないメンバー(売上など)を指定して、集計させていく方法をご紹介しますので、ご安心ください。
前処理
ここで、エクセルに対して前処理を行います。
今は何も考えずに同じことをしてもらえればと思います。
理由は後で説明します。
エクセルの「販売費」の行を全てコピーして最下行へ貼付して下さい。
その後、「販売費」⇒「貢献利益」と名前を変更して下さい。その後、データソースを更新して下さい。
テクニックの一つになります。
上の表のように、下の行(黄色セル)に「貢献利益」の行を追加します。
「売上」と「売上原価」の勘定項目しかない表に「利益」の項目を追加する
上の表では、「利益」という項目が無く、「売上」と「売上原価」という勘定になっています。
そのため、「売上」と「売上原価」の足し算を行い、「利益」(=売上+売上原価}という勘定項目を出します。
同様にして、「貢献利益」(売上+売上原価+販売費)という勘定項目も出します。
新たに「計算フィールドの作成」を行い、もう一つ新たに「当月実績(新)」という列を追加する作業を行います。
Tableauの表には、今ある「当月実績」を利用するのではなく「当月実績(新)」という項目を作成して利用していきます。
それでは手順を説明していきます。
作成手順
ディメンションの右にある▼をクリックしてから、「計算フィールドの作成」を選択して下さい
以下の数式を入力して下さい。計算フィールドの名前は「当月実績(新)」とすることにします。
if attr([勘定])=”売上” then
lookup(SUM([当月実績]),0)
elseif attr([勘定])=”売上原価” then
lookup(SUM([当月実績]),-1)+lookup(SUM([当月実績]),0)
elseif attr([勘定])=”販売費” then
lookup(SUM([当月実績]),0)
elseif attr([勘定])=”貢献利益” then
lookup(SUM([当月実績]),-3)+lookup(SUM([当月実績]),-2)+lookup(SUM([当月実績]),0)
end
Tableauで見ると以下の色付の数式になっています。
“end”を抜かして4つのグループ(① if …、② elseif …、③ elseif …、④ elseif…)になっていると捉えて下さい。
ここで数式の意味を説明します。(下に図で説明しています)
1つ目のグループの以下の数式について、簡単に説明します。
「if attr([勘定])=”売上” then」
⇒「勘定」の中の「売上」というメンバーを指定する
lookup(SUM([当月実績]),0)
⇒「当月実績」の「売上」勘定の行に集計結果を表示する。
次に、2つ目のグループについて説明します。
「elseif attr([勘定])=”売上原価” then」
⇒「勘定」の中の「売上原価」というメンバーを指定する
「lookup(SUM([当月実績]),-1)+lookup(SUM([当月実績]),0)」
⇒「当月実績」の「売上原価」勘定の行に集計結果を表示する。
“0”は「売上原価」と書いているメンバーから下に何行目にあるメンバーかを指定している。(この場合は「売上原価」)
「elseif attr([勘定])=”販売費” then」
⇒「勘定」の中の「販売費」というメンバーを指定する
「lookup(SUM([当月実績]),0)」
⇒「当月実績」の「販売費」勘定の行に集計結果を表示する。
「elseif attr([勘定])=”貢献利益” then」
⇒「勘定」の中の「貢献利益」というメンバーを指定する
「lookup(SUM([当月実績]),-3)+lookup(SUM([当月実績]),-2)+lookup(SUM([当月実績]),-1)」
⇒「当月実績」の「貢献利益」勘定の行に集計結果を表示する。
“-2″は「貢献利益」と書いているメンバーから下に何行目にあるメンバーかを指定している。(この場合は2行上(マイナス2行下)のメンバーである「売上原価」)
“-1″は「貢献利益」と書いているメンバーから下に何行目にあるメンバーかを指定している。(この場合は1行上(マイナス1行下)のメンバーである「販売費」)
3つとも足し算をしているので、「貢献利益」=「売上」+「売上原価」+「販売費」という結果になる。
以上をまとめると、以下の図のようになります。
規則性が分かると思います。
以上の計算フィールド「当月実績(新)」を作成し、表へ入れ込むとTableauでは以下のように表現されます。
新たに「表(下)に沿った…」という列(下の図では「当月実績(新)」のこと)が出てくると思いますが、これは後で説明します。
しかし、これでは意図した計算結果ではないので、1つ操作を加えます。
メジャーバリューにある「当月実績(新)」の▼をクリックしてから、「次を使用して計算」⇒「表(下)」を選択して下さい。
すると、求めていた数字が表れるようになりました。
後はきれいに形を整えます。
タイトル(表(下)に沿った…)を右クリックしてから、「別名の編集」を選択します。
別名を「当月実績(新)」とすれば、きれいな表が完成します。
以下のように、「当月実績」と「当月実績(新)」ができあがったので、後は「当月実績」のメジャーバリューを表から削除すればOKです。
次に、勘定で「売上原価」と書かれているものを「利益」へと変更します。
「売上原価」の文字を右クリックしてから同様に別名の編集をして「利益」へと名前を変更しましょう。
非常にスッキリした表になりました。
メリットやデメリット
メリットとしては、メジャーの項目が増えすぎないのでTableauの後任者でもメンテナンスがしやすいです。
また横軸(列)に対して「年月」という推移以外では、好きな計算フィールドを追加していくことが可能です(計画比、前年比、計画差、前年差など)。
逆にこの方法でしか、特定フィールドの中の項目を追加した場合(行計算の追加・挿入を行った場合)、列に年月推移以外の項目(計画比、前年比など)を入れることができないように思います。
(他の関数を組み合わせてもできませんでした。他に方法があれば、コメントで教えてください)
デメリットとしては、別名の編集で「売上原価」⇒「利益」と名前を変更しているので、計算フィールドを見たときにどの項目のことを言っているのか、パッと見で分かりづらいことです。
また下に利益率(%)など、単位の異なる(円と%など)項目を表示できないという制約がある点もデメリットです。
ですが、そのデメリットを上回る以上に汎用性が高いこと、メジャー項目がスッキリしていることがこの方法の良い点かと思います。
最後に
いかがでしたでしょうか?
Tableauを操作しているときに不便なことが時々ありますが、今回の方法のように応用を効かせればうまいこと解決することが出来ます。
Tableau社もこの行を挿入できない問題に関しては、恐らく多方面から要望を貰っていると推察します。
今後のTableau社の開発に期待したいです。
上記方法で解決しなかった場合、以下の記事もご覧ください。
ecoslymeです。 BIツールとして非常に優秀なTableau(タブロー)ですが、エクセルの使い方と大きく異なります。 エクセルでできることが、意外とTableauだとできないことがあ[…]
Tableauとはそもそもどんなシステム?と思われた方は、是非以下の記事もご覧ください。
ecoslymeです。 皆さんは会社の会議の時、出てくる資料はどんな資料ですか?おそらく、パワーポイントでグラフや数字が書かれているものや、エクセルに数字が書かれていて図が挿入されているものが多いのではない[…]