451 Unavailable For Legal Reasons

とあるゲームエンジニアのブログです

LINQ to BigQueryを使ってSankey Diagram(サンキーダイアグラム)を作成しよう

LINQ to BigQueryとは?

BigQueryをLINQで扱えるようにするためのライブラリです。

github.com

どうやってBigQueryにデータを入れるの?

Sankey Diagramに必要な形式のデータを作成してBigQueryへ保存するためのOwinMiddleware

gist.github.com *1

StartActionに宣言したRequest.Pathへアクセスされるとログ採取スタート。 LoggingSpanに宣言した期間離脱するとキャッシュが無くなって採取おわり。 期間内にアクセスするとIndexを増やしながらFromPathとToPathをBigQueryへログ出力していく。

BigQueryに入れたデータをどうやって可視化するの?

LINQ to BigQueryのLINQ登場

gist.github.com *2

スキャン対象となるデータ量を抑えるために、BigQueryのテーブル名にはyyyyMMを付与しています。

Viewから呼び出し

gist.github.com *3

サンプルコードではutil.getJSONがAPI呼び出しをしていますが、その奥にあるのはjQueryのajaxメソッドです。

jQueryのajaxメソッドを呼び出すようにサンプルコードを修正しました。

完成!

f:id:master-0717:20160224215832p:plain

色々とAPIのパスが見えているので画像はぼやけさせていますが、Sankey Diagram(サンキーダイアグラム)感は、感じて頂けるのではないでしょうか。

改善

今回のサンプルコードでは、OwinContextにログインユーザーのIDしか入っていないパターンだったので、期間とステップ数でしか対象者を絞れませんでした。他にもユーザーの属性(例えばゲームならレベルとか)をBigQueryへ保存し閲覧する時に絞り込めれば、目的に合わせて分析できてなお良いのではないでしょうか。