TableauからHiRDBに接続する(第4回)

# はじめに
これまでの3回の記事でTableauコネクターの概要とコネクター作成の流れをご紹介させていただきました。

https://qiita.com/Hitachi_Kazuaki/items/f3851d8b6bf899a04231

https://qiita.com/Hitachi_Kazuaki/items/7525e9f6bd87a0d4d711

https://qiita.com/Hitachi_Kazuaki/items/306bcbed284c2dcf30e8

本記事では実際にコネクターを使⽤し、TableauによりHiRDBに格納されているデータの可視化をしてみます。

# 環境と対象データ
### 環境
使⽤するバージョンは以下の通りです。
全て同⼀のWindowsマシン上に構築しています。
‧Tableau Desktop 2024.1.0
‧HiRDB Server Version 10 10-09

### 対象データ
ある商店の2024年の売り上げを想定したデータを作成しました。
使⽤するテーブルは以下の3つです。事前にHiRDBに格納しておきます。

#### 売り上げ明細 (約18,000行)
<table>
                <tr>
                  <th>明細番号&emsp;&emsp;&emsp;</th>
                  <th>日付&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;</th>
                  <th>商品コード&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;</th>
                  <th>個数&emsp;&emsp;&emsp;&emsp;</th>
                </tr>
                <tr>
                  <td>1</td>
                  <td>2024/01/01</td>
                  <td>item002</td>
                  <td>3</td>
                </tr>
                <tr>
                    <td>1</td>
                    <td>2024/01/01</td>
                    <td>item003</td>
                    <td>1</td>
                </tr>
                <tr>
                    <td>2</td>
                    <td>2024/01/01</td>
                    <td>item004</td>
                    <td>1</td>
                </tr>
                <tr>
                    <td>2</td>
                    <td>2024/01/01</td>
                    <td>item005</td>
                    <td>1</td>
                </tr>
                <tr>
                    <td>:</td>
                    <td>:</td>
                    <td>:</td>
                    <td>:</td>
                </tr>
</table>

#### 商品 (10行)
<table>
                <tr>
                  <th width="20%">商品コード&emsp;&emsp;&emsp;</th>
                  <th width="20%">商品名&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;</th>
                  <th width="20%">単価&emsp;&emsp;&emsp;&emsp;&emsp;</th>
                </tr>
                <tr>
                    <td>item001</td>
                  <td>大福</td>
                  <td>120</td>
                </tr>
                <tr>
                    <td>item002</td>
                    <td>グミ</td>
                    <td>180</td>
                </tr>
                <tr>
                    <td>item003</td>
                    <td>シュークリーム</td>
                    <td>200</td>
                </tr>
                <tr>
                    <td>item004</td>
                    <td>アイス</td>
                    <td>200</td>
                </tr>
                <tr>
                    <td>item005</td>
                    <td>おにぎり</td>
                    <td>150</td>
                </tr>
                <tr>
                    <td>:</td>
                    <td>:</td>
                    <td>:</td>
                </tr>
</table>

#### 天候 (366行)
<table>
                <tr>
                  <th width="20%">日付&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;</th>
                  <th width="20%">気温&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;</th>
                  <th width="20%">天気&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;</th>
                </tr>
                <tr>
                  <td>2024/01/01</td>
                  <td>3.6</td>
                  <td>雨</td>
                </tr>
                <tr>
                    <td>2024/01/02</td>
                    <td>5.4</td>
                    <td>雨</td>
                </tr>
                <tr>
                    <td>2024/01/03</td>
                    <td>12.4</td>
                    <td>晴れ</td>
                  </tr>
                  <tr>
                    <td>2024/01/04</td>
                    <td>8.8</td>
                    <td>曇り</td>
                  </tr>
                  <tr>
                    <td>2024/01/05</td>
                    <td>10.2</td>
                    <td>晴れ</td>
                  </tr>
                <tr>
                    <td>:</td>
                    <td>:</td>
                    <td>:</td>
                </tr>
</table>

列名からもわかる通り、以下の列同⼠での結合を想定したデータとしています。

‧売り上げ明細テーブルの商品コードと商品テーブルの商品コード
‧売り上げ明細テーブルの⽇付と天候テーブルの⽇付

# 実際に操作してみる
### 接続
次の⼿順でTableauからHiRDBに接続します。詳細は第3回の記事をご確認ください。

https://qiita.com/Hitachi_Kazuaki/items/306bcbed284c2dcf30e8

①コネクター及びJDBCドライバをそれぞれ以下に格納
&emsp;コネクター：
&emsp;C:¥Users¥[Windows ユーザー]¥Documents¥My Tableau Repository¥Connectors

&emsp;JDBCドライバ：
&emsp;C:¥Program Files¥Tableau¥Drivers

②Tableau起動後の画⾯で以下のようにして接続先としてHiRDBを選択
 「サーバへ」＞「その他」＞「HITACHIによるHiRDB JDBC」

③接続先サーバのIPアドレス、ポート番号、ユーザー名などを⼊⼒しサインイン

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3896270/603e197d-4a05-425f-906b-3d2c42cecf37.png" width=70%>

### テーブルの選択と結合
接続が完了すると以下のような画⾯が表⽰されます。
⾚枠の部分にテーブルの⼀覧が表⽰されるため、使⽤したいテーブルをドラッグ＆ドロップで選択します。

![1-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3896270/0f133d4b-7acf-4884-a8ca-95b4653eb1d1.png)

テーブルを選択すると、テーブル名や列名が表⽰されます。
ここでは売り上げ明細テーブルを選択しています。

![2-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3896270/0390d3a3-07e0-4539-8d65-405b760d0018.png)

前述の通り、今回のデータはテーブル同⼠の結合を想定したデータです。

選択したテーブルを「右クリック」＞「開く...」を実⾏後、結合したいテーブルをド
ラッグ＆ドロップすることで結合させることができます。

テーブルを「右クリック」＞「開く...」

![3-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3896270/005ceae6-7191-45c4-be3d-4b46b24a4099.png)

結合したいテーブルのドラッグ＆ドロップ

![4-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3896270/d597dd75-00a5-45b8-8a0b-48fe404ed251.png)

Tableauにより⾃動的に結合列が選択され、テーブルが結合されます。

テーブル同⼠の結合がベン図で表現され、画⾯下部に両⽅のテーブルの列名が表⽰されました。

![5-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3896270/6dae62df-d761-46df-8b2c-f5689c1a89ed.png)

ベン図の部分をクリックすることで結合条件を確認し、必要に応じて結合条件を変更することができます。

今回は商品コードの列同⼠での内部結合が選択されていることが確認できます。

![6-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3896270/f04ebca8-a372-41b7-b395-629a0b2ca7ac.png)

追加でテーブルをドラッグ&ドロップすることで、結合に⽤いるテーブルを増やすこともできます。

![7-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3896270/35a9cc27-69ff-4117-a135-fe8958490b1a.png)

売り上げ明細テーブルと天候テーブルでの⽇付列での結合を加えました。

### データの確認
ここまでの⼿順で選択したデータを確認していきます。

画⾯下部の「シート1」を選択します。

![8-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3896270/de9d8628-1410-4466-820c-ec204213f320.png)
シート1を開いたら、「データの表⽰」アイコンを選択。

![9-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3896270/e007187c-41c3-4046-b2e2-f6163c6bda45.png)

データの中⾝が表⽰され、選択した条件でテーブル同⼠が結合されていることが確認できました。
![10-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3896270/fe5c0487-e74c-499e-abfe-af23879f7dc6.png)

### データの可視化1：商品売り上げ数量ランキング
ここからは、選択したデータを可視化することでデータの傾向などを⾒てみます。
※各機能などの詳細はTableau公式ページをご参照ください

まずは各商品の年間売り上げ数量を確認してみます。

画⾯左の列の⼀覧から「個数」列をシート上の「⾏」にドラッグ＆ドロップすることで、全商品の累計売り上げを確認します。

![11-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3896270/71a01a2f-d7e4-426b-8938-d6bd7e796e8a.png)

「⾏」の表⽰が「合計(個数)」となっているように、「個数」列について合計された値が棒グラフとして表⽰されています。

年間で約23,000個の商品が売れたことが確認できます。

続いて、「商品名」列をシート上の「列」にドラッグ＆ドロップすることで、商品名ごとの売り上げ個数を確認することができます。

![12-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3896270/d0fa2f20-9df1-409b-8ef2-25c31ebb8dc2.png)

このように「⾏」に選択し表⽰したデータを「列」に選択した列名でカテゴリ分けして表⽰することができます。

今回のデータではアイスが最もたくさん売れていることがわかります。

画⾯上部の「昇順に並べ替え」「降順に並べ替え」から、データを昇順‧降順に並べることができます。データを降順に並べることで、売り上げ数量でのランキングを確認できます。

![13-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3896270/a51270c2-2023-45f9-ab5e-3c64a7f59d16.png)

「個数」列を「マーク」の「ラベル」にドラッグ&ドロップすることで、各商品ごとの売り上げ個数を表⽰することができます。

![14-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3896270/fba4efbd-2c6e-4403-b6a3-40476619f8dd.png)

ここまでで、売り上げ数量でのランキングを作成することができました。

### データの可視化2：天気別の商品売り上げ額ランキング
実務上では売り上げ個数よりも売り上げ額でのランキングがより重要になると考えられます。
また、天気ごとでの売り上げの傾向がわかれば、天気予報をもとに仕⼊れや陳列を変えるなど効率的な経営にも役⽴ちそうです。

まずは画⾯上部の「シートのクリア」で先程表⽰した売り上げ個数の棒グラフを削除します。

![15-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3896270/18fd5d5c-c36e-4435-9137-0eefc2fcb5bf.png)

シートを初期状態に戻すことができました。

![16-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3896270/3cb102f7-7f7e-453d-9520-29d522e18620.png)

今回のデータでは売り上げ額⾃体のデータはありませんが、売り上げ明細テーブルの「個数」と商品テーブルの「単価」での掛け算により、売り上げ額を計算することができます。

Tableauで計算を⾏いたい場合、計算フィールドを使⽤します。

列名の⼀覧が表⽰されている付近で右クリック、その後「計算フィールドの作成...」を選択します。

![17-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3896270/9c66121c-bb52-4d76-aa05-5e3de8281a81.png)

計算結果の名称を「売り上げ額」とし、中央の計算式を⼊⼒する部分に「個数＊単価」を⼊⼒し「OK」を選択します。

![18-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3896270/a973d9a7-ae57-439b-84b6-77b9fe211bd1.png)

すると、列⼀覧に「売り上げ額」が追加されます。

「売り上げ額」を「⾏」にドラッグ＆ドロップすることで、「合計(売り上げ額)」が表⽰され、年間の売り上げ額の合計を棒グラフとして確認できます。

![19-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3896270/e8b001e0-a2b7-45da-bb96-da8795016b06.png)

今回は天気別でのランキングを確認したいため、まず「天気」を「列」にドラッグ＆ドロップし、天気別の売り上げを作成します。

![20-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3896270/039d86b8-b805-4ce1-b4a4-9a9b77696257.png)

加えて、「商品名」を「列」にドラッグ＆ドロップすることで、天気別、商品名別の売り上げ額を確認することができます。

![21-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3896270/279ef7a9-9197-41ab-be50-9b49beec8264.png)

先程のようにデータを降順に並び替え、ラベルをつけることで、天気別の商品売り上げ額ランキングの棒グラフを作成することができました。

![22-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3896270/45c6d004-f599-4e20-8b97-1caca903ca56.png)

詳細は割愛しますが棒グラフの⾊やラベルの形式を変えることもでき、最終的に以下のようなグラフを作成することができました。

![23-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3896270/99b9c10b-5ece-47d0-b637-071d7cd3407e.png)

作成したグラフから、例えば以下のことがわかります。

‧⾬の⽇は傘が売り上げの⼤部分を占めている
‧弁当は天気に関係なく、売り上げの上位に⼊る主⼒商品である
‧アイスも主⼒商品であり、特に晴れの⽇は売り上げ2位になりよく売れている

こうした情報を得られることにより、天気ごとに仕⼊れ量を変えるなど効率的な店舗運営に向けたさまざまな活⽤が期待できます。

# 最後に
4回に分けてTableauコネクターの作成‧検証、実際のデータの可視化についてご説明させていただきました。

今回ご説明させていただいた通り、Tableauによりデータの可視化を⾏うことで、データの中からその傾向や特徴を知ることができ、ビジネスをはじめとしたさまざまな場⾯での活⽤が期待できます。

HiRDB Version 10 10-09では、Tableauとの接続に正式に対応しました。記事のようにHiRDBのデータをTableauで分析することが可能になりましたので、ぜひご利⽤ください。

https://www.hitachi.co.jp/Prod/comp/soft1/hirdb/files/topics/index.html#hirdb_1009

# 商標など
Tableauは、salesforce.com,Inc.の商標です。

Windowsは、マイクロソフトグループの企業の商標です。

その他記載の会社名、製品名は、それぞれの会社の商標もしくは登録商標です。

製品の改良により予告なく記載されている仕様が変更になることがあります。

# 参考

https://www.hitachi.co.jp/Prod/comp/soft1/hirdb/files/topics/index.html#hirdb_1009