LogiCOMPOSERでFUSIONを試す！（検証編）

# BI系作業で便利なテーブル跨ぎをノーコードで・・
かなり以前に検証したLogiCOMPOSERに関する最新版での動作検証機会を得ましたので、取り急ぎzエンジンを使ったFUSION機能について簡単な試用を行なってみたいと思います。

まず、Web経由で所定のアドレスにログインします。
![スクリーンショット 2023-02-01 10.36.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/d9c169f9-5344-0b54-f8d5-8ad17c592c90.png)

今回のバージョンは、検証環境構築時点で最新版のV22.4.2を使います。
![スクリーンショット 2023-02-01 10.37.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/e35976fe-6301-f919-913b-b3fbfc5b6d6b.png)

# FUSIONについて
FUSIONは、COMPOSERの内部で稼働しているオリジナルのzエンジン内部のインメモリ空間を活用した、一般的にデータベース界隈で使われているJOIN機能になります。
もちろん、SQLをバリバリに書ける方がDB上で処理をして、その結果をBI等で活用しても良いのですが・・・・昨今のノーコードブームに乗っかる形で、今回はCOMPOSERのGUIインターフェースで何処まで行けるか？！を試してみる事にします。

## まずはFUSIONの設定から・・
この操作は、COMPOSER上でデータソースの設定が行える権限が必要なので、その前提で以下の作業を行なっていきます。
![スクリーンショット 2023-02-01 11.45.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/1c4be0d0-9845-38af-83b6-53e918567213.png)
上部のタブ上で**Sources**を選択して右上にある**Add Source**を選択します。
![スクリーンショット 2023-02-01 11.46.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/678b7ebf-fd80-f86d-56f4-db0b8ee85101.png)
データソースの登録画面に入りますので、このGUI上で必要な設定を行なっていきます。取り急ぎの作業は今回の検証で使うFUSIONソースに名前を付ける事から開始します。
![スクリーンショット 2023-02-01 11.47.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/91ba56a0-a443-86c4-a68e-1392ee441151.png)
次に、少し下側にある**Add**ボタンを選択肢データ・エンティティーを設定します（今回は、既存のコネクションをそのまま使います）
## さて、此処からが本番です
**From Connection**を選択すると
![スクリーンショット 2023-02-01 11.48.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/510c791e-fef9-3fe0-8705-49d3136c26ff.png)
詳細情報を設定する画面に入りますので、**Entities**の右側になる**Add**ボタンを選択して順次必要事項を選択・入力していきます。
最後に前回のツールで生成したテーブルを選んで右上の**Apply**を選択します。
問題が無ければ、サンプルの小さなクエリが送られてデータベース側からの反応が確認できます。
![スクリーンショット 2023-02-01 11.48.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/dae32b3b-9707-849f-4dcc-dd36c0ff2464.png)
右上の**Save Source**を選択して基本部分を登録します。

## 怒涛の必要テーブル登録・・・
後はこの基本テーブルに必要な周辺テーブルを登録していく作業になります。
![スクリーンショット 2023-02-01 11.50.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/4a4c28d7-0715-dc4c-0921-cf1ab723d96d.png)
今回の検証では、メイン1個に対してルックアップ的なテーブルを3個連携させてインナー・ジョイン形式での動作を確認しました。

# では、いよいよFUSION関係の定義を・・・
FUSIONソースを構成する必要なエンティティーが揃ったら、いよいよノーコードFUSIONの設定に移ることにします。
![スクリーンショット 2023-02-01 11.51.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/41322ad0-7e33-9442-4b7a-2c5d2ff26b41.png)
**Source Creation**のメニュー部分に**Join Definition**という項目がありますので、**Add**ボタンを選択します。
相互関係を設定するGUIが表示されるので、必要な選択・設定を順番に行えばOKです。
![スクリーンショット 2023-02-01 11.51.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/ccde4bcf-f7d9-7cc5-f02b-422be00e061d.png)
メインのテーブルを選択して
![スクリーンショット 2023-02-01 11.52.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/ad2b62f2-16db-2ca9-c6ce-4e5b5beb7ca7.png)
相方のテーブルを選択します。
![スクリーンショット 2023-02-01 11.52.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/468fe3b6-0a2f-273b-74ed-e7e4de39c3c4.png)
それぞれの共通キーを選択して**Apply**を選択すれば終了です。
![スクリーンショット 2023-02-01 11.53.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/4aa29240-66d5-5a82-26f8-4e50c0f189c1.png)
今回は３種類のルックアップ系テーブルを連携させますので、同じ作業を３回行います。
![スクリーンショット 2023-02-01 11.54.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/a7d37926-a253-5379-f431-d214ab5fe608.png)
設定が終了したら、右上の**Save Source**を選択して終了となります。
因みに、そのボタンの左側にある**Preview Source**を選択すると・・・・
![スクリーンショット 2023-02-01 11.54.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/3d4ada84-7366-55ab-5e6c-1aa0feb93e4c.png)
設定で構成された内容に基づく処理が行われ、サンプルのプレビューが行われます。
無事にそれぞれの参照コードが文字列データになっている事が確認できると同時に、利用可能なデータソースとしてメインのメニューに登録されている事も併せて確認する事ができました。
![スクリーンショット 2023-02-01 11.55.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/76f982dd-6165-cfae-fef2-36a3c65128cd.png)

# 少しカッコよくする小技・・・
此処まで来れば、あとは通常のデータソースと同様の各種利用可能な可視化オブジェクトと連携させ、ノーコードでのダッシュボードを作成する事が出来るようになります。

但し、このままでは「**あまりにも正直に全ての情報を表示**」してしまいますので、その辺を少しカッコよく体裁を整えてみたいと思います。

## まずはタイムゾーンの修正から・・
LogiCOMPOSERの場合、標準デフォルトのタイムゾーンはUTCになっていますので、今回利用する時間情報を全てAsia/Tokyoに変更しておきたいと思います。
作業的にはソース設定を行なった画面に入理、それぞれの登録ソースを選択しながら順次処理を進めていきます。
![スクリーンショット 2023-02-01 11.56.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/08a3255c-e302-220d-5e76-c65499ca24ad.png)
データソースを選択して・・・
![スクリーンショット 2023-02-01 11.57.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/50c73a1f-3404-de53-4777-2b915aa232ae.png)
右側のGUIでタイムゾーンを変更します。
![スクリーンショット 2023-02-01 11.57.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/f49e7889-18d7-22ce-9191-bb8bea078d35.png)
修正後に右下の**Save**ボタンを忘れずに選択して、順次作業を行います。

## 余計な情報を出さないようにする・・・
今回の検証では、メインのテーブルに存在するタイムスタンプを基準にしますので、その他のテーブルにあるタイムスタンプ情報を表示しないようにします。
作業的にはGUIの左側にあるトグルスイッチをOFFにするだけでOKです。
![スクリーンショット 2023-02-01 11.59.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/1a6984a9-3801-5027-c8b3-dec9428fdd2e.png)
同様に共通のキー情報関連を中心に表示項目の整理を行います。
![スクリーンショット 2023-02-01 12.00.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/3d0cafff-9f76-72e9-52c6-fb2305a19973.png)

# オリジナルのテーブルに無いデータで可視化したい・・・・
BI系の作業をしている場合、特に今回のような複数のテーブルをJOINして新たな洞察や知見を得る・・・等の作業を進める場合に、オリジナルの **テーブル間のデータを組み合わせて新たな派生カラムを作成したい・・** という場面に直面する事が多いかと思います。

その場合は、先ほどの画面の右上にある**Add Derived Field**を選択して、専用のGUIエディタ上で簡単な作業を行えばサクッ！と実現できます。
![スクリーンショット 2023-02-01 12.02.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/fee66036-5e24-2627-461e-ac8a726717b0.png)
専用のGUIが出てきますので・・・・
![スクリーンショット 2023-02-01 12.02.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/0b75be51-ca88-3964-7ea5-0978d7da6fd6.png)
左上で派生カラム名を設定します。
![スクリーンショット 2023-02-01 12.02.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/d39dee0c-4d7c-2130-c9cf-1d9fea2dd059.png)
右側のカラムリストから必要な情報を選択して、簡単な式などをエディタで作成します。
エディタの右下側に**Run**ボタンが有りますので、処理出来る状態になったら実際に起動を行なって確認してみます。
![スクリーンショット 2023-02-01 12.04.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/8b6e72af-a02c-00c4-0454-9c68659d6c54.png)
下側のプレビュー画面に想定通りの結果が出てきましたので、GUIの一番下側右にある**Save**を選択して実際の登録作業を行います。
無事にFUSION後のテーブルに対して、新規の派生カラムが登録された事が確認できました。
![スクリーンショット 2023-02-01 12.04.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/6e4ded50-a70a-aff0-ff45-f095226b21ba.png)

# では、最後にサクッ！と可視化してみます。
可視化に関しては、以前の検証と同じ作業を繰り返せばOKです。
![スクリーンショット 2023-02-01 12.13.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/db8a7953-9e0d-83ed-834b-11c24e70a780.png)
オリジナルの基準テーブル内に記録された参照コード形式のデータが、インナー・ジョイン形式で連携させた外部テーブルの情報に置き換わっている事が確認できました。
また単価と個数を掛け合わせた結果（総額）も無事に可視化対象になっていますので、それらを組み合わせた最適なBIダッシュボードも、ノーコードで作成する事が可能になっています。

# 今回のまとめ
今回は、最新版のLogiCOMPOSERを扱う機会を得て、昨今巷を騒がせている「ノーコード・ローコード」的な観点から、データベース側で保守本流・王道のSQL版テーブルJOIN作業を行わずに（多分、逆にその方が柔軟＆野心的にデータ駆動型BIに取り組めるかと思いますし・・）COMPOSERのzエンジン内部を使った「戦略的其の場凌ぎ」のFUSION機能を活かした可視化を行なってみました。
時間の関係上シンプルな構成を一種類だけの動作検証になりましたが、共通キーベースのFUSIONを活用する事により、上流側のデータベースに余計ない心配と負担を掛ける事なく、アレコレのテーブル組み合わせによるデータ駆動側洞察や知見の創出が可能そう・・だという事が判りました。
勿論、zエンジンの守備範囲は稼働環境上で有限ですので、巨大なテーブル同士をJOIN!という事は難しいかと思いますが、逆に用件定義とかをすっ飛ばして「とりあえずこの組み合わせで、どんな感じが見えるのか？」を実現し、テーブル跨ぎの派生カラム活用で、新たな可能性を見出せるネタになるのでは？・・・十分期待できる結果を得ることが出来たと思います。

# 謝辞
本検証は、insightsoftware社の全面バックアップにより実施しています。この貴重な機会を提供して頂いた同社に対して感謝の意を表すると共に、本内容とinsightsoftwareの公式ホームページで公開されている内容等が異なる場合は、insightsoftwareの情報が優先する事をご了解ください。

[**LogiCOMPOSERでFUSIONを試す！（準備編）**](https://qiita.com/wadaken1961/items/e1cde5785b79834cb753)はこちら