見出し画像

Tableau でできる表現をGoogle スプレッドシートでもやってみた その1 ×ピボットテーブルでランク / ◯ SPARKLINE 関数でセル内に横棒グラフ

表計算ソフトのグラフ機能を使い倒していたら、BIツールなんていらなくない……………?
そんなふうに考えていた時期が
私にもありました。

Tableauは その高度なビジュアライゼーション機能で知られていますが、同じ表現をGoogle スプレッドシートのグラフやピボットテーブルなどを駆使して再現することはできるのでしょうか?

このシリーズでは、Tableau で表やグラフを作成し、同じものをGoogle スプレッドシートで再現してみます。

Tableau のDATA Saber の課題をGoogle スプレッドシートでやってみる

Google スプレッドシートやExcel でグラフをばりばり使いこなしているけど、BI ツールってどんな表現ができるかわからない、どういう操作性かわからない。
そんな人はたくさんいます。

Tableau で何ができるかを体系的に学ぶには、DATA Saber という認定プログラムで課されているデータ分析の問題に挑戦したり、解説動画を観るとよいと思いつきました。

この記事を執筆している2024年1月現在、DATA Saber の認定プログラムの中でこれらが課されていて、プログラムに参加していない人でも、問題文にアクセスができる状態となっています。

DATA Saber プログラムでの課題。
画像出所:https://datasaber.world/

これらの問題の中の「設問」の箇所をクリックすると、
Tableau でこのような分析をしてください、という問題を表示します。
Tableau だけでなく、表計算ソフトでもデータに基づいた意思決定の文化を広めることに役立てるため、ありがたく問題を活用させていただきたいと思います。DATA Saber のみなさまには多大な感謝です。

Ord 1のQ1 の問題を解いてみる

DATA Saber のウェブサイト内の課題、
「1.HandsOn - Fundamental」の「設問」をクリックすると、
Tableau Public で公開されている問題ページを表示します。

DATA Saber プログラムでの課題。
画像出所:https://public.tableau.com/app/profile/data.saber/viz/1_HandsOn-Fundamental/1_HandsOn-Fundamental

この問題の中から、いくつかをTableau で解いた後で、Google スプレッドシートでも解いてみる、ということをしてみます。

Tableau で解いてみる

DATA Saber プログラムでの課題。
画像出所:https://public.tableau.com/app/profile/data.saber/viz/1_HandsOn-Fundamental/1_HandsOn-Fundamental

DATA Saber の課題ページから、Q1、Q2などのタブをクリックすると、
異なるシートが表示され、そのシート内に問題文が表示されています。

Ord 1のQ1 を解いてます。以下の手順です。

  1. 「行」に見出しとなる項目(ディメンション という)である「カテゴリー」と「サブカテゴリー」をドラッグ&ドロップ

  2. 列に集計値を求めたい項目(メジャー という)である「売上」をドラッグ&ドロップ
    ※ここまでで完了してもよい

  3. 同一カテゴリ内での順位がわかるように、列の「売上」をCtrl キーを押しながら行にドラッグ&ドロップ

  4. 作成された行の「売上」のデータ型をディメンションに変更

  5. 行の「売上」を「簡易表計算」>「ランク」

  6. 行の「売上」の「表計算を編集」>同一のカテゴリ内のサブカテゴリでの順位を示すように変更

  7. ランクの昇順に並べ替え
    完成

「行」に見出しとなる項目(メジャー という)である
「カテゴリー」と「サブカテゴリー」をドラッグ&ドロップ
列に集計値を求めたい項目(メジャー という)である
「売上」をドラッグ&ドロップ
同一カテゴリ内での順位がわかるように、
列の「売上」をCtrl キーを押しながら行にドラッグ&ドロップ
作成された行の「売上」のデータ型をディメンションに変更
行の「売上」を「簡易表計算」>「ランク」 行の「売上」の
「表計算を編集」>同一のカテゴリ内のサブカテゴリでの順位を示すように変更
ランクの昇順に並べ替え

まで、7手をもちまして、Tableau での実装となります。
※ランクの表示に加え、実際の売上の合計、売上合計の数値を表示、などの工夫もしてみました。

Google スプレッドシートで解いてみる

さて、Tableau であっという間に作成できたこの表現、Google スプレッドシートでもできるでしょうか。やってみる!

  1. データの範囲を広めに指定して
    「挿入」>「ピボットテーブル」>新しいシート
    ※Tableau ではシート単位でグラフや表を作成するので、Google スプレッドシートでも表の単位でピボットテーブルを作成することにします。

  2. ピボットテーブルエディタの「行」に「カテゴリー」「サブカテゴリ―」をドラッグ&ドロップ

  3. ピボットテーブルエディタの「値」に「売上」をドラッグ&ドロップして、集計方法を「SUM」

データの範囲を広めに指定して
「挿入」>「ピボットテーブル」>新しいシート
ピボットテーブルエディタの
「行」に「カテゴリー」「サブカテゴリ―」をドラッグ&ドロップ
ピボットテーブルエディタの
「値」に「売上」をドラッグ&ドロップして、集計方法を「SUM」

ここまでは簡単にできますが、これ以降が大変です。
同一カテゴリ内でのサブカテゴリのランク、というのが集計項目にないのです。

Google スプレッドシートのピボットテーブルエディタで指定できる集計

カテゴリ内でのランクを表示するには、
ピボットテーブルエディタの外にRANK 関数を使用したり、IF 関数を使用しらできないことはないのですが、データソースが更新されたり、行や列を変更すると、不具合を起こしそうです。とっても大変です。

IF 関数でカテゴリ内順位となる連番を表示

サブカテゴリを「売上 のSUM」の「降順」で並べ替えて、
カテゴリ列の値が空白でない(つまり、新しいカテゴリが出現する行)なら1、そうでない(カテゴリが同じ行)なら、1つ上のセルの値に1を足す
という処理を思いつき、正確に定義できれば、ランクを表示できます。

Tableau で表現できた、表内に横棒グラフを挿入、というのもGoogle スプレッドシートのピボットテーブルでは実現ができないかと考えます。
セル内にグラフを表示する、SPARKLINE 関数を使用することでできなくはないのですが。

SPARKLINE 関数で売上グラフを描画

まで、標準機能3手、関数による実装手順たくさん、Google スプレッドシートでの実装となります。

できないことはないけど、データの変更に弱い

Tableau のこの課題に対しては、Google スプレッドシートでも実装できないことはないのですが、とても手間がかかりますし、ピボットテーブルエディタを編集すると(例えば、カテゴリを外しちゃうとか)、定義した関数が正常に動作しなくなります。

行からカテゴリを外すと、エラーになる

とてもシンプルで、データを見る人がフィルタを変更したり、行や列、値の集計方法を変えたり、並べ替えをしない、など、作られた表やグラフをただ眺めるだけという使い方をするなら、Google スプレッドシートでも実装できます。

それが果たして、データ駆動型(データドリブン)のビジネスなのか。
グラフを作るための時間、グラフを作るための発想にたくさんのリソースを取られないか。
Tableau だったら標準機能だけで瞬時に高度な可視化ができたり、条件を自由自在に変更してもエラーがでない!

DATA Saber の最初の1つ目の課題にGoogle スプレッドシートで取り組んでみただけなのですが、Google スプレッドシートの不便を体感しました。

表計算ソフトで十分!って思っているかた、Tableau などのBI ツールもとても便利なので、ぜひ機能について学習してみてくださいね。

引き続き、このシリーズではDATA Saber の課題にGoogle スプレッドシートでも取り組んでみて、Google スプレッドシートでもなんとかなるのか?という挑戦をしていきます。

この記事が気に入ったらサポートをしてみませんか?