LINQ to BigQueryとは?
BigQueryをLINQで扱えるようにするためのライブラリです。
どうやってBigQueryにデータを入れるの?
Sankey Diagramに必要な形式のデータを作成してBigQueryへ保存するためのOwinMiddleware
StartActionに宣言したRequest.Pathへアクセスされるとログ採取スタート。 LoggingSpanに宣言した期間離脱するとキャッシュが無くなって採取おわり。 期間内にアクセスするとIndexを増やしながらFromPathとToPathをBigQueryへログ出力していく。
BigQueryに入れたデータをどうやって可視化するの?
LINQ to BigQueryのLINQ登場
スキャン対象となるデータ量を抑えるために、BigQueryのテーブル名にはyyyyMMを付与しています。
Viewから呼び出し
サンプルコードではutil.getJSONがAPI呼び出しをしていますが、その奥にあるのはjQueryのajaxメソッドです。
jQueryのajaxメソッドを呼び出すようにサンプルコードを修正しました。
完成!
色々とAPIのパスが見えているので画像はぼやけさせていますが、Sankey Diagram(サンキーダイアグラム)感は、感じて頂けるのではないでしょうか。
改善
今回のサンプルコードでは、OwinContextにログインユーザーのIDしか入っていないパターンだったので、期間とステップ数でしか対象者を絞れませんでした。他にもユーザーの属性(例えばゲームならレベルとか)をBigQueryへ保存し閲覧する時に絞り込めれば、目的に合わせて分析できてなお良いのではないでしょうか。
*1: 公開用に改変しているのでこのままでは動作しません、他のサンプルコードも同様。 GitHub - neuecc/CloudStructures: Redis Client based on StackExchange.Redis. をカスタマイズして GitHub - cloud9-plus/CloudStructures: Redis Client based on StackExchange.Redis. 使ってます。
*2:GitHub - filipw/AspNetWebApi-OutputCache: ASP.NET Web API CacheOutput - library to allow you to cache the output of ApiControllers を使ってます。