Morning Girl

Web API, Windows, C#, .NET, Dynamics 365/CRM etc..

PowerBIでAzure Redis Cache へ接続してソート済みハッシュ型のランキングを構成してみる

先月、Redisの記事を色々と書いていたので、さあ今度はAzure Redisと接続して色々と試してみよう! と思って色々調べていたら

なんと、まだAzure Redis CahceにPower BIって繋がらなかったんですね!?

以下のPoewr BI Ideasにスレッド? はありましたが。

Redis – Microsoft Power BI

これは、繋ぐしかあるまい! と思い、本日はAzure Redis CahceをPower BIで分析できるようにCData Redis Driverを利用してみたという記事になります。

ちなみに、この記事はMicrosoft Power BI Advent Calendar 2017 の17日目です!

qiita.com

そもそもAzure Redis Cacheって何?

そもそもRedisって何?という方は、以下の記事をご覧ください。

KeyValueストア型NoSQLデータベースの1種です。一番大きな特徴はインメモリ型であることにより、高速なI/Oを実現している点かなと思います。

kageura.hatenadiary.jp

kageura.hatenadiary.jp

Azure Redis Cahceは上記RedisをAzureのPaaSスタイルで提供したもので、VMやインストール等を気にせずとも手軽にRedisの機能を扱えます。

様々な用途に利用できますが、主な用途はASP.NETなどのWebアプリに対してキャッシュデータベースとしての組み込みではないでしょうか。

docs.microsoft.com

なお、ちょっと注意したいのが、その名前の通り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 のサイズを使用できます。

azure.microsoft.com

どんな分析をする?

RedisってシンプルなKeyValueストアなんですが、型の種類が面白くて以下のような5種類の型を提供しています。

その中でもソート済みハッシュ型は、KeyValueの値と共に、スコア情報を保持することができ、これによって、ランキングなどの情報を簡単に扱うことができるという型です。

f:id:sugimomoto:20171217164811p:plain

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

パシフィック・リーグ - Wikipedia

f:id:sugimomoto:20171217164821p:plain

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

f:id:sugimomoto:20171217164832p:plain

Azure Redis Cacheの構成

まずはAzure Redis Cacheを構成してみましょう。

Azure管理ポータルにログインし、新しくAzure Redis Cacheを追加します。

一つ注意したいのは、PaaS形式のRedisがAzure Redis CahceでComputeになっているもの、もしくはBitnamiはIaaSとしてVMが構成された上でRedisがインストールされるタイプのものなので要注意。

f:id:sugimomoto:20171217164842p:plain

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

f:id:sugimomoto:20171217164851p:plain

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

f:id:sugimomoto:20171217164901p:plain

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

f:id:sugimomoto:20171217164907p:plain

これだけで、Azure Redis Cacheは使える状態が整います。

お手軽ですねー

CData Redis ODBC Driverの設定

続いて、Power BIに接続するためのハブとして、CData Redis ODBC Driverをセットアップします。

以下から試用版がダウンロードできるので、どうぞ。

Redis Drivers - ダウンロード

インストール後、ODBC データソースアドミニストレータを立ち上げて、接続先情報をセットアップします。

f:id:sugimomoto:20171217164921p:plain

DSN構成では、[Password]にAzureで取得したプライマリキーを入力し、[Server]にはホスト名(****.redis.cache.windows.net)を入力します。

なお、Azure Redis CacheはSSL接続が推奨みたいなので、Use SSLを[True]に設定し、ポート番号を標準の[6379]から[6380]に変更するのを忘れないでください。(SSL無しで接続したい場合は、Azure側のSSL設定を変更しましょう。)

f:id:sugimomoto:20171217164927p:plain

これだけで、OKです。

接続のテストをクリックして、「接続に成功しました」と表示されてばOKです。

Power BIで接続

最後にPower BIでビジュアライズを行いますが、予め以下のような情報をAzure Redis Cacheに登録しています。

型はすべてソート済みハッシュ、Keyは年度、Valueには球団名、ValueScoreには勝率を持ってきてみました。

f:id:sugimomoto:20171217164938p:plain

それでは、早速Azure Redis Cacheのデータをロードします。

Power BI Desktopを起動し[GetData]をクリック

f:id:sugimomoto:20171217164948p:plain

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

f:id:sugimomoto:20171217164955p:plain

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

f:id:sugimomoto:20171217164959p:plain

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

f:id:sugimomoto:20171217165005p:plain

Azure Redis Cache標準のテーブルはKeysテーブル一種類のみが、metadataとして提供されます。

なので、そのままKeysテーブルを選択して、ロードしましょう。

f:id:sugimomoto:20171217165012p:plain

それ以外にもテーブルの指定方法は私の過去の記事をどうぞ。

kageura.hatenadiary.jp

以下のようにデータがロードされればOKです。

f:id:sugimomoto:20171217165023p:plain

あとは、Power BIの標準機能でグラフを構成していきます。

テーブルがシンプルなので、構成しやすいですね。

f:id:sugimomoto:20171217165033p:plain

(そして、やっぱりソフトバンクがなかなか強いですね・・・。楽天やロッテにはもっと頑張ってもらいたいところです。)

おわりに

Azure Redis Cacheは本当に手軽に構成できて便利だなーと再度実感しました。

ただ、Redisのインメモリという特性を考慮してBIするのであれば

「これまでどうなっているの?」よりも「今どうなってるの?」みたいな分析が向いているかもしれませんね。

今回は時系列的なデータを使用しましたが、既存のキャッシュデータを分析するだけでも、またなかなか面白いかもしれません。

もともとが扱いやすいデータ構成なので、結構ビジュアル化は安易といえば安易ですが、データ構成次第ではValueの中で再度色々とJoinやGroupingをしないといけないと思うので、

その辺はKeyValueストアの特性とRedisの5種類の型に気をつけなら、ビジュアライズする必要がありますね。