先月、Redisの記事を色々と書いていたので、さあ今度はAzure Redisと接続して色々と試してみよう! と思って色々調べていたら
なんと、まだAzure Redis CahceにPower BIって繋がらなかったんですね!?
以下のPoewr BI Ideasにスレッド? はありましたが。
これは、繋ぐしかあるまい! と思い、本日はAzure Redis CahceをPower BIで分析できるようにCData Redis Driverを利用してみたという記事になります。
ちなみに、この記事はMicrosoft Power BI Advent Calendar 2017 の17日目です!
そもそもAzure Redis Cacheって何?
そもそもRedisって何?という方は、以下の記事をご覧ください。
KeyValueストア型NoSQLデータベースの1種です。一番大きな特徴はインメモリ型であることにより、高速なI/Oを実現している点かなと思います。
Azure Redis Cahceは上記RedisをAzureのPaaSスタイルで提供したもので、VMやインストール等を気にせずとも手軽にRedisの機能を扱えます。
様々な用途に利用できますが、主な用途はASP.NETなどのWebアプリに対してキャッシュデータベースとしての組み込みではないでしょうか。
なお、ちょっと注意したいのが、その名前の通りCache向けの利用用途が中心であること。Redisは上述の通りインメモリ型なので、サービス再起動時にデータが消失してしまいます。
もちろん、データの永続化方法として、ディスクへのレプリケートや同時書き込みをサポートしていますが、そのデータ永続化の機能をAzure Redis CacheではPremiumプランからしか使えないので要注意。
今回の記事では、BIのためのお話ですが、永続化の設定をしていないと、BIするために溜め込んだデータが消失してしまうかもしれません。
今回はRedisへ接続することが目的な記事なので、特に永続化について触れませんが、実際にBIするに当たってはPremiumにして永続化するか、別なDBへレプリケートするなどを考える必要があるかと思います。
以下、Azure Redis Cacheの概要の抜粋です。
Azure Redis Cache は以下のレベルでご利用いただけます。
Basic—シングル ノード、複数サイズ (開発とテストや、クリティカルではないワークロードに適しています)。Basic レベルには SLA がありません。
Standard—Microsoft が管理しているプライマリとセカンダリ構成の 2 ノードにレプリケートされたキャッシュ。高可用性の SLA が付きます。
Premium—高可用性の SLA と Standard レベルのすべての機能に加え、Basic レベルと Standard レベルの Cache よりも優れたパフォーマンス、より大きなワークロードへの対応、ディザスター リカバリー、強化されたセキュリティなどが含まれます。
さらに、Premium 層には次の機能が含まれます。
Redis 永続化により、Redis キャッシュに保管されたデータを永続化することができます。また、スナップショットを作成してデータをバックアップし、障害が発生した場合にそれを読み込むことができます。
Redis クラスターは、データを複数の Redis ノードに自動でシャード化するため、より大きなメモリ サイズ (53 GB を超える) のワークロードを作成でき、より良いパフォーマンスを実現できます。
Microsoft Azure Virtual Network のデプロイにより、Azure Redis Cache のセキュリティと分離が強化されるとともに、サブネット、アクセス制御ポリシー、アクセスをさらに制御する他の機能も提供されます。
Basic キャッシュと Standard キャッシュでは、最大 53 GB のサイズを使用できます。Premium キャッシュでは、最大 530 GB のサイズを使用できます。
どんな分析をする?
RedisってシンプルなKeyValueストアなんですが、型の種類が面白くて以下のような5種類の型を提供しています。
その中でもソート済みハッシュ型は、KeyValueの値と共に、スコア情報を保持することができ、これによって、ランキングなどの情報を簡単に扱うことができるという型です。

そこで、今回はプロ野球パ・リーグの順位情報を元に、Poewr BIでビジュアライズしてみました。

最終的に以下のような感じで、表現することを目指します。

Azure Redis Cacheの構成
まずはAzure Redis Cacheを構成してみましょう。
Azure管理ポータルにログインし、新しくAzure Redis Cacheを追加します。
一つ注意したいのは、PaaS形式のRedisがAzure Redis CahceでComputeになっているもの、もしくはBitnamiはIaaSとしてVMが構成された上でRedisがインストールされるタイプのものなので要注意。

構成する時、特に難しい設定は無く、DNS名やリソース、価格等を設定するだけでOKです。

構成後はホスト名とキーを確認すればOKです。

キーはプライマリもしくはセカンダリを利用してください。

これだけで、Azure Redis Cacheは使える状態が整います。
お手軽ですねー
CData Redis ODBC Driverの設定
続いて、Power BIに接続するためのハブとして、CData Redis ODBC Driverをセットアップします。
以下から試用版がダウンロードできるので、どうぞ。
インストール後、ODBC データソースアドミニストレータを立ち上げて、接続先情報をセットアップします。

DSN構成では、[Password]にAzureで取得したプライマリキーを入力し、[Server]にはホスト名(****.redis.cache.windows.net)を入力します。
なお、Azure Redis CacheはSSL接続が推奨みたいなので、Use SSLを[True]に設定し、ポート番号を標準の[6379]から[6380]に変更するのを忘れないでください。(SSL無しで接続したい場合は、Azure側のSSL設定を変更しましょう。)

これだけで、OKです。
接続のテストをクリックして、「接続に成功しました」と表示されてばOKです。
Power BIで接続
最後にPower BIでビジュアライズを行いますが、予め以下のような情報をAzure Redis Cacheに登録しています。
型はすべてソート済みハッシュ、Keyは年度、Valueには球団名、ValueScoreには勝率を持ってきてみました。

それでは、早速Azure Redis Cacheのデータをロードします。
Power BI Desktopを起動し[GetData]をクリック

データソースはODBCを選択します。

先程ODBC アドミニストレータで登録したRedisのDSNを選択し

認証はWindowsのデフォルトで大丈夫です。

Azure Redis Cache標準のテーブルはKeysテーブル一種類のみが、metadataとして提供されます。
なので、そのままKeysテーブルを選択して、ロードしましょう。

それ以外にもテーブルの指定方法は私の過去の記事をどうぞ。
以下のようにデータがロードされればOKです。

あとは、Power BIの標準機能でグラフを構成していきます。
テーブルがシンプルなので、構成しやすいですね。

(そして、やっぱりソフトバンクがなかなか強いですね・・・。楽天やロッテにはもっと頑張ってもらいたいところです。)
おわりに
Azure Redis Cacheは本当に手軽に構成できて便利だなーと再度実感しました。
ただ、Redisのインメモリという特性を考慮してBIするのであれば
「これまでどうなっているの?」よりも「今どうなってるの?」みたいな分析が向いているかもしれませんね。
今回は時系列的なデータを使用しましたが、既存のキャッシュデータを分析するだけでも、またなかなか面白いかもしれません。
もともとが扱いやすいデータ構成なので、結構ビジュアル化は安易といえば安易ですが、データ構成次第ではValueの中で再度色々とJoinやGroupingをしないといけないと思うので、
その辺はKeyValueストアの特性とRedisの5種類の型に気をつけなら、ビジュアライズする必要がありますね。