Metabase(v0.33.0)のjoin data機能を使用して、Redmineのユーザーとグループの情報を一つの表にまとめる方法


はじめに
---
Metabase(v0.33.0)のjoin data機能を使用して、Redmineのユーザーとグループの情報を一つの表にすることができましたので、その方法についてご紹介します。
（他にも便利な方法やRedmineのプラグインなどありそうな気もしますが、Metabaseでやってみました。）

実施の背景
---

Redmineではユーザをグループに割り当てて管理することができますが、人が増えてくると誰がどのグループ所属しているか、すぐにわからなくなってしまい、何か簡単に一つ表で見れるようにする方法はないか、と模索していました。

今回、たまたまMetabaseをv0.31.2からv0.33.0 (2019/8/19の最新版）に更新したところ、「join data」という機能が増えており、SQLがわからなくても、二つのテーブル「ユーザ(Users)」と「グループ(Group Users)」を結合し、Redmineのユーザとグループを1つの表で見ることができましたので、その内容について紹介します。

実行環境
---
Redmineは　BitnamiからインストールしたRedmine 4.0.4.stable を使用
Metabaseは v0.33.0 を使用
OSはWindows10です。（ただし、OSは関係なし。）

# **Metabaseでのユーザとグループをまとめた表の結果**
先に結果を示しますと、下記のように１つの表で見ることができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265181/ee608a42-2195-86ce-2c2a-4beb84934e82.png)

# **Metabaseでのユーザとグループをまとめる手順**

それでは手順について説明していきます。

**①Metabaseを起動して、データベースにBitnami RedmineのデータベースMySQLを接続する。**
こちらにつきましては、ネットを検索すると手順を発見できましたので割愛します。

**②MetabaseのTOP画面の下部にあるRedmineのデータベースを選択、クリックする。
　私の環境の場合は、mysql2という名前にしています。**
　
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265181/749e3306-5c7d-2bf7-99ef-d91da9b386d9.png)


**③データベースの色々なテーブルが表示されるので、その中からGroups Usersを選択**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265181/878e180e-a5b5-f0e7-bd6c-7c323778c890.png)


**④右上のほうにある「エディターを表示する」をクリック**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265181/27ef81e0-5bd3-7136-e006-deae0041e43e.png)

**⑤エディターが表示されるので「Join data」をクリック**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265181/94c474e1-b28b-66ff-a4fa-48d09e26a1d6.png)

**⑥テーブルを選ぶのところで指定のデータベース(mysql2)を選んで、**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265181/680f0018-a0a1-0bbe-53eb-1a42dc876f99.png)

**次に、Usersを選ぶ。**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265181/aba0be9c-16de-1807-6a1e-047f2e8309a9.png)

**⑦テーブルを接続するキーとなる「Pick a column」をそれぞれ選択する。
　左側(Groups Users)からは、「User ID」を、
　右側(users)からは、「ID」を選択。**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265181/838b36c2-62c6-2ea0-85f8-a687c025661d.png)

**⑧「列」の隣にある▶（プレビュー）をクリックすると結合された表が表示されます。**
　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265181/9e428657-5de7-d4b0-e379-5e96c0401595.png)

**⑩このとき「列」をクリックすると表示する列を選択できますので、余計な列はチェックを外しておきます。この例では「ID」、「Firstname」、「Lastname」だけを残しています。**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265181/b6f708bf-83bd-2e8e-3963-6ee6f0deae48.png)
これで「Group ID」、「User ID」と「名前」が１つの表で見れるようになりました。
このままでも何となくグループはわかりますが、せっかくなのでグループ名も結合します。

**⑪もう一度「Join data」を選択して、さらにJoin dataを追加します。**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265181/1716024d-712a-4d98-8172-2e751f0c2eb8.png)

**⑫今度は下図のようにテーブルにはもう一度「Users」を選んで、
　左側(Groups Users)からは、「Group ID」を、
　右側(users)からは、「ID」を選択。**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265181/148c9054-763a-e088-b830-f6cb794eede1.png)

**⑬これで同じように▶（プレビュー）を押して、プレビューを表示すると、
　結合された表が表示され、「Users→Lastname」のところに、グループ名が表示されています。**
（データベース上、Redmineのグループ名はLastnameとして管理されているようです。）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265181/60ff0840-8b8c-ef16-d8f6-902fa1065291.png)

**⑭先ほど追加した「Join data」の「列」をクリックして、余計な列のチェックを外しておきます。今回はグループ名を示す「Lastname」以外は不要なので、「Lastname」だけにします。**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265181/b9b8e4db-afb4-dc62-5b5b-0b6f5c6d7bd8.png)

**⑮ページ下部にある「ビジュアライズ」を押すと、エディタから抜けて、作成した表が表示されます。**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265181/1fead9a5-4b7c-32ff-e719-5ee72fc56d70.png)

**⑯この画面では、ドラッグアンドドロップで、列の順番を入れ替えることができますので、わかりやすい順番に並び替えます。**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265181/8a0a4b24-77e9-6013-4124-e21050fd07ce.png)

**⑰　少し失敗してUser IDが二つになっているので、再度「エディタ」を選択して、「ID」を一つ消します。**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265181/bb5e1961-a5da-5d12-af6d-5b9954956915.png)

**⑱　これで最後に「保存」をクリックして完成です。**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265181/ee608a42-2195-86ce-2c2a-4beb84934e82.png)

補足　SQLを見る
---
**①　「エディタ」画面の右上のアイコンからSQLを見ることができます。**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265181/98747f1f-c100-3a3e-82ef-8d3811095539.png)

**②　さらに AS ' ' の部分を編集することで、列の見出しを変更することができます。**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265181/0111682b-ee48-bccb-27ff-a4191b965f1f.png)

※ただし、SQLで編集して保存してしまうと、以降はSQLでしか編集できなくなるようなので、注意してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265181/8e201995-0531-c77a-b349-0846c57e2ecd.png)

まとめ
---
以上の通り、Metabaseの「Join data」機能を使うことで、SQLを使わなくてもテーブルを結合して、期待の表を作ることができました。
また、Metabaseは下記のように右下のダウンロードから、生成した結果をcsv,xlsx,jsonのいずれかの形式ダウンロードすることができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265181/2ef4f593-4f49-a3cd-6978-37c3e720c19e.png)