Redis のデータを Yellowfin で可視化 with CData

## はじめに
[以前の記事](https://qiita.com/ExtremeCarvFJ/items/6f8c07bfb3507b5dd0d9)で、Cassandra のデータを Yellowfinで可視化しました。
今回は、同じ Key-Value Store (KVS) である Redis のデータを Yellowfin で可視化してみます。

## 環境準備
#### Redis の準備
Redis をダウンロードしてインストールする手順は、下記サイトをご参照ください。
https://redis.io/docs/latest/operate/oss_and_stack/install/

今回は Docker コンテナを活用しようと思います。

まずは Docker イメージを入手します。
```powershell:pull
docker pull redis:latest
```

イメージからコンテナを立ち上げます。

```powershell:run
docker run --name redis -d -p 6379:6379 redis redis-server --requirepass "password"
```
`--requirepass` オプションでパスワードを指定しています。同オプションを指定しないと、認証無しでアクセスすることになります。

コンテナを立ち上げたら、コンテナにログインします。
```powershell:exec
Docker exec -it redis /bin/bash
```

## データ準備
コンテナにログインした後、`redis-cli`コマンドを実行します。
同コマンドを実行すると、27.0.0.1:6379> のようなプロンプトに切り替わります。

パスワードを使って認証を受けます。
```powershell:authentication
127.0.0.1:6379> auth password
OK
```

データを投入します。バリュータイプにはいくつかのタイプがあり、用途によって適したタイプの選択が必要です。
各バリュータイプの説明は、下記サイトを参考にさせていただきました。

https://marunouchi-tech.i-studio.co.jp/3366/

今回はデータ集計がしやすいように、StoreSet 型を選択します。
[zadd コマンド](https://redis.io/docs/latest/commands/zadd/)に続いて、key, score, member の順にスペース区切りでデータを登録します。

```powershell:authentication
127.0.0.1:6379> zadd fruit 100 banana
127.0.0.1:6379> zadd fruit 150 apple
127.0.0.1:6379> zadd fruit 980 durian
127.0.0.1:6379> zadd vegetable 200 onion
127.0.0.1:6379> zadd vegetable 300 pumpkin
127.0.0.1:6379> zadd vegetable 500 asparagus
```

## JDBC コネクタ
#### JDBC コネクタの入手
今回は CData の Redis JDBC コネクタ評価版を利用します。まずは下記 URL にアクセスし、対応データソースから Redis を選択します。

https://www.cdata.com/drivers/

その後、[ダウンロード] > [ダウンロード評価版] > [ダウンロード Windows Setup (.exe)] の順に進み、RedisJDBCDriver.exe をダウンロードします。

RedisJDBCDriver.exe を実行すると、デフォルトで以下にファイルが解凍されます。
`C:\Program Files\CData\CData JDBC Driver for Redis 2024`
lib フォルダに以下のようなファイルが存在します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128512/455b324e-fa36-3b18-89f5-f9aab5c230ec.png)

#### コネクタのインストール
ライセンスファイル cdata.jdbc.redis.lic を zip ファイルに圧縮した後、cdata.jdbc.Redis.lic.zip をcdata.jdbc.Redis.lic.jar に名称変更します。プラグイン管理画面で .jar か .yfp ファイルしか登録できないことへの対応です。
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128512/e1d2c691-9c14-3dde-b1b7-6e6ebde3823b.png)

Yellowfin 画面から [管理] > [プラグイン管理] > [追加] と進み、cdata.jdbc.redis.jar をドロップして追加した後、「さらに追加」を選択して、cdata.jdbc.redis.lic.jar を追加します。結果、以下のように、実行ファイルとライセンスファイルの両者を合わせて登録します。
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128512/a1f48ca1-196b-5f24-d7ed-8343a8fb2189.png)

## データソース
Yellowfin からは一般 JDBC データソースを利用します。一般 JDBC データソースを利用するための接続文字列は、CData の機能を使って生成すると便利です。
cdata.jdbc.redis.jar をダブルクリックすると、下記の画面が表示されます。こちらで接続テストをした後、接続文字列をコピーして利用すると良いかと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128512/42dd638c-be68-945d-89fb-b5896869c4cb.png)

Yellowfin 画面から [管理] > [プラグイン管理] > [追加] と進み、[新規データ接続] で [データソースを選択] から [データベース] を選択します。
新規接続の設定画面から、以下を参照に新規接続を作成します。
|項目|設定値|
|---|---|
|名前|Redis|
|データベースタイプ|一般 JDBC データソース|
|JDBC ドライバー|cdata.jdbc.redis.RedisDriver(Redis)|
|接続文字|jdbc:redis:Server=localhost;Password=password;|

[テスト接続] ボタンを押下し、テスト接続が成功すればひとまず大丈夫です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128512/d8dfcb42-fdae-072d-e49d-26c80ddbf204.png)

## ビュー作成
[こちら](https://wiki.yellowfin.co.jp/pages/viewpage.action?pageId=2294284)を参考に、ビューを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128512/63772864-9dc8-6b09-d5cf-e35faaf74a8f.png)

## レポートの作成
[こちら](https://wiki.yellowfin.co.jp/pages/viewpage.action?pageId=2294086)を参考に、レポートを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128512/089b7ee0-ad55-ae43-9eee-7a1cd084ae08.png)

## 最後に
Redis を生まれて初めて取り扱ってみましたが、非常にデータの構造が簡素で、スケーラビリティを確保することに優れるため、大量データを取り扱うには良さそうなイメージです。
一方で、蓄積されるデータを直接 BI で可視化するためには、一旦データを分析に適した形で集約すべきかと思われます。
何事もやってみないと分かりませんね。

では皆様、良いデータ分析を!