PowerBIでAzure Redis Cache へ接続してソート済みハッシュ型のランキングを構成してみる
先月、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種類の型に気をつけなら、ビジュアライズする必要がありますね。