総計を使ってクロス集計表のヘッダを動的に変更する方法
こんばんは。
めちゃくちゃ久しぶりの投稿になります。
ちょっと私生活でバタバタしてたのですが、
ちょっと落ち着いてのでまたゆっくり投稿していきたいと思います。
はじめに
今回は総計を使って、クロス集計表のヘッダを自由に変更する方法を紹介したいと思います。
このtipsはWorkoutWednesday2023 Week41で学びました。
どういうことかというと
![](https://assets.st-note.com/img/1697543618912-q6JlKrHjNd.png)
このようなクロス集計表があったとします。
「売上」または「利益」を、パラメータで切り替えて、
パラメータに応じて、売上または利益を表示しています。
ただこの状態でヘッダに表示されるのは、「フィールドのラベル名」です。
ここを、パラメータで「売上」を選択した場合は「売上」と、
「利益」を選択した場合は「利益」と表示させたいとします。
これから、その方法をご紹介します。
「総計」を使う
まずは「総計」を入れましょう。
「アナリティクス」タブからドラッグアンドドロップで総計を入れ、
デフォルトでは下に来るので、右クリックのメニューから「上に表示」を選びましょう。
するとこうなります。
![](https://assets.st-note.com/img/1697543834455-c1hMBFaAYR.png)
ここからヘッダを作っていきます。
メジャーを用意して列を分ける
ヘッダを作るのですが、まずはメジャーを用意して列を分ける必要があります。
Tableauでおなじみ、MIN(1)を使いましょう。(AVG(1)でもなんでも同じです)
今回は「売上or利益」と「数量」の2つがあるので、2つメジャーを用意してあげます。
すると、こうなります。
![](https://assets.st-note.com/img/1697544024301-dL7hFjzIz9.png?width=800)
自動で棒グラフが作られたので、これが邪魔ですね。
方法はいくつかあるのですが、ここではテキストに変えてしまいます。
![](https://assets.st-note.com/img/1697544125910-Adm2ClIcJj.png?width=800)
棒グラフが消えましたね。
ここには自動で「メジャーバリュー」がテキストに入っていますが、
使わないので消して大丈夫です。
![](https://assets.st-note.com/img/1697544306463-vQhA7nRXdv.png?width=800)
パラメータを作成する
まずはパラメータで、売上または利益の表示を作っていきます。
文字列で、普通に売上、利益とします。
![](https://assets.st-note.com/img/1698233594064-TTsGSQht9M.png?width=800)
メジャーを作成する
続いて、表示する数値の計算式も一応確認しておきます。
Tableauでは定番ですが、パラメータの値に応じて売上、利益を切り替えます。
![](https://assets.st-note.com/img/1698233719183-dKBaGrl19V.png?width=800)
条件分岐はifでもIIFでもよいのですが、ここではCASE式を使いました。
ヘッダを作成する
いよいよヘッダを作っていきましょう。
このような式となります。
![](https://assets.st-note.com/img/1698233800389-pzZ9BTCpfj.png?width=800)
FIRST() = LAST()なら、パラメータを表示する。
これは、ifがなかった状態を考えるとわかりやすいのですが、
この状態で最初のmin(1)のテキストにこの式を入れると、
全行にヘッダが表示されてしまいます。
ところが、FIRST() = LAST()を入れることで、「総計」だけに表示させようとしています。
アナリティクスペインから、総計を表示させ、総計は上に位置させてください。
![](https://assets.st-note.com/img/1698233956217-gHDYrH2qIr.png?width=800)
出来上がりは、このような感じになります。
FIRST() = LAT()とは?
FIRST()=LAST()とは、「1行だけの時」という意味です。
総計以外のところでは、複数行あり、それぞれ数値が入りますが、
総計は「最初の行までの数(=FIRST())」と「最後の行までの数(=LAST())」がともに1です。つまり、「1行だけ」ということになります。
なので、FIRST() = LAST()という条件を入れることで、
「総計」だけに表示する、という意味になります。
ここで注意したいのが、「次を使用して計算」で「表(下)」を選択することです。
次の図のように、FIRST()とLAST()は、表を上から下に計算方向を考えるので、ここでは表(下)を選択することになります。
![](https://assets.st-note.com/img/1698234483916-W2CRxwsU9s.png?width=800)
総計に数値を入れない
このままだと、まだ問題があります。
それは、先ほど作った「売上or利益」のメジャーが、
総計にも入ってしまうという問題です。
総計にはヘッダーラベルだけを表示させたいので、
メジャーには「総計じゃないとき」という条件を入れなければいけません。
そのために、まずこのようなブール値を作ります。
![](https://assets.st-note.com/img/1698234507576-L3tFqvk7Bs.png?width=800)
FIRST() != LAST()、つまり「最初の行までの数」と「最後の行までの数」が同じではないとき、つまり1行じゃないとき、つまり「総計じゃないとき」という意味になります。
これを、先ほど作成した「売上or利益」の条件式を挟み込む形で入れます。
![](https://assets.st-note.com/img/1698234605299-dnaxOlBvKk.png?width=800)
「総計じゃない場合」がTRUEの時、つまりFIRST() != LAST()の時、という意味になります。
そして、「次を使用して計算」で「表(下)」を選び、MIN(1)の「テキスト」に配置します。
これを入れることで、総計以外の欄にのみ、数値が表示されることになります。
![](https://assets.st-note.com/img/1698234730579-QeIqhSz9Vv.png?width=800)
きちんと、総計以外のところに数値が表示されていますね。
ここではパラメータに応じてヘッダが動的に変更されるようになっています。
パラメータを「利益」に変えてみましょう。
![](https://assets.st-note.com/img/1698234804785-Gug5ciDl5C.png?width=800)
きちんと変更されていますね。
もう一つのMIN(1)に入れるメジャーについても同様です。
割引率や利益率などを入れて、同様に動的にヘッダを変更できます。
ラベル「総計」を変える
もう一つ気になる点があります。
それはヘッダに「総計」と入ってしまっていることです。
これ気持ち悪いですよね。
ここは簡単に変えることができます。
「総計」の部分を右クリックして、「書式設定」を選びます。
すると「書式設定」が左側に出てくるので、ラベル「総計」を消して自由な値に帰ることができます。
![](https://assets.st-note.com/img/1698235002544-tMsERfdnHO.png)
ここでは、「カテゴリ」「サブカテゴリ」の行のフィールドラベルを非表示にするため、それらを「総計」部分に表示させたいと思います。
ラベル「総計」を「カテゴリ サブカテゴリ」とします。
![](https://assets.st-note.com/img/1698235085422-Y54ZfSqgpW.png)
「カテゴリ」と「サブカテゴリ」の間の空白は適宜調整します。
これをビューに反映されると、このようになります。
![](https://assets.st-note.com/img/1698235130187-tFogAvRdc9.png)
これで、行のフィールドラベルが要らなくなったので、消してしまいましょう。
![](https://assets.st-note.com/img/1698235178313-jLWwgtfRtL.png?width=800)
これで、「総計」がヘッダになってくれました!
おわりに
いかがでしたでしょうか?
私はこれを見たとき、一体どうやるのか凄く謎で、かなり迷いました。
ですが、WorkoutWednesdayを終えてからそのやり方に納得し、
次のMakeoverMondayで自分自身のvizとして活かすことができました。
クロス集計表は、見る人にストレスを与えないために、
細かい工夫が大事になってきますので、
ぜひこのような工夫で素敵なクロス集計表を作って見てください。
読んでいただきありがとうございました!
Rieko
この記事が気に入ったらサポートをしてみませんか?