Confluenceの表を結合させるApps Table Filter and Charts for Confluenceの紹介

この投稿は Atlassian Advent Calendar 2019 の1日目です。

今回は昨年Atlassian Advent Calendarで紹介したAppsが更なる進化を遂げたのでその紹介です。

[昨年の記事はこちら](https://qiita.com/kunny53/items/c15e98ffc0220c3901dd)

#Table Filter and Charts for Confluenceの紹介、おさらい

このAppsは当初は名前の通り表をFilterする機能のみでしたが年々進化しています。昨年の記事でも紹介してますが以下の機能があります。

1. Table Filter機能
2. Chart 機能
3. Pivot Table機能
4. Table Expert機能


それぞれを組み合わせて使うことも可能です。
今回新たにタイトルにもあるとおり表の結合機能が追加されました。Table Transformerマクロという名前になります。既にAppsの名前からは想像もつかない機能になっています。

5. Table Transformer機能(表結合機能)

それでは機能を見ていきましょう。

#Table Transformer機能の紹介
表の結合には3種類あります。
- 単純なマージ
- 特定の列をキーとしたマージ
- SQLを駆使してデータを抽出してマージ

1つずつ見ていきましょう

## 単純なマージ
Table Transformerマクロを埋め込みマクロ編集画面を開くと以下のようなメニューになり。Mergeを選択します。
![Image from iOS (10).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103246/3a943402-98be-0a90-17a6-4e2e158e7b17.jpeg)



Table Transformerマクロの枠の中に表を二つ作成します。
![Image from iOS (5).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103246/7cead07f-3eae-d5bc-a526-240567115ef1.jpeg)


ページ保存します。
ページ表示画面では表が結合されました。これが単純なマージです。

![Image from iOS (4).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103246/4bdc5d77-265e-9aea-6d62-eb8a517fd1a1.jpeg)

しかしどうでしょうか。例にある日本語の文章が繋がるように結合してみたいですね。

## 特定の列をキーにしてマージする
2つの表にキーとなる列を追加してそれを元にマージすることができます。SQLで表をjoinしてデータを抽出するイメージですね。

先ほどの表にNo列を追加しました。

![Image from iOS (6).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103246/4fa55606-4b20-ca43-8559-46c278d72e5c.jpeg)

マクロの編集でLookup Tablesを選択します。編集画面下部にあるキーとなる列を選ぶ箇所でNoを選択します。

![Image from iOS (7).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103246/c3a96c04-a261-e924-b012-fd09ddbe8af8.jpeg)

ページを保存します。
きれいにマージできました。
![Image from iOS (11).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103246/52f2afc4-7898-945a-5031-95cd43e3282e.jpeg)



次に表から自由自在にデータを抽出し一つの表を作成する方法をみていきます。

## SQLを駆使してデータを抽出してマージ
table transformerマクロ内にある表をデータベースに見立ててSQLで自由に結合、抽出し表を完成させるものです。当然ながらSQLの知識が必要ですが、構文の補完はしてくれます。ここでは上記のNoを足した表からNoの特定の値(行)を抽出するようなものを試してみます。

マクロの編集画面でcustomizedを選択します。
![Image from iOS (8).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103246/9cdf573f-dfc6-214c-e8ce-795dae563a3e.jpeg)


SQLを記述します。
![Image from iOS (9).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103246/33a26cc4-6bea-7e04-a9a2-8d82f9b867a6.jpeg)


保存します。

Noが2のデータだけ抽出できました。
![Image from iOS (12).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103246/dff90dbb-6323-38c3-c9b4-59796957bf58.jpeg)


# マクロの組み合わせ
前回の記事でもTable Filterとchart , pivotを組み合わせてみました。当然ながらこのtable transformerも組み合わせることができます。
ここではtransformerを使う上では一番利用シーンが多くなるであろうexceprt tableを使います。
複数の表を結合するわけですが、一つの表をそのまま、表示したいケースもあると思います。
そんな時はexcerpt tableで元の表を設定し(名前づけ)、transformer ではそのtable excerpt includeで名前づけした表を使います。
これで元の表はいろいろな形で抽出したり、pivotしたりグラフすることができることになります。
編集画面はこの通りとなります。
![Image from iOS (13).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103246/b41e2479-3101-2366-aee7-d31084279e5a.jpeg)

そのまま保存するとこうなります。
![Image from iOS (14).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103246/c902973f-974b-1d84-21d5-dd52a4302502.jpeg)

ここではexcerptに表を直接書きましたが、ここにJiraのfilterなどのマクロを埋め込めばConfluence上では全くでデータを入力する必要がなくなります。


# 感想
このAppsは本当に高機能になりました。このAppsがあるのとないのとではConfluenceの表の表現にだいぶ差が出ると思います。
しかしながら、あまり設定を複雑にしすぎるとそのConfluenceのページをメンテナンスするのに一定のConfluenceの習熟度が求められることになります。マクロやVBAを駆使して複雑になったExcelと同様ですね。
特にSQLを駆使する機能は今後のメンテナンス性を考慮して利用した方が良さそうです。

是非お試しください。