【Tableau Tips】Tableauでテキスト表(テーブル)を作成する【続編】

【Tableau Tips】Tableauでテキスト表(テーブル)を作成する際の小技集

以前の記事で、Tableauでのテキスト表の作成、および初心者が陥りやすいポイントを紹介させて頂きましたが、今回はテキスト表作成の小技集としてご紹介させて頂きます。

 

今回紹介する内容としては、以下の3点となります。

1. 1つのフィールドに様々な形式のデータ(数、金額、%)があるデータを使ったテーブル表で、それぞれ書式を変更したい。

2. いくつかのディメンション(行)と、列に月毎の表示があるようなテーブル表にて、昨年の年間合計を表示させたい。

3. 前年同月との差などを表示する際、テーブル表は今年の値と前年の差を掲載して、前年自体を非表示にしたい。

1.1つのフィールドに様々な形式のデータ(数、金額、%等)があるデータを使ったテーブル表で、それぞれ書式を変更したい。

スーパーストアのデータで、以下のようなものを扱うとします。

上記のデータを使ってテーブル表を作ると以下のようになり、表示形式を変更したいと考えます。

しかしながら、マークに入っている”合計(値)” で書式設定を開いても、値のフィールドに対しての書式変更になるため、名称毎に設定ができません。

これに対処するための案をご紹介致します。

 

マークにある”合計(値)”は、シェルフでの編集で、計算式として値を変更することが可能です。

まず、割引率(%表示対象)のみに計算式を変更します。

以下のように、計算式を変更すると、下図のようになります。

AVG(if CONTAINS([名称],'率')then[値]end)

次に、数量についてフィールドを追加していきます。

先ほど作成したフィールドを、Ctrl押しながら詳細にドラッグ&ドロップして、複製します。

次に、数量についてフィールドの式を変更します。

SUM(if CONTAINS([名称],'数量')then[値]end)

数量のフィールドができたら、テーブル表に追加します。

追加した状態は以下のようになります。

同様に、売上・利益についてもフィールドを追加します(追加方法は、上記の数量と同じ)。

式は、SUM(if not CONTAINS([名称],'率') and not CONTAINS([名称],'数量') then[値]end) に変更します。

図(上側)のように、それぞれの名称に値が入りましたが、メジャーネームによって分けて表示されています。

メジャーネームを外すと、図(下側)のように同じ行にまとめることができます。

それぞれ、書式を以下のように変更すると、テーブル表はこのように表現することが可能です。

また、この表に、合計の総計表示を設定することで、列毎の合計などを表示させることも可能です。

元々のフィールドが、売上・数量・利益・割引率 と別々になっていれば、それぞれ書式変更が可能ですが、元となるデータソースが1つのフィールドに集約されているような場合、

このようにすると、個別の書式変更が可能となります。

もし、テーブル表の作成で困った際は、ご参考にして頂けたらと思います。

 

 

※留意点

この方法は、表からデータをダウンロードする際、クロス集計表としての出力ができない点、ご注意ください。

(3つのメジャーに分けて重ねて1つのテーブル表としている関係で、クロス集計の対象は3つのうちの1つになります)

既存のデータ構造(縦持ち)をそのまま使う際の、体裁を重視したときの表現方法となります。

以前、データの縦持ちと横持ちについてご紹介しておりますが、縦持ちのほうが扱いやすいケースが多いものの、

テーブル表で表現する際は、横持ちのほうがよいケースもあるので、状況に応じて使い分けができるよう、

それぞれ特徴を把握しておくと良いかと思います。

参考:Tableauにおけるデータの縦持ちと横持ちについて

2.いくつかのディメンション(行)と、列に月毎の表示があるようなテーブル表にて、昨年の年間合計を表示させたい。

次の例としては、以下のように、今年の月毎に値を表示したテーブル表を使います。

これに、今年と昨年の年間実績を併記したい場合の案をご紹介致します。(2020年を昨年、2021年を今年としたデータ)

同様に、昨年の売上も計算フィールドで作成します。

 

作成した2つのフィールドを、以下のように、表に昨年と今年の年間売上を追加したいと考えます。

 

しかし、先ほどのTableauのテーブル表に、昨年の売上をそのまま追加すると以下のようになります。

このようなとき、Tableauの独自関数であるLODを使うと、月を無視して表現することが可能になります。

今回は、Exclude関数を使ってみたいと思います。

 

<Exclude関数について>Tableauヘルプから抜粋)

計算のためにビューから一部の詳細を除外します。たとえば、特定の薬を服用している患者の平均血圧を表示するために、患者ごとのビューであっても、個々の患者の詳細を考慮せずに計算します。

 

今回は、以下のようなフィールドを用意します。

予め、IF文で昨年(2020年)の売上という条件で処理したものを、「SUMで合計する際、オーダー日は無視する」というものです。

これにより、2020年の売上のみで合計が計算されることになります。

このフィールドを先ほどの表に追加します。

同様に、今年の年間売上も入れてみます。

LOD関数自体は、少し難易度が高いですが、扱えるようになると、いままでできなかったことが色々とできるようになりますので、ぜひ勉強してみてください。

 

<TableauヘルプのLOD関数の説明>

https://help.tableau.com/current/pro/desktop/ja-jp/calculations_calculatedfields_lod.htm

3.前年との差(月毎)など表示する際、テーブル表で前年を非表示にしたい。

前年との売上の差などを表現する際、今年と去年のデータを並べて、表計算などで前年との売上を表現したあと、

計算で必要だが、表示は不要な前年を非表示にするケースがあります。

(前年をフィルタで除外してしまうと、前年との差の計算はできませんので、ご注意ください)

 

手作業の設定で、表示が不要な年を選択して非表示にすることもできますが、今回はLast関数を使って、自動で最新の年以外を非表示にする方法をご紹介致します。

 

まず、以下のようなテーブルを作成します。

これに売上金額を入れると以下のようになります。(値の書式は見やすいように変更済)

これらを使って、前年との売上の差を表現したいと思います。

前年との差は以下の計算フィールドで作成します。

作成したフィールドを合計(売上)にドラッグ&ドロップして、差替えます。

そうすると、初期設定では以下のように表示されます。

ここで、表計算の設定を変更します。(横向きから、年に設定変更)

前年との差(売上) のフィールドの設定➡表計算の編集 で以下のような設定画面を出します。

設定画面にて、特定のディメンションを選択し、年・月をチェックして、実行レベルを年とすると、月毎に前年との差を計算することが可能です。

これを適用すると以下のようになります。

ここで、1つ計算フィールドを作成します。ここでは、最新年 と名前をつけます。

Last関数は、指定した向きで0から番号が付与されます。(Tableauヘルプの表計算関数

今回は、表計算の設定(先ほどと同様の手順)で、年だけ指定します。

すると、以下の場合、最新の年は2021年で0、前年の2020年は1という形で表現されます。

ここで、最新年のフィルタで0のみとすると、最新の年のみが常に表示されるようになります。

※注意事項

直接、年を選択して非表示にすることで、同様に表計算は有効のまま、今年だけ表示させることもできますが、年が変わる度に手動で設定変更が必要になります。

 

以上、テーブル表を作成する上での小技を紹介させて頂きました。

従来からのExcelなどをTableauに置き換える作業などをしていると、テーブル表での表現を求められるケースは多々あるかと思いますが、Tableauは表形式の表現はあまり得意ではないため、色々と小技が必要になってくることがありますので、ご参考にして頂けたら幸いです。

 

※Tableau 2021.4時点の情報となります

BI製品のサポートはぜひKCMEで!

AlteryxとBI製品を組み合わせた環境構築やサポートなど承ります。お気軽にご相談ください。

おすすめの記事