はじめに
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でのユーザとグループをまとめた表の結果
先に結果を示しますと、下記のように1つの表で見ることができます。
Metabaseでのユーザとグループをまとめる手順
それでは手順について説明していきます。
①Metabaseを起動して、データベースにBitnami RedmineのデータベースMySQLを接続する。
こちらにつきましては、ネットを検索すると手順を発見できましたので割愛します。
②MetabaseのTOP画面の下部にあるRedmineのデータベースを選択、クリックする。
私の環境の場合は、mysql2という名前にしています。
③データベースの色々なテーブルが表示されるので、その中からGroups Usersを選択
⑤エディターが表示されるので「Join data」をクリック
⑥テーブルを選ぶのところで指定のデータベース(mysql2)を選んで、
⑦テーブルを接続するキーとなる「Pick a column」をそれぞれ選択する。
左側(Groups Users)からは、「User ID」を、
右側(users)からは、「ID」を選択。
⑧「列」の隣にある▶(プレビュー)をクリックすると結合された表が表示されます。
⑩このとき「列」をクリックすると表示する列を選択できますので、余計な列はチェックを外しておきます。この例では「ID」、「Firstname」、「Lastname」だけを残しています。
これで「Group ID」、「User ID」と「名前」が1つの表で見れるようになりました。
このままでも何となくグループはわかりますが、せっかくなのでグループ名も結合します。
⑪もう一度「Join data」を選択して、さらにJoin dataを追加します。
⑫今度は下図のようにテーブルにはもう一度「Users」を選んで、
左側(Groups Users)からは、「Group ID」を、
右側(users)からは、「ID」を選択。
⑬これで同じように▶(プレビュー)を押して、プレビューを表示すると、
結合された表が表示され、「Users→Lastname」のところに、グループ名が表示されています。
(データベース上、Redmineのグループ名はLastnameとして管理されているようです。)
⑭先ほど追加した「Join data」の「列」をクリックして、余計な列のチェックを外しておきます。今回はグループ名を示す「Lastname」以外は不要なので、「Lastname」だけにします。
⑮ページ下部にある「ビジュアライズ」を押すと、エディタから抜けて、作成した表が表示されます。
⑯この画面では、ドラッグアンドドロップで、列の順番を入れ替えることができますので、わかりやすい順番に並び替えます。
⑰ 少し失敗してUser IDが二つになっているので、再度「エディタ」を選択して、「ID」を一つ消します。
補足 SQLを見る
① 「エディタ」画面の右上のアイコンからSQLを見ることができます。
② さらに AS ' ' の部分を編集することで、列の見出しを変更することができます。
※ただし、SQLで編集して保存してしまうと、以降はSQLでしか編集できなくなるようなので、注意してください。
まとめ
以上の通り、Metabaseの「Join data」機能を使うことで、SQLを使わなくてもテーブルを結合して、期待の表を作ることができました。
また、Metabaseは下記のように右下のダウンロードから、生成した結果をcsv,xlsx,jsonのいずれかの形式ダウンロードすることができます。