Tableau でできる表現をGoogle スプレッドシートでもやってみた その1 ×ピボットテーブルでランク / ◯ SPARKLINE 関数でセル内に横棒グラフ
表計算ソフトのグラフ機能を使い倒していたら、BIツールなんていらなくない……………?
そんなふうに考えていた時期が
私にもありました。
Tableauは その高度なビジュアライゼーション機能で知られていますが、同じ表現をGoogle スプレッドシートのグラフやピボットテーブルなどを駆使して再現することはできるのでしょうか?
このシリーズでは、Tableau で表やグラフを作成し、同じものをGoogle スプレッドシートで再現してみます。
Tableau のDATA Saber の課題をGoogle スプレッドシートでやってみる
Google スプレッドシートやExcel でグラフをばりばり使いこなしているけど、BI ツールってどんな表現ができるかわからない、どういう操作性かわからない。
そんな人はたくさんいます。
Tableau で何ができるかを体系的に学ぶには、DATA Saber という認定プログラムで課されているデータ分析の問題に挑戦したり、解説動画を観るとよいと思いつきました。
この記事を執筆している2024年1月現在、DATA Saber の認定プログラムの中でこれらが課されていて、プログラムに参加していない人でも、問題文にアクセスができる状態となっています。
これらの問題の中の「設問」の箇所をクリックすると、
Tableau でこのような分析をしてください、という問題を表示します。
Tableau だけでなく、表計算ソフトでもデータに基づいた意思決定の文化を広めることに役立てるため、ありがたく問題を活用させていただきたいと思います。DATA Saber のみなさまには多大な感謝です。
Ord 1のQ1 の問題を解いてみる
DATA Saber のウェブサイト内の課題、
「1.HandsOn - Fundamental」の「設問」をクリックすると、
Tableau Public で公開されている問題ページを表示します。
この問題の中から、いくつかをTableau で解いた後で、Google スプレッドシートでも解いてみる、ということをしてみます。
Tableau で解いてみる
DATA Saber の課題ページから、Q1、Q2などのタブをクリックすると、
異なるシートが表示され、そのシート内に問題文が表示されています。
Ord 1のQ1 を解いてます。以下の手順です。
「行」に見出しとなる項目(ディメンション という)である「カテゴリー」と「サブカテゴリー」をドラッグ&ドロップ
列に集計値を求めたい項目(メジャー という)である「売上」をドラッグ&ドロップ
※ここまでで完了してもよい同一カテゴリ内での順位がわかるように、列の「売上」をCtrl キーを押しながら行にドラッグ&ドロップ
作成された行の「売上」のデータ型をディメンションに変更
行の「売上」を「簡易表計算」>「ランク」
行の「売上」の「表計算を編集」>同一のカテゴリ内のサブカテゴリでの順位を示すように変更
ランクの昇順に並べ替え
完成
まで、7手をもちまして、Tableau での実装となります。
※ランクの表示に加え、実際の売上の合計、売上合計の数値を表示、などの工夫もしてみました。
Google スプレッドシートで解いてみる
さて、Tableau であっという間に作成できたこの表現、Google スプレッドシートでもできるでしょうか。やってみる!
データの範囲を広めに指定して
「挿入」>「ピボットテーブル」>新しいシート
※Tableau ではシート単位でグラフや表を作成するので、Google スプレッドシートでも表の単位でピボットテーブルを作成することにします。ピボットテーブルエディタの「行」に「カテゴリー」「サブカテゴリ―」をドラッグ&ドロップ
ピボットテーブルエディタの「値」に「売上」をドラッグ&ドロップして、集計方法を「SUM」
ここまでは簡単にできますが、これ以降が大変です。
同一カテゴリ内でのサブカテゴリのランク、というのが集計項目にないのです。
カテゴリ内でのランクを表示するには、
ピボットテーブルエディタの外にRANK 関数を使用したり、IF 関数を使用しらできないことはないのですが、データソースが更新されたり、行や列を変更すると、不具合を起こしそうです。とっても大変です。
サブカテゴリを「売上 のSUM」の「降順」で並べ替えて、
カテゴリ列の値が空白でない(つまり、新しいカテゴリが出現する行)なら1、そうでない(カテゴリが同じ行)なら、1つ上のセルの値に1を足す
という処理を思いつき、正確に定義できれば、ランクを表示できます。
Tableau で表現できた、表内に横棒グラフを挿入、というのもGoogle スプレッドシートのピボットテーブルでは実現ができないかと考えます。
セル内にグラフを表示する、SPARKLINE 関数を使用することでできなくはないのですが。
まで、標準機能3手、関数による実装手順たくさん、Google スプレッドシートでの実装となります。
できないことはないけど、データの変更に弱い
Tableau のこの課題に対しては、Google スプレッドシートでも実装できないことはないのですが、とても手間がかかりますし、ピボットテーブルエディタを編集すると(例えば、カテゴリを外しちゃうとか)、定義した関数が正常に動作しなくなります。
とてもシンプルで、データを見る人がフィルタを変更したり、行や列、値の集計方法を変えたり、並べ替えをしない、など、作られた表やグラフをただ眺めるだけという使い方をするなら、Google スプレッドシートでも実装できます。
それが果たして、データ駆動型(データドリブン)のビジネスなのか。
グラフを作るための時間、グラフを作るための発想にたくさんのリソースを取られないか。
Tableau だったら標準機能だけで瞬時に高度な可視化ができたり、条件を自由自在に変更してもエラーがでない!
DATA Saber の最初の1つ目の課題にGoogle スプレッドシートで取り組んでみただけなのですが、Google スプレッドシートの不便を体感しました。
表計算ソフトで十分!って思っているかた、Tableau などのBI ツールもとても便利なので、ぜひ機能について学習してみてくださいね。
引き続き、このシリーズではDATA Saber の課題にGoogle スプレッドシートでも取り組んでみて、Google スプレッドシートでもなんとかなるのか?という挑戦をしていきます。
この記事が気に入ったらサポートをしてみませんか?